文章目录
一、if语句
1.if语句
第一种if语句:如果怎样就怎样,其语法格式为:
......//其它语句
if(表达式)
{
...//逻辑值为真所执行的语句、程序块
}
......//其它语句
举个栗子:
#include <stdio.h>
int main()
{
int i;
printf("您老贵庚:");
scanf("%d",&i);
if (i >= 18)
{
printf("你可真是那个!!!\n");
}
return 0;
}
[liujie@localhost sle11]$ gcc test.c && ./a.out
您老贵庚:26
你可真是那个!!!
第二种if语句:如果怎样就怎样,否则,还能怎样。其语法格式为:
......//其它语句
if(表达式)
{
......//逻辑值为真所执行的语句、程序块
)
else
{
......//逻辑值为假所执行的语句、程序块
}
......//其它语句
举个栗子:
#include <stdio.h>
int main()
{
int i;
printf("您老贵庚:");
scanf("%d",&i);
if (i >= 18)
{
printf("你可真是那个!!!\n");
}
else
{
printf("那你也不行呀!!!\n");
}
return 0;
}
[liujie@localhost sle11]$ gcc test.c && ./a.out
您老贵庚:15
那你也不行呀!!!
[liujie@localhost sle11]$ gcc test.c && ./a.out
您老贵庚:26
你可真是那个!!!
第3种if语句:它允许你扩充各种条件的判断,语法格式比较复杂。其语法格式为:
......//其它语句
if(表达式1){
.. }
else if(表达式2){
......}
else if(表达式3){
......}
.
.
.
else if(表达式n){
...}
else {
.......}
......//其它语句
举个栗子:按分数评级的程序
#include <stdio.h>
int main()
{
int i;
printf("你的数学成绩为");
scanf("%d",&i);
if (i >= 90){
printf("A\n");}
else if (i >= 80 && i < 90){
printf("B\n");}
else if (i >= 70 && i < 80){
printf("C\n");}
else if (i >= 60 && i < 70){
printf("D\n");}
else{
printf("E\n");}
return 0;
}
[liujie@localhost sle11]$ gcc test.c && ./a.out
你的数学成绩为80
B
2.if语句的课后作业
-
根据下边代码画出流程图,并说明该程序的用途。
#include <stdio.h> int main() { int a, b, c, t; printf("请输入3个整数(使用空格隔开):"); scanf("%d%d%d", &a, &b, &c); if (a > b) { t = a; a = b; b = t; } if (a > c) { t = a; a = c; c = t; } if (b > c) { t = b; b = c; c = t; } printf("%d %d %d\n", a, b, c); return 0; }
答:该程序将用户输入的 3 个整数从小到大排列后输出。
解析:要将变量 a 和变量 b 的值互换,这里借用一个中间变量 t 来实现。第一次条件判断,如果 a > b,将两变量的值互换,确保 a <= b。同样道理,下边经过两次判断,确保 a <= c 以及 b = c。因此,最后得到的结果是 a <= b <= c,实现了从小到大排序。
流程图:
-
要求用户输入一个字符,如果是大写字母,将其转换为小写;如果是小写字母,将其转换为大写;其他字符不做处理,并输出结果。
答:仔细观察 ASCII 码表不难发现:大写字母要比对应的小写字母的 ASCII 值小 32(十进制)。#include <stdio.h> int main() { char ch; printf("请输入一个字符:"); scanf("%c", &ch); if (ch >= 'A' && ch <= 'Z') { ch = ch + 32; // ch加32,变成小写,然后赋值回ch } else if (ch >= 'a' && ch <= 'z') { ch = ch - 32; // 同上 } printf("%c\n", ch); return 0; }
二、switch语句和分支嵌套
1.switch语句
switch语句的语法格式为:
......//其它语句
switch(表达式)
{
case 常量表达式1:语句或程序块1
case 常量表达式2:语句或程序块2
......
case 常量表达式n:语句或程序块n
default:语句或程序块n+1
}
......//其它语句
得到的表达式是某一个常量,如果其匹配某个常量表达式,那么,switch语句就会直接执行其对应的语句或程序块。否则,就会执行default后面的语句或程序块。
举个栗子:通过评级来反推出成绩范围
#include <stdio.h>
int main()
{
char i;
printf("请输入成绩:");
scanf("%c",&i);
switch (i)
{
case 'A' : printf("你的成绩在90分以上\n");break;
case 'B' : printf("你的成绩在80分到90分区间\n");break;
case 'C' : printf("你的成绩在70分到80分区间\n");break;
case 'D' : printf("你的成绩在60分到70分区间\n");break;
case 'E' : printf("你的成绩在60分以下\n");break;
default : printf("请输入有效的成绩评级\n");
}
return 0;
}
[liujie@localhost sle12]$ gcc test.c && ./a.out
请输入成绩:A
你的成绩在90分以上
2.分支嵌套
分支嵌套就是分支结构里面嵌套分支结构。其语法格式如下:
if(表达式)
if(表达式)
......
else
......
else
if(表达式)
......
else
......
举个栗子:根据流程图来写代码
#include <stdio.h>
int main