C语言:下列程序运行时若输入 1abcedf2df<回车>输出结果为( )

#include<stdio.h>main(){chara=0,ch;while((ch=getchar())!=\n'){if(a%2!=0&&(ch>='a'&&ch... #include<stdio.h>
main()
{ char a=0,ch;
while ((ch=getchar())!=\n')
{ if(a%2!=0&&(ch>='a'&&ch<='z')) ch=ch-'a'+'A';
a++;
putchar(ch);
}
printf("\n");
}
问题:求详细解答
展开
 我来答
百度网友0234896b4
推荐于2018-04-13 · TA获得超过549个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:298万
展开全部
1AbCeDf2dF
VC6.0执行试过了。
#include<stdio.h>
main()
{ char a=0,ch;
while ((ch=getchar())!='\n')
{ if(a%2!=0&&(ch>='a'&&ch<='z')) ch=ch-'a'+'A';
a++;
putchar(ch);
}
printf("\n");
}
//输入1abcedf2df

第一次 a=0那么根据ascii表查看是null也就是空字符。第一次输入1,(a%2)是求和2的余数
结果是0而且1也不在a和z之间,所以if后面的ch=ch-'a'+'A';不执行。a变成1,输
出 ch也就是1.
第二次 a=1 输入a, (a%2)余数是1不为0,而且a在a-z范围内,所以执行ch=ch-'a'+'A'。
ch=ch-('a'-'A')=ch-32 注意看ascii表 a比A 要大32.,大写字母要比小写字母小32.
这样ch-32就是可以把ch变成大写字母。所以输出A 。a++变2
第三次 a=2 输入b (a%2)余数是0,这样if那个条件因为有&&所以两边都满足才会执行条件 语句。于此ch=ch-'a'+'A'就不执行了。直接输出b
1Ab....
由此类推即可。
希望对您有所帮助!:)
jasson918
2011-02-11 · TA获得超过2867个赞
知道小有建树答主
回答量:1100
采纳率:66%
帮助的人:436万
展开全部
输出结果:1AbCeDf2dF
首先说a%2!=0,也就是在a为奇数时才成立,ch>='a'&&ch<='z'是判断输入字符是不是小写字符,如果是,把它转换成大写ch=ch-'a'+'A';
判断一个字符a增加一个,转换的字符为:2、4、6、10,1和8字符位数字,不需要准转换。

a从0开始计算a%2!=0,第一个字符时,a=0,但是字符为数字字符,不用转换;
a=1时,a%2!=0成立,输入字符为a,满足后面的条件,转换为大写A;
a=2时,a%2!=0不成立,不转换;
a=3时,a%2!=0成立,输入字符为c,满足后面的条件,转换为大写C;
以此类推。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式