阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。 [说明] 某银行共发出M张储蓄

10 查阅

阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。

[说明]

某银行共发出M张储蓄卡,每张储蓄卡拥有唯一的卡号,每天每张储蓄卡至多支持储蓄卡持有者的N笔“存款”或“取款”业务。程序中用数组card[M][N+3]中的每一行存放一张储蓄卡的有关信息,其中:

card[i][0]存放第i张卡的卡号;

card[i][1]存放第i张卡的余额;

card[i][2]存放第i张卡的当日业务实际发生笔数;

card[i][3]~card[i][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](1) card[i][0] (2) return-1 (3) card[k][2]+3 (4) card[k][1]+=money (5) card[k][2] 解析:按照程序的说明,函数Locate是对用户输入的卡号进行比较,当找到对应的卡号,则返回持卡者对应的记录号,否则返回-1。card[i][0]中存放着第i张卡的卡号,

软考初级