程序填空问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 13:26:22
程序编写题
函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删去,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符A的ASCII码值为奇数……字符1的ASCII码值也为奇数……都应当删除,其他依次类推。最后t所指的数组中的内容应是:"BDF24"。
#include <stdio.h>
#include <string.h>

void fun(char *s, char t[])
{

}

main()
{
char s[100], t[100];
printf("\nPlease enter string S:"); scanf("%s", s);
fun(s, t);
printf("\nThe result is: %s\n", t);

}
*****************************************
如果函数中填:

while(*s)
{ if(*s%2==0) *t++=*s;
s++;
}
*t=0;
输出为:BDF24
但填这个:
while(*s)
{ if(*s%2==0) *t++=*s++;

}
*t=0;
虽然编译时不会报错,但是没有输出结果,这是怎么会事?*t++=*s;s++;与*t++=*s++;应该是等效的哦?

单独拿出来看
*t++=*s;s++;与*t++=*s++;是一样的

但是这个
if(*s%2==0) *t++=*s;
s++;
s每循环一次指向下一个

你的这个
if(*s%2==0) *t++=*s++;
如果s指向偶数位才执行++,当指向奇数位时,s的值没有改变,变成死循环了

首先肯定楼上的回答。

这里有很多++ 编译没错,是语法不错,但是这个程序你知道s++他什么时候s=s+1吗?

我也不知道,从右到左算。。这程序没有可读性比较差