问题 填空题

下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。
例如,若给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’;

void 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++;

解析: 此题,首先要知道函数的参数类型可以是整型、实型、字符型和指针型。此处正是指针类型变量作为函数的参数,因此b[k]=*p,而不是b[k]=p;题目要求在三个字符后加一个空格。通过条件表达式i<=3&&*p,①找到不需移动的字符(从第4个位置开始,每隔3个字符)并将其存入数组b中,②此时下标落到了需要移动字符的位置,将数组b中此位置插入空格,具体语句为:b[k]=’’;k++,继续执行①直到处理到字符串p的最后一个字符。

选择题
单项选择题