填空题 1.  下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
    例如,若给a输入字符串:“ABCDEFGHUK”,调用函数后,字符数组b中的内容为:“ABC DEFGHI JK”。
    请改正程序中的错误,使它能得出正确结果。
    注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
    试题程序:
    #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、
【正确答案】 1、(1)b[k]=*p;
   (2)b[k]='';k++;    
【答案解析】[考点]
   本题考查:指针类型变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据类型,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。
   
   (1)题目中p是指针型变量作函数参数,因此给b[k]赋值时出现错误。
   (2)题目要求复制三个字符后加一个空格,所以应该是先给b[k]赋值空格,然后变量k再加1。
   C语言中为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如,pointer代表指针变量,而*pointer是pointer所指向的变量。