使用VC6打开考生文件夹下的工程RevProj9。此工程包含一个源程序文件RevMain9.cpp。在该文件中,函数fun()的功能是;将字符串s中的小写字母都改为对应的大写字母,其他字符不变。例如,输入“mT+gN”,则输出“MT+GN”。 请改正程序中的错误,使它能得到正确结果。 注意,不要改动main函数,不得删行或增行,也不得更改程序的结构。 源程序文件RevMain9.cpp中的程序清单如下; //RevMain9.cpp #include<iostream> using namespace std; char* fun(char*s); int main() { int i; char str[81]; cout<<"Please enter a string:"; cin>>str; cout<<"\n The result is:\n"<<fun(str)<<end1; return 0; } char *fun(char*s) { int i; for(i=0;s[i];i++) { /* * * * *FOUND* * * * *if((’a’<=s[i])||(s[i]<:=’z’)) /* * * * *FOUND * * * * * / s[i]+=32; } return s; }
参考答案:
解析:正确的fun函数如下: char *fun(char *s) { int i; for(i=0;s[i];i++) { if((’a’<=s[i])&&(s[i]<=’z’)) s[i]-=32; } return s; } 函数fun()中有两处错误: ①函数fun()的功能是将字符串s中小写字母改写成对应的大写字母,所以for循环体中的if语句的判断条件是错误的。应改为;(’a’<=s[i])&&(s[i]<=’z’)。 ②小写字母的ASCII码值比对应的大写字母的ASCII码值要大32,所以if语句中的“s[i]+=32;”应改为“s[i]-=32;”。