M012

02-程序修改题 软件154 范金瑞 836浏览

所属年份:2011.3

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

请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改的程序的结构!

#include <stdio.h>
#include <string.h>
void  fun(char *p ,char *q, char *c)
{
    /************found************/
    int k = 1;
    /************found************/
    while( *p != *q )
    {
        if( *p<*q )  c[k]=*q;
        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)

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

【解题思路】
(1) 变量k存放数组c的下标,因此应初始化为0。
(2) while循环语句的循环条件是判断两个字符串是否到达结尾。