问答题
下列给定程序中,fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AAaaBBbb123CCcccd,则应输出:upper=6,lower=8。请改正程序中的错误,使它得出正确的结果。注意:部分源程序在文件MODI1.C中,不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:1 #include<stdio.h>2 /*********found*********/3 void fun(char*s,int a,int b)4 {5 while(*S)6 { if(*S>='A'&&*s<='z')7 /*********found*********/8 * a=a+1;9 if(*s>='a'&&*s<='z')10 /*********found*********/11 *b=b+1;12 s++;13 }14 }15 main()16 { char S[100];int upper=0,17 lower=0;18 printf("\nPlease a string:");19 gets(S);20 fun(S,&upper,&lower);21 printf("\n upper=%d lower=%d\n",upper,lower);22 }
【正确答案】正确答案:(1)void fun(char*s,int*a,int*b) (2)*a=*a+1; (3)*b=*b+1;
【答案解析】解析:(1)由主函数中调用fun函数的语句fun(s,&upper,&lower)可知,函数的后两个变量为指针的形式,所以用*a和*b。 (2)*a的作用是用来记录大写字母的个数,此处的作用是对*a累加1,所以此处应改为*a=*a+1。 (3)*b的作用是用来记录小写字母的个数,此处的作用是对*b累加1,所以此处应改为*b=*b+1。