问题 问答题

使用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;”。

不定项选择
填空题