其实每天我们都通过自己的判断来决定自己的行动。例如:今天要下雨了,所以我带了伞。下面我们就通过程序来判断,如果输入的整数不能被5整除,就显示出相应的信息。
代码如下:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n%5==0)
{
puts("输入的整数可以被5整除。");
}
return 0;
}
这样的语句称为if语句。
if语句会让程序执行如下处理
判断表达式的值,如果结果不为0,则执行相应的语句。
括号内对条件进行判断的表达式称为控制表达式。
而当输入的整数不能被5整除的时候,后续语句不会被执行,屏幕上不会显示任何的内容。
通过判断输入的数能否被2整除,就可以确定输入的数是否是奇数。代码如下:、
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n%2!=0)
{
printf("%d是一个奇数", n);
}
return 0;
}
如果输入的是一个偶数那么程序不会显示任何的内容。
在判断输入的数能否被5整除的时候,当输入的值不能被5整除的时候,不显示任何的内容。这样会让使用者不放心,所以代码可以改为下面的形式。
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n % 5 == 0)
{
puts("输入的整数可以被5整除。");
}
else
{
puts("输入的整数不能被5整除。");
}
return 0;
}
本程序中使用的是下列的形式:
if(表达式) 语句;else 语句;
else是”否则“的意思。
那么如何对一个输入的数是奇数还是偶数进行判断并输出呢,看下面的代码:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n % 2 != 0)
{
printf("%d是一个奇数", n);
}
else
{
printf("%d是一个偶数", n);
}
return 0;
}
总结:
如果只有当某条件成立的时候才进行处理,则使用不用加else的if语句;如果是根据某条件的成立与否进行不同的处理,则使用带有else的if语句。
判断输入的值是否为0;
代码如下:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n)
{
puts("该整数不是0。");
}
else
{
puts("该整数是0。");
}
return 0;
}
if语句根据控制表达式的值是否为0来控制程序的流程。
输入两个数判断是否相等。
代码如下:
#include
int main()
{
int n = 0;
int m = 0;
printf("请输入两个整数:");
scanf("%d %d", &n,&m);
if (n == m)
{
puts("它们相等。");
}
else
{
puts("它们不相等。");
}
return 0;
}
==运算符,会对左右两侧的操作数进行比较,如果相等着为1,不相等则为0。
判断输入的整数的个位数是否为5,并显示相应信息的程序。
代码如下:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if ((n % 10) == 5)
{
puts("该整数的个位数是5。");
}
else
{
puts("该整数的个位数不是5。");
}
return 0;
}
上面我们说到了两分支的程序流程,现在我们看以下三分支的情况。输入一个整数,判断该整数的符号。
代码如下:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n==0)
{
puts("该整数为0");
}
else if (n > 0)
{
puts("该整数为整数");
}
else
{
puts("该整数为负数");
}
return 0;
}
比较两个数大小的运算符称为关系运算符。如下所示:
大家需要注意的是,将<=运算符和>=运算符中的等号放在左侧(=<和=>),或者在<与=之间有空格都是不对的。
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n>0)
{
if (n % 2 == 0)
{
puts("该数为偶数。");
}
else
{
puts("该数为奇数。");
}
}
else
{
puts("该数不是正数。");
}
return 0;
}
表达式(极少部分情况除外)都有值,程序执行的时会对表达式的值进行检测,这就是判断。
输入两个整数,显示出其中较大的值。代码如下:
#include
int main()
{
int n = 0;
int m = 0;
puts("请输入两个整数:");
scanf("%d %d", &n, &m);
if (n>m)
{
printf("%d是较大的数。",n);
}
else
{
printf("%d是较大的数。", m);
}
return 0;
}
程序中的printf函数被调用了两次。
下面是我改造的程序,把较大的值存入变量中,然后进行输出。
代码如下:
#include
int main()
{
int n = 0;
int m = 0;
int max = 0;
puts("请输入两个整数:");
scanf("%d %d", &n, &m);
if (n>m)
{
max = n;
}
else
{
max = m;
}
printf("较大的数是%d", max);
return 0;
}
这次我们输入三个整数,并显示其中的最大值。
代码如下:
#include
int main()
{
int n = 0;
int m = 0;
int k = 0;
int max = 0;
printf("请输入三个整数:");
scanf("%d %d %d", &n, &m, &k);
max = n;
if (m > max)
{
max = m;
}
if(k>m)
{
max = k;
}
printf("较大的数是%d", max);
return 0;
}
计算两个整数中的较大值。
代码如下:
#include
int main()
{
int n = 0;
int m = 0;
int max = 0;
puts("请输入两个整数:");
scanf("%d %d", &n, &m);
max = (n > m) ? n : m;
printf("较大的数是%d", max);
return 0;
}
上述程序中使用了条件运算符,该运算符是需要三个操作数的三目操作符。
只有条件运算符属于三目运算符,其他的运算符都是单目或者双目运算符。
使用条件运算符计算输入的两个整数差值,代码如下:
#include
int main()
{
int n = 0;
int m = 0;
puts("请输入两个整数。");
scanf("%d %d", &n, &m);
printf("较大的数是%d", (n > m) ? n - m : m - n);
return 0;
}
也就是说最终的结果为大值减去小值。
计算输入的两个整数中的较大值和较小值的程序代码如下:
#include
int main()
{
int n = 0;
int m = 0;
int max = 0;
int min = 0;
printf("请输入两个整数:\n");
scanf("%d %d", &n, &m);
if (n > m)
{
max = n;
min = m;
}
else
{
max = m;
min = n;
}
printf("较大的数是%d", max);
printf("较小的数是%d", min);
return 0;
}
本程序中的if语句,当n大于m的时候,执行if里面的语句
{max=n; min=m;}
否则执行else里面的语句
{max=m; min=n;}
像上面的语句称为复合语句,也叫程序块。
显示输入的月份所处的季节,代码如下:
#include
int main()
{
int month = 0;
printf("请输入月份:");
scanf("%d", &month);
if (month>=3&&month<=5)
{
printf("%d是春季。\n", month);
}
else if (month >= 6 && month <= 8)
{
printf("%d是夏季。\n", month);
}
else if (month >= 9 && month <= 11)
{
printf("%d是秋季。\n", month);
}
else if (month == 12 || month == 1||month==2)
{
printf("%d是冬季。\n", month);
}
else
{
printf("%d月不存在!!!\a\n", month);
}
return 0;
}
这里使用了&&运算符称为逻辑与运算符(就是两个条件都成立的情况下返回的值才不等于0)。
使用例||运算符称为逻辑或(就是只要有一个条件成立就返回的值不等于0)。
显示输入的整数除以3所得到的余数。代码如下:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
if (n % 3 == 0)
{
puts("该整数能被3整除。");
}
else if (n % 3 == 1)
{
puts("该整数除以3的余数是1");
}
else
{
puts("该整数除以3的余数是2");
}
return 0;
}
本程序中使用了两次计算n除以3的余数的表达式n%3,多次输入同一个表达式,容易造成输入错误。
下面是使用switch语句处理后的代码:
#include
int main()
{
int n = 0;
printf("请输入一个整数:");
scanf("%d", &n);
switch (n%3)
{
case 0:
puts("该整数能被3整除。");
break;
case 1:
puts("该整数除以3的余数是1");
break;
case 2:
puts("该整数除以3的余数是2");
break;
}
return 0;
}
如果n%3的值为1,则程序会转向"case 1:",如下图所示:
像”case 1:“这样用来表示程序跳转的标识称为标签。
标签的值必须为常量,不可以为变量。不允许多个标签出现同为一个值。
#include
int main()
{
int s = 0;
printf("整数:");
scanf("%d", &s);
switch (s)
{
case 1:
puts("A");
puts("B");
break;
case 2:
puts("C");
case 5:
puts("D");
break;
case 6:
case 7:
puts("E");
break;
default:
puts("F");
break;
}
return 0;
}
当控制表达式的判断结果与任何一个case都不一致的时候,程序就会跳转到"default:"继续执行。
本程序的流程图;
如图所示,在没有break语句的时候,程序会落到下一条语句上。
注意:
通过单一表达式来控制程序流程分支的时候,使用switch语句的效果通常要比使用if语句更好。