c语言中的条件判断细节问题:当在一次循环中进行多个条件判断的时候使用else if避免出错,用多个if可能会出错。
原因是if与多个else if是分枝情况,只要出现首次if或者else if条件满足,则执行该条代码,即使后续存在其他满足else if的条件也不会执行else if及else的内容;if与多个if是并列情况,会顺序执行,当执行完满足条件的if语句后,最后的else也会执行;
举例如下:
题目:输入一行字符,统计其中的英文字符,数字字符,空格和其他字符的个数。
#include<stdio.h>
#define N 80
int main()
{
char s[N];
int i=0,a=0, b = 0, c = 0, d = 0;
printf("input a series of numbers:\n");
gets(s);
while (s[i] != '\0')
{
if (s[i] >= 'A'&&s[i] <= 'Z' || s[i] >= 'a'&&s[i] <= 'z')
a++;
else if (s[i] >= '0'&&s[i] <= '9' )
b++;
//if (s[i] = ' ')
else if (s[i] ==32)
c++;
else
d++;
i++;
}
printf("英文字符:%d个\t数字:%d个\t空格:%d个\t其他字符%d个\t",a,b,c,d);
system("pause");
}
如果使用多个if进行并列判断,则运行出错。
#include<stdio.h>
#define N 80
int main()
{
char s[N];
int i=0,a=0, b =