阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。程序中用数组card[M][N+3]中的每一行存

admin2012-12-10  32

问题 阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。
   [说明]
   某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。程序中用数组card[M][N+3]中的每一行存放一张储蓄卡的有关信息,其中:
   card[0]存放第i张卡的卡号;
   card[1]存放第i张卡的余额;
   card[2]存放第i张卡的当日业务实际发生笔数;
   card[3]~card[N+2]存放第i张卡的当日存取款金额,正值代表存款,负值代表取款。
   当持卡者输入正确的卡号、存款或取款金额后,程序进行相应的处理;若输入不正确的数据,程序会提示持卡者重新输入;若输入的卡号为负数时,银行终止该卡的当日业务。
   [C程序]
   #include<stdio.H>
   #define M 6
   #define N 5
   long card[M][N+3]={{9801,2000,0,},{9812,2000,2,},{9753,3000,1,},
   {8750,500,0,},{9604,2800,3,),(8901,5000,5,}};
   int locate(long card[][N+3],int m,long no)
   {  int i;
   for(i=0;i<m;i++)
   if((1)==no)  return i;
     (2);
   }
   main()
   {long cardNo,money;
   int k;
   while(1){
   printf("请输入卡号:\n");
   scanf("%1d",&cardNo);
   if(cardNo<0)  break;
   k=locate(card,M,cardNo);
   if(k==-1){
   printf("不存在%id号的储蓄卡\n",cardNo);
   continue;
   }
   printf("请输入金额(正值代表存款,负值代表取款):\n");
   scanf("%id",&money);
   if(card[k][1]+money<0){
   printf("存款余额不足,不能完成本次的取款业务\n");
   continue;
   }
   if(card[k][2]==N){
   printf("已完成本卡的当日业务\n");
   continue;
   }
   /*处理一笔业务的数据*/
   card[k]  (3)=money;
     (4);
     (5);
   }
   }

选项

答案(1) card[i][0] (2) return-1 (3) card[k][2]+3 (4) card[k][1]+=money (5) card[k][2]

解析 按照程序的说明,函数Locate是对用户输入的卡号进行比较,当找到对应的卡号,则返回持卡者对应的记录号,否则返回-1。card[0]中存放着第i张卡的卡号,所以(1)填“card[0]”,(2)填“return-1”。当找到持卡者的卡号为k时,由于card[k][2]存放实际的交易次数,因此这次发生的交易数应该存放的位置为card[k][card[k][2]+3],即(3)填“card[k][2]+3”。在交易发生后,存款额要发生改变,即(4)填“card[k][1]+=money”,同时其交易次数增1,(5)填“card[k][2]”。
转载请注明原文地址:https://jikaoti.com/ti/gbW7FFFM
0

最新回复(0)