改错题下列给定程序中,函数fun()的功能是逐个比较a,b两个字符串对应位置中的字符,把ASCII值小或相等的字符依次存放到c数组中,形成一个新的字符串。例如:a中的字符串为fshADfg,b中的字符串为sdAEdi,则c中的字符串应为fdAADf。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include void fun(char *p,char *q,char *c){ int k=0; while(*p||*q)/**********************found***********************/ { if (*p<=*q) c[k]=*q; else c[k]=*p; if(*p) p++; if(*q) q++ ;/**********************found***********************/ k++ }}main(){ char a[10]="fshADfg",b[10]="sdAEdi",c[80]={’’\0’’}; fun(a,b,c); printf("The string a:"); puts(a); printf("The string b:"); puts(b); printf("The result :"); puts(c);}
参考答案:(1)错误: { if (*p<=*q)正确:{ if (*p>=*q)(2)错误:k++正确:k++;
解析:错误1:依题意,把ASCII值小或相等的字符存放到c数组中,故if语句的关系运算符应为">="。错误2:C语言规定,每个语句要用分号结束。