关于二级C机试

来源:百度知道 编辑:UC知道 时间:2024/05/31 22:46:02
要求删除下标和ascii码值为偶数的字符
int i,j=0;
for(i=0;s[i]!='\0';i++)
if(i%2!=0&&s[i]!=0)
s[j++]=s[i];
首先 我这道题在模拟系统里是得满分的

要求删除字符串中的指定字符串后输出,结果我忘了在末尾加‘\0`,运行后正确答案后有串烫字。这种程序在金版教育软件运行得满分,在南开百题里得0分
我有同学上次犯同样的错误,结果还过了,不知道这回我会怎么样啊?

祝你好运!

二级C应该不会考虑你这个,你只要满足了前面的要求就应该行了

我觉得这道题有错.."s[j++]=s[i]; "应该是重新定义个数组才行.如:b[j++]=s[i]

祝你好运!

什么事情过了就别太在意了 主要是以后要注意就是了 我记得我也考了这题,我第一次做了20分钟出来了结果考了36分 原因是3个问题都没运行在考试的时候监考老师说 考试的时候不能运行 我真的就没运行了 考了下来很有信心的 因为平时上机感觉还可以的 结果没过

就过了笔试,这次考试注意上次的问题了

希望你能过 啊!

假如数组中有10个字符。
for 语句执行以后将不删除的几个字符存放在s中。
按照题目要求是要输出剩下的字符。但是在这些字符后没有‘\0’符号,也就是说用printf函数输出不仅会输出这几个字符,而且还会输出这些字符后面的字符,直到遇到第10个字符‘\0’,输出才会结束。
另外楼主的代码中if语句有问题。见前面两位老兄的代码。

if(i%2!=0&&s[i]!=0) //这里s[i]!=0有问题吧,要找到ASCii为偶数的字符s[i]%2!=0

关于'\0'的问题,用的覆盖方式刷新了原来数组,这个方式没问题,但如果不用s[j]='\0',那运行可能有不同的结果了,因为原来数组中的'\0'还存在,系统就会输出'\0'前所有的字符,
(我们这里上机用的是TC编译,这样的程序应该不正确,编译可以过,结果不正确)