C语言中if条件语句else省略问题

如题:
下列程序运行时,若输入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");

}

我问下是不是在a++前面省略了一个else

输出结果:
lAbCeDf2dF。
----
这个程序的功能是扫描输入的字符,如果是小写字母且输入字符顺序为第偶数个,则转换为大写,最后输出。
a++是用于字符计数用的。a++之前没有省略else。(C++的关键字不能随便被省略,像if、else这些控制语句的关键字更不可能省略。)
if(a%2!=0&&(ch>='a'&&ch<='z')) ch=ch-'a'+'A';是单独的if语句,没有else分支判断,如果条件不满足则什么也不做。不管它的条件是否满足,都和下面的a++;等语句无关。
----
[原创回答团]

参考资料:原创

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-11-02

在C语言中正常格式是if(条件){结果}else{结果}.这是为了严谨才这么做的,不过有时为了方便else是可以省略不写的。

下面举一个简单例子:

#include <stdio.h>
int main()
{
    int a,b;
    a=4;
    b=5;
    if(a>b)
    {
       printf("%d",a);
    }
    else
    {
        printf("%d",b);
    }
    return 0;

}

若把else去掉的话,结果一样。但是如果是初学者,还是严谨一些、

第2个回答  2009-09-14
没有省略,这段代码是正确的
if语句可以不用要else分支
第3个回答  2009-09-14
代码正确:
#include <stdio.h>
#include<string.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");
}

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网