【程序修改题】循环

循环能做的事即重复操作,但要注意循环结束的条件是否符合你所期望的

【问题】:

下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。

例如,若主函数中a字符串为"aBCDeFgH",b字符串为"Abcd",则c中的字符串应为"aBcdeFgH"。

请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

【程序】:

#include

#include

void fun(char *p ,char *q, char *c)

{

/************found************/

int k = 1;

/************found************/

while( *p != *q )

{ if( *p

else c[k]=*p;

if(*p) p++;

if(*q) q++;

k++;

}

}

main()

{ char a[10]="aBCDeFgH", b[10]="ABcd", 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) int k=0;

(2)while (*p||*q)

【解析】:

我们首先运行这个程序,发现

似乎并没有提示有错误的地方,但是细细一看发现,他没有输出我们想要的结果。细读程序,我们发现k是代表的是指针c的下标值,指针(数组)下标都是从0开始的,所以要改成k=0;有由题知,p、q长度不相等,故不可用*p != *q(题中a比b长,当a有字符时,b可能为空,就不满足题中要求),while循环语句的循环条件是判断两个字符串是否到达结尾,故只要满足p、q不为空,在判断p、q的ASCII码大小即可

本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180708G0WQK500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券