问题 填空题

下列给定程序中,函数proc()的功能是逐个比较str1,str2两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到str数组中,形成一个新的字符串。
例如,str1中的字符串为fshADfg,str2中的字符串为sdAEdi,则sir中的字符串应为sshEdig。
请修改程序中的错误,使它能得到正确结果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
#include<string.h>
void proc(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++


void main()
char str1[10]="fshADfg", str2[10]="sdAEdi", str
[80]=’\0’;
proc(str1, str2, str);
printf("The string str1: "); puts(str1);
printf("The string str2: "); puts(str2);
printf("The result: "); puts(str);

答案

参考答案:(1)错误:{if(*p>=*q) 正确:{if(*p<=*q)
(2)错误:k++ 正确:k++;

解析: 题目中要求将ASCII码值较大的字符放到新的字符串中,因此if的条件判断语句if(*p>=*q)应改为if(*P<=*q);在C语言中,每一条语句的结束是以;来标识的。因此k++后应该加上分号。

选择题
单项选择题