C程序题 跪求大神相助!!!

#include<stdio.h>voidfun(char*s){while(*s){if(*s%2)printf("%c",*s);s++;}}mian(){chara... #include <stdio.h>
void fun(char *s)
{ while(*s)
{if (*s%2) printf("%c",*s);
s++;
}

}
mian()
{ char a[ ]="BYTE";
fun(a);
printf("\n");

}

为什么输出结果是 YE 而不是BT
展开
 我来答
fan900207
2012-09-18 · TA获得超过496个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:41.1万
展开全部
if(*s % 2) 等价于 if ( *s % 2 == 1) 即 if(是奇数);
B的ASCM值为42,Y为59,T为54,E为45, Y和E为奇数,所以输出YE
sun_siliang
2012-09-18 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4424万
展开全部
函数fun的功能是输出s所指字符串中ASCII码值为奇数的字符。字符串"BYTE"中,字符'Y','E'的ASCII码为奇数,因此输出,字符'B','T'的ASCII码为偶数,因此不输出。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Necromanceer
2012-09-18 · 超过21用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:56.7万
展开全部
while(*s)
{ s++;}这是一个固定格式,表示字符串从第一个字符开始,只有不是终止符‘/0’就判断下一个字符。
while(*s)判断是否是终止符‘/0’
s++让指针指向下一个单字符
所以fun函数的含义就是对一个字符串进行扫描,如果单个字符的ASCM码是奇数就打印出来,否则跳过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友282b395
2012-09-18 · TA获得超过228个赞
知道小有建树答主
回答量:2779
采纳率:0%
帮助的人:620万
展开全部
因为第一次是时候*s%2=0不进入if
第二次 *s%2=1 今天if 打印出Y其他的依次类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
10796359
2012-09-18
知道答主
回答量:4
采纳率:0%
帮助的人:5847
展开全部
0%2=0
s++
1%2=1
printf "Y"
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-09-18
展开全部
因为:其实一维数组a[]="BYTE"等价于:a[0]="B",a[1]="Y",a[2]="T",a[3]="E", 能 整除除时,即*s%2=0为假,条件不成立,不输出。*s%2=1为真,条件成立输出!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式