问题 填空题

给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。
例如,字符串s中的数据为:AABBCCDDEEFF,则字符串t中的数据为:ABBCDDEFF。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
文件MODI1.C内容如下:
#include<stdio.h>
#include<string.h>
#define N 80
void fun(char *s,char t[])
int i,j=0,n;
n=strlen(s);
for(i=0;i<n;i++)
/**********found**********/
if(i%2&&s[i]%2==0)t[j++]=s[i];
/**********found**********/
t[i]=’\0’;

void main( )
char s[N],t[N];
printf("\nPlease enter string s:");
gets(s);
fun(s,t);
printf("\nThe result is: %s\n",t);

答案

参考答案:第1处:将“if(i%2&&s[i]%2==0)”改为“if(i%2||s[i]%2==0)”。
第2处:将“t[i]=’\0’;”改为“t[j]=’\0’;”。

解析: 程序中的第1处错误是一个逻辑错误,题目要求将位于奇数位置的字符或ASCII码为偶数的字符放入t中,这两个条件应该是“或”的关系而不是“与”的关系,所以应该将if条件判断中的“&&”改为“||”。第2处错误是数组下标出错,t指向的字符串下标变量是j,而不是i,变量i是字符串s的下标,所以对t指向的数组末尾添加字符串结束标记’\0’,应该对t[j]赋值,而不是t[i]。

填空题
选择题