09年的二级C的一道题

来源:百度知道 编辑:UC知道 时间:2024/05/18 10:34:09
下列程序运行时,若输入labcedf2df<回车>输出结果为【10】
#include <stdio.h>
main()
{ char a=0,ch;
while((ch=getch())!='\n')
{ if(a%2!=0&&(ch>='a'&&ch<='z')) ch=ch-'a'+'A';
a++; putchar(ch);
}
printf("\n");
}
答案为什么是lAbceDf2Df啊,我认为是ACE
首先改正ACE是错误的
一楼在乱说,程序是把ASCALL码为奇数的小写之母改为大写。我的疑问有一点
答案不是这样
二楼 三楼 谢谢你们的回答,不过我的程序与你们的没本质区别
四楼的就不用说了,屁纹不懂来这里装大哥

if(a%2!=0&&(ch>='a'&&ch<='z')) ch=ch-'a'+'A';
这一句的意思是,当a%2 !=0 而且,当前输入的字符为小写字母时,变成大写。
而从0和2 %2 都是等于0的。
没有啊,我的输出是
lAbCeDf2dF

#include <stdio.h>
main()
{
char a=0,ch;
while((ch=getch())!='\n')
{
if(a%2!=0&&(ch>='a'&&ch<='z')) ch=ch-'a'+'A';
a++;
putchar(ch);
}
printf("\n");
}
你的代码写的有点乱。给你整理了一下,看的更清楚。自己再研究吧

就是把字符ASCII码是偶数的字母编程大写,当然是那个答案了

我不知道你的运行环境是什么,,,,不过你的程序不对,,,应为:

#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");
}

而且输入labcedf2df。。。。得到的结果是lAbCeDf2dF....
你如果要输出ACE,,,,这个程序需要大改...

不要说“你认为”。画一张流程图把程序走一遍就知道是怎么一回事了,电脑是不会和你