问答题 请编写函数fun,其功能是分别统计形参t所指二维数组中字母#和*的个数。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<stdlib.h>#define M 14void NONO();void fun(char(*t)[M],int*a,int*c){} void get(char(*s)[M]){inti,j;for(i=0;i<M;i++){for(j=0;j<M;j++){s[i][j]=65+rand()%12;printf(''%c'',s[i][j]);}printf(''\n'');}}main(){char a[M][M];int x,y; get(a);fun(a,&x,&y);printf(''#=%d*=%d\n'',x,y);NONO();} void NON0(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*fp,*wf; int i,j,x,y;char a[M][M];fp=fopen(''c:\test\in.dat'',''r'');wf=fopen(''c:\test\out.dat'',''w'');for(i=0:i<M;{++){for(j=0;j<M;j++){fscanf(fp,''n%c'',&a[i][j];}}fun(a,&x,&y);fprintf(wf,''#=%d\n'',x);fprintf(wf,''*=%d\n'',y);fclose(fp);fclose(wf);}
【正确答案】正确答案:int i=0,j=0;//循环统计的下标 *a=0;//初始化a字符统计的个数 *c=0;//初始化c字符统计的个数 for(i=0;i<M;i++)//行 { for(j=0;j<M;j++),//列 {if(t[i][j]='#')//字符是a,计数 (*a)++; if(t[i][j]='*')//字符是c,计数 (*c)++; } }
【答案解析】解析:对二维数组的行列分别循环,行优先,查找数组中元素为#或者*,分别对其进行计数。