C语言程序有3种基本结构:顺序结构、选择结构和循环结构
1)顺序结构:所谓顺序结构,就是从上到下的所有语句都会依次执行
2)选择结构:选择结构中存在一条(或多条)分支语句,当满足分支的条件时语句才会执行,否则不会执行
3)循环结构:循环结构即是在某些条件的控制下重复执行一段代码语句,当满足循环条件时执行循环语句,否则不执行循环语句。
选择结构:if-else结构
if-else结构使用
if(表达式)-else是最常见的2分支判断选择结构,常见的if()-else有3种形式:
⒈if(表达式)
{
语句块
……
}
⒉if(表达式)
{
语句块1
……
}
else
{
语句块2
……
}
⒊if(表达式1)
{
语句块1
……
}
else if(表达式2)
{
语句块2
……
}
…
else
{
语句块n
}
……
1)if(表达式)
用法:
if(表达式)
{
语句块;
……
}
说明:
当程序执行到if语句时,会判断if()内表达式的真假,若为真,则会执行语句块,否则跳过语句块
示例:
int main()
{
int a = 5;
if(a>0)
{
printf("a大于0\n");//满足if条件,这条语句会执行
}
a = -5;
if(a>0)
{
printf("a大于0\n");//不满足if条件,这条语句不会执行
}
return 0;
}
执行结果:输出一条"a大于0"
if(表达式)-else
用法:
if(表达式)
{
语句块1;
……
}
else
{
语句块2;
……
}
{
printf(“成绩为良\n”);
}
else if(score<80 && score>=70)
{
printf(“成绩为中\n”);
}
else if(score<70 && score>=60)
{
printf(“成绩为及格\n”);
}
else if(score<60 && score>=0)
{
printf(“成绩为不及格\n”);
}
else
{
printf(“输入非法数据\n”);
}
return 0;
}
4)如果if()或者else表达式下未使用{}限制,则只会执行if()或else下的第一条语句。
示例:
#include<stdio.h>
int main()
{
int a = 5;
if(a>0)
printf("a是正数\n");
else
a = -3;
printf("a不是正数\n");
printf("a is %d\n",a);
return 0;
}
程序输出结果:
a是正数
a不是正数
a is 5
尽管在本例中,else下的两句表达式缩进相同(以代表两句都隶属于else语句块)但是由于else后没有{},因此实际上隶属于else的语句只有第一句(即a=-3,如果能执行的话),而printf()语句则会照常执行。因此我们建议使用{}将if()和else后的语句都括起来,以免出现逻辑错误
上面输入成绩输出分数段的示例等价于:
#include<stdio.h>
int main()
{
int score;
printf("请输入学生成绩:");
scanf("%d",&score);
if(score<=100 && score>=90)
printf("成绩为优\n");
else if(score<90 && score>=80)
printf("成绩为良\n");
else if(score<80 && score>=70)
printf("成绩为中\n");
else if(score<70 && score>=60)
printf("成绩为及格\n");
else if(score<60 && score>=0)
printf("成绩为不及格\n");
else
printf("输入非法数据\n");
return 0;
}
闰年判断标准:年份能被4整除;如若遇到100的倍数,则需判断年份能否被400整除。(逢4一闰,逢百不闰,逢400又闰)
如1900年不是闰年,1904年是闰年,2000年是闰年
答案:
int main()
{
int input;
scanf("%d",&input);
if(input%4==0)
{
if(input%100!=0)
{
printf("%d是闰年\n",input);
}
else if(input%400==0)
{
printf("%d是闰年\n",input);
}
else
{
printf("%d不是闰年\n",input);
}
}
else
{
printf("%d不是闰年\n",input);
}
return 0;
}
return 0;
}
在示例中,如果去掉所有的break语句,则:
#include<stdio.h>
int main()
{
int input;
scanf("%d",&input);
switch(input)
{
case 1:
printf("今天是星期一\n");
case 2:
printf("今天是星期二\n");
case 3:
printf("今天是星期三\n");
case 4:
printf("今天是星期四\n");
case 5:
printf("今天是星期五\n");
case 6:
printf("今天是星期六\n");
case 7:
printf("今天是星期日\n");
default:
printf("输入错误\n");
}
return 0;
}
程序执行结果:
输入4,输出:今天是星期四 今天是星期五 今天是星期六 今天是星期日 输入错误
练习1:将上文的“输入学生成绩,输出优、良、中、及格、不及格”问题使用switch()语句来实现
答案:
int main()
{
int input;
printf("请输入学生成绩:");
scanf("%d",&input);
if(input>100 || input<0)
printf("输入数据错误!\n");
else
input /= 10;
switch(input)
{
case 10:
case 9:
printf("成绩为优\n");
break;
case 8:
printf("成绩为良\n");
break;
case 7:
printf("成绩为中\n");
break;
case 6:
printf("成绩为及格\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("成绩为不及格\n");
break;
default:
printf("输入非法数据\n");
}
return 0;
}
注意在case 10处,以及case 5~case 0处均没有break,则匹配到这些case后会顺序执行之后的语句直至出现break或switch()语句结束
练习2:运输公司对用户按路程计算费用。路程越远,每吨千米运费折扣越高。计算运费公式如下:
freight = weight * distance * price * (1-discount);
路程与折扣的关系如下:
s<250:无折扣
250<=s<500:2%折扣
500<=s<1000:5%折扣
1000<=s<2000:8%折扣
2000<=s<3000:10%折扣
3000<=s:15%折扣
要求从键盘输入货运总重(单位吨)、货运路程(单位千米)、每吨千米货运单价(单位元),输出总花费
答案:
#include<stdio.h>
int main()
{
int distance,c;
float price,weight,discount,freight;
printf("请输入货运总重量:");
scanf("%f",&weight);
printf("请输入货运路程:");
scanf("%d",&distance);
printf("请输入单价:");
scanf("%f",&price);
if(distance>=3000)
c=12;
else
c=distance/250;
switch (c)
{
case 0:
discount=0;break;
case 1:
discount=2;break;
case 2:
case 3:
discount=5;break;
case 4:
case 5:
case 6:
case 7:
discount=8;break;
case 8:
case 9:
case 10:
case 11:
discount=10;break;
case 12:
discount=15;break;
}
freight = price * distance *weight * (1-discount/100);
printf("总运费是%f\n",freight);
return 0;
}
标签:case,语句,语言,int,else,printf,input,分支,结构
From: https://blog.csdn.net/qq_21106275/article/details/143820635