M007

02-程序修改题 飞快学 344浏览

所属年份:2011.9;2012.9;2013.3;2013.9

下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABC DEF GHI JK。

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

#include <stdio.h>
void  fun(char  *p, char  *b)
{
    int   i, k=0;
    while(*p) {
        i=1;
        while( i<=3 && *p ) {
            /**********found**********/
            b[k]=p;
            k++;
            p++;
            i++;
        }
        if (*p) {
            /**********found**********/
            b[k++]=" ";
        }
    }
    b[k]='\0';
}

main()
{
    char  a[80],b[80];
    printf("Enter a string:      ");
    gets(a);
    printf("The original string: ");
    puts(a);
    fun(a,b);
    printf("\nThe string after insert space:   ");
    puts(b);
    printf("\n\n");
}

【参考答案】

(1)b[k]=*p;
(2)b[k]=' ';k++;

【考点分析】
本题考查:指针类型变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据类型,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。

【解题思路】
(1) 题目中p是指针型变量作函数参数,因此给b[k]赋值时出现错误。
(2) 题目要求赋值3个字符后加一个空格,所以应该是先给b[k]赋值空格,然后变量k再加1。

【解题宝典】
C语言中为了表示指针变量和它所指向的变量之间的关系,在程序中用”*”符号表示”指向”,例如,pointer代表指针变量,而*pointer是pointer所指向的变量。