问答题
下列给定程序中函数fun()的功能是:将p所指字符串中的所有字符复制到b中,要求每复制3个字符之后插入一个空格。
例如,若给a输入字符串:ABCDEFGHIJK,调用函数后,字符数组b中的内容为:ABC DEF GHI
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)b[k]=*P;
(2)b[k++]='';
【答案解析】[解析] 本题考查:指针类型变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。
(1)题目中p是指针型变量作函数参数,因此给b[k]赋值时出现错误。
(2)题目要求复制3个字符后加一个空格,所以应该是先给b[k]赋值空格,然后变量k再加1。