char a=0,ch; while((ch=getchar())!='\n') { if(a%2!=0&&(ch>='a'&&ch<='z')什么意思,请分析

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

char a=0,ch;
while((ch=getchar())!='\n') //循环,当输入回车的时候会结束循环
{
if(a%2!=0&&(ch>='a'&&ch<='z')) //这里是判断,隔一个并且输入的小写的时候
ch=ch-'a'+'A'; //这个是小写变大写,可以用ch-=32这句完成,呵呵
a++; //这个还用说?就是a自加一
putchar(ch); //输出ch
}
printf("\n");
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-26
char a=0,ch;
while((ch=getchar())!='\n') 当读入的字符不是回车时做下面的语句
{
if(a%2!=0&&(ch>='a'&&ch<='z')) 当a不是2的倍数 且 刚才读入的字符是a~z中的其中一个时做下面的语句
ch=ch-'a'+'A'; 将小写字母变成大写字母
a++; 数字a增加1
putchar(ch); 输出之前变成的大写字母
}
printf("\n"); 输出回车
第2个回答  2012-01-26
定义字符a=0,ch
从屏幕上读取一个字符给ch并且这个字符不是回车
当a为奇数且ch是小写字母时
ch转为大写(ch+('A'-'a'))
输出ch,换行
第3个回答  2012-01-26
从键盘输入的字符不是回车时进入循环,若此字符的ASCII值是奇数并且是小写的英文字母,则进入后续的处理
第4个回答  2018-04-14
char a=0,ch;
while((ch=getchar())!='\n') //当输入回车时结束循环
{
if(a%2!=0&&(ch>='a'&&ch<='z')) //a代表字符的位数,注意,第一位时a=0,所以a不能被2整除即a为奇数,但是是第偶数位 并且这个字符属于a~z
ch=ch-'a'+'A'; //相当于ch=ch+(‘A’-‘a’)即这个字符加上这个字符大写与小写相差的数值,就是说将该字符转换成大写字母
a++; //相当于a=a+1
putchar(ch); //输出ch
}
printf("\n");
奇数位不变;偶数位,a变为A,c变为C,d变为D,2不属于a~z,不变,f变为F
因此最后输出的结果为1AbCeDf2dF
相似回答