c语言控制语句
1. if—else语句
if语句概述:
if(判断表达式){
语句块1
}else{
语句块2
}
语句块:当有若干条语句时,必须用{…}括起来。
格式含义为:如果 表达式 为真 做语句块1,否则 做语句块2。
if—else语句大致有三种表示形式 ,接下来一一介绍
1.1 标准格式
if(表达式){
语句块1;
}else{
语句块2;
}
int main(int argc, const char *argv[])
{
int a ;
scanf("%d", &a);
if (a > 10)
{
printf(" a > 10\n");
}
else
{
printf(" a <= 10\n");
}
return 0;
}
1.2 嵌套形式
if()
if() 语句块1
else 语句块2
else
if() 语句块3
else() 语句块4
#include <stdio.h>
int main()
{
float a;
printf("请输入一个分数:");
scanf("%f",&a);
if(a>=100||a<=0)
printf("输入错误请重新输入(输入的范围应为0~100)\n");
else
{
if(a>=90)
printf("你的成绩为:A\n");
else
{
if(a>=70)
printf("你的成绩为:B\n");
else
{
if(a>=60)
printf("你的成绩为:C\n");
else
printf("你的成绩为:D\n");
}
}
}
return 0;
}
注意事项:
语句块:当有若干条语句时,必须用{……}括起来。
表达式:
1.一般情况下为逻辑表达式或关系表达式
如:if(a==b&&x==y)printf(”a=b,x=y“);
2.也可以是任意类型(包括整型、实型、字符型、指数类型)
如:if('a')printf("%d",'a');
3.请区分if(x=1)与if(x==1)的不同。
练习:简单的排序(从小到大)
#include <stdio.h>
int main()
{
int a=5,b=9,c=2,t;
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;
}
当然我写的并不够简洁,大家也可以写的更简单一点
1.3 阶梯形式if语句
if(表达式1)语句块1
else if(表达式2)语句块2
else if(表达式3)语句块3
else if(表达式3)语句块3
……
else 语句块n
练习: 输入成绩获得相应的评分
#include <stdio.h>
int main()
{
float a;
printf("请输入一个分数:");
scanf("%f",&a);
if(a>=100||a<=0)
printf("输入错误请重新输入(输入的范围应为0~100)\n");
else if(a>=90)
printf("你的成绩为:A\n");
else if(a>=70)
printf("你的成绩为:B\n");
else if(a>=60)
printf("你的成绩为:C\n");
else
printf("你的成绩为:D\n");
return 0;
}
练习:如何判断是否为闰年(输入一个年份,到2500年里面那些是闰年那些不是)
#include <stdio.h>
int main()
{
int y,n=0;
scanf("%d",&y);
while(y<=2500)
{
if(y%4==0&&y%100!=0)
{
printf("yes:y=%d\n",y);
n++;
}
else if(y%100==0&&y%400==0)
{
printf("yes:y=%d\n",y);
n++;
}
else
printf("no:y=%d\n",y);
y++;
}
printf("%d\n",n);
return 0;
}
2. switch语句
多分支选择结构
switch语句的基本形式:
switch(表达式)
{case 常量表达式1:语句块1;break;
case 常量表达式2:语句块2;break;
……
case 常量表达式n:语句块n;beak;
default(一般默认最后):语句块n+1
}
switch语句的使用注意事项:
1. 每个常量表达式的值必须各不相同,否则将会出现矛盾。
2. 当表达式的值与case后面的常量表达式值相等时,就执行case后面的语句。
3. switch中的表达式可以是整型、字符型表达式或枚举。
4. case常量:只起语句标号的作用。
5. break语句用于强行跳出switch体,一般每个case后面应有一个break语句,default分支的后的break可以省略。(但是如果强行把default放在前面也要加上break)
6. 多个case可以执行一组语句。
7. 如果在语句块后面不加break,程序就会往下执行一直找到break,如果一直找不到就会运行完结束。如果中途遇到break就会中途跳出。
练习:重新写输入成绩那段代码出评分那段代码
#include <stdio.h>
int main()
{
float core;
scanf("%f",&core);
if(core<0||core>100)
printf("请重新输入(范围:0~100)\n");
else
switch((int)core/10)
{
case 10:
case 9:printf("A\n");break;
case 8:
case 7:printf("B\n");break;
case 6:printf("c\n");break;
default:printf("D\n");
}
return 0;
}
练习:编写程序实现功能:读入两个整数(data1和data2)和一个运算符(op),计算表达式data1 opdata2 的值,其中op可以为+、-、*、/四个符号中的任种(用switch语句实现);
int main(int argc, const char *argv[])
{
//获取数
int data_a = 0, data_b = 0;
char op = 0;
int sum = 0;
printf("please input num:\n");
int ch = scanf("%d %c %d", &data_a,&op, &data_b);
// getchar();
printf("ch = %d\n", ch);
printf("get: %d%c%d\n",data_a, op,data_b);
switch( op ){
case '+':
sum = data_a + data_b;
printf("sum= %d\n", sum);
break;
case '-':
sum = data_a - data_b;
printf("sum= %d\n", sum);2.循环语句
break;
case '*':
sum = data_a * data_b;
printf("sum= %d\n", sum);
break;
case '/':
sum = data_a / data_b;
printf("sum= %d\n", sum);
break;
default:
printf("not need!\n");
//break;
}
return 0;
}