问答题 请编写函数fun,其功能是分别统计形参t所指二维数组中字母A和C的个数。 注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。1 #include<stdio.h>2 #include<stdlib.h>3 #define M 144 void NONO();5 void fun(char(*t)[N],int*a,int*c)6 {7 }8 void get(char(*s)[M])9 {int i,j;10 for(i=0;i<M;i++)11 {for(j=0;j<M;j++)12 {s[i][j]=65+rand()%12;13 printf(''%c'',s[i][j]);}14 printf(''\n'');15 }16 }17 main()18 {char a[M][M];19 int x,y;20 get(a);21 fun(a,&x,&y);22 printf(''A=%d C=%d\n'',x,y);23 NONO();24 }25 void NONO()26 {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */27 FILE *fp,*wf;28 int i,j,x,y;29 char a[M][M];30 fp=fopen(''in.dat'',''r'');31 wf=fopen(''out.dat'',''w'');32 for(i=0;i<M;i++)33 {for(j=0;j<M;j++)34 {fscanf( fp, ''%c '',&a[i][j]);}35 }36 Fun(a,&x,&y);37 fprintf(wf,''A=%d\n'',x);38 fprintf(wf,''C=%d\n'',y);39 fclose(fp);40 fclose(wf);41 }
【正确答案】正确答案:5 void fun( char (*t)[M],int *a ,int *c) 6 { int i,j; 7 *a=0; *c=0; 8 for( i=0;i<M;i++) 9 for(j=0;j<M;j++) 10 if(t[i][j]=='A')*a=*a+1 ; 11 else if(t[i][j]=='c')*c=*c+1 ; 12 }
【答案解析】解析:本题首先需要一个二维数组,二维数组的大小在程序开始就进行了定义“define=14”,这个大小比较合适,然后利用gets函数得到数组,然后数据就可以进入fun函数中进行处理应用。进入。fun函数,fun函数首先肯定需要for循环语句将二维数组中的数据进行排序使用,然后需要条件语句进行判断处理,这两步是一体,见程序第9~11行,for循环保证全部使用了二维数组中数据,并且是依次使用,if语句判断了字母是否为A或者C或者都不是,并且进行了统计相加得到了A的个数a,C的个数c,这样循环完成后,A和C的个数a、c就能继续返回主函数进行输出了,见程序26行,最终得到结果。