给定程序MODll.C中fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。 例如,给字符串S输入:AAaaBBb123CCccccd,则应输出结果:upper=6,lower=8。 请改正程序中的错误,使它能计算出正确的结果。

admin2020-06-16  29

问题 给定程序MODll.C中fun函数的功能是:分别统计字符串中大写字母和小写字母的个数。
  例如,给字符串S输入:AAaaBBb123CCccccd,则应输出结果:upper=6,lower=8。
    请改正程序中的错误,使它能计算出正确的结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include
/**********found***********/
void fun(char * s,int a,int b)
{
  while(*s)
  {  if(*s>=‘A’&& *s<=‘Z’)
/**********found***********/
    *a=a+1;
    if(*s>=‘a’&&*s<=‘z’)
/**********found***********/
    *b=b+1;
    s++;
  }
}
main()
{  char s[100];int upper=0,lower
=0;
  printf(“\nPlease a string:”);
gets(s);
  fun(s,  &upper,&lower);
  printf(“\n upper=%d lower=
%d\n”,upper,lower);
}

选项

答案(1)void fun(char *s, int *a, int *b) (2)*a=*a+1; (3)*b=*b+1;

解析 该程序功能是统计字符串中的大小写字母的个数。从已给定源程序的main主函数开始入手,调用函数“fun(s,&upper,&lower);”,传参数upper、lower的地址,对字符串s中的字符进行判断,求得该字符串中大小写字母的个数。
   [解题思路]
    (1)第一个标识下面“void fun(char*s,int a,int b)”,因为主函数调用fun函数第二个、第三个参数传送的是参数地址,因此定义的fun函数中的第二个、第三个参数应是指针型,应将“void fun(char*s,int a,int b)”改为“void fun(char*s,int*a,int*b)”。
    (2)第二个和第三个标识下面,因为a、b都是指针型,将a、b中的内容加1,应为“*a=*a+1:”和“*b=*b+1:”。
转载请注明原文地址:https://jikaoti.com/ti/97G0FFFM
0

最新回复(0)