问答题
使用VC6打开考生文件夹下的工程RevPrroj7。此工程包含一个源程序文件 RevMain7.cpp。在该文件中,函数fun()的功能是:逐个比较a、b两个字符串对应位置中的字符,把ASCII码值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如:若a中的字符串为aBCDeFgH,b中的字符串为ABcd,则c中的字符串为 aBcdeFgH。 请改正程序中的错误,使它能得到正确结果。 注意,不要改动主函数,不得删行或增行,也不得更改程序的结构。 源程序文件RevMain7.cpp中的程序清单如下: //RevMain7.cpp #include<iostream> #include<string> using namespace std; void fun(char *p,char *q,char *c) int k=1; while(*p!=*q) if(*p<*q) c[k]=*q; else c[k]=*p; if(*p) p++; if(*q) q++; int main() char a[10]="aBCDeFgH",b[10]="ABcd",c[80]='/0'; fun(a,b,c); cout<<"The string a is "<<a<<'/n'; cout<<"The string b is "<<b<<'/n'; cout<<"The string c is "<<c<<endl; return 0;
【正确答案】 正确的fun()函数为: void fun(char *p,char *q,char *c) { int k=0; while((!*p)&&(!*q)) { if(*p<*q) c[k]=*q; else c[k]=*p; if(*p) p++; if(*q) q++; k++; } }
【答案解析】 [解析] 此题中主函数没有错误。其错误全部集中在函数fun()中。分析函数fun(): ①整数k用来记录字符串c的偏移,因此k初始值应该为0。 ②循环结束的条件应该是两个字符串指针都已经移到字符串尾部。 ③在while循环体中,k值应该递增。
提交答案
关闭