使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。调用fun函数输出字符串,当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串。 请改正函数fun中指

admin2018-10-20  37

问题 使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。调用fun函数输出字符串,当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行。也不得更改程序的结构。
#include<stdio.h>
#include<string.h>
#include<ctype.h>
#pragma warning(disable:4996)
void fun(char*s)
{inti;
/*********found*********/
Statc intn=1;
if(n++%2)
/*********found*********/
for(i=0;i<=strlen(s);i++)
printf("%c",islower(s)toupper(s):s);
else
/*********found*********/
for(i=strlen(s)﹣1;i>0;i﹣﹣)
printf("%c",s);
}
main()
{int}i;
char s[]="Hello,C Programmer";
for(i=0;i<5;i++){fun
(s);printf("\n");}
}

选项

答案(1)将Static改为static (2)将for循环中的i<=strlen(s)改为i<strlen(s) (3)将for循环中的i>0改为i>=0

解析 (1)函数使用static修饰变量n,用来保存调用次数以便判断是奇数次还是偶数次,关键字应为static,第一个字母为小写,所以将Static改为static。
(2)用strlen()计算字符串长度,但因为字符串保存在一个数组中,而数组元素是从0位置开始的,例如一个字符数组s[]有5个字符,利用数组调用它们应为a[0]、a[1]、a[2]、a[3]、a[4],for循环中当i=strlen(s﹣1)时即为最后一个字符,所以将for循环中的i<=strlen(s)改为i<strlen(s)。
(3)利用for循环从该字符数组最后一个字符开始依次向前输出字符,实现该字符串的逆序输出,字符数组的第一个元素应为s[0],因此最后输出的字符为s[0],所以将for循环中的i>0改为i>=0。
转载请注明原文地址:https://kaotiyun.com/show/GMxp777K
0

最新回复(0)