提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一位学习C语言的小白,有错误请私信或评论。
本文主要介绍C语言的控制语句~
提示:以下是本篇文章正文内容,下面案例可供参考
控制语句是什么?
控制语句即用来实现对程序流程的分支、循环、转向和返回等进行控制。。
一、分支语句(选择结构)
1 if-else语句
if语句概述
if(表达式)
语句块1
else
语句块2
常见形式
①简化形式
if(表达式)语句块,例如:
if(x>y) printf("%d",x);
②阶梯形式
if(表达式1) 语句块1
else if (表达式2) 语句块2
else if(表达式3) 语句块3
else if (表达式4) 语句块4
③嵌套形式
if()
{
if ()
语句1;
else
语句2 ;
}
else
{
if()
语句3;
else
语句4;
}
简写:
if()
else if()
else
-
语句块,当有若干条语句的时候,必须用{… …}括号起来
-
表达式
- 一般情况下为逻辑表达式或关系表达式
如:if(ab && xy) printf(“%d”,x); - 也可以是任意类型(包括整形,实型,字符型,指针类型)
- 如: if (‘a’) printf(“%d”,a);
- 请区分if(x=1)和 if(1==x)的不同(容易漏写等于号一个等于代表赋值两个比较是否相等)
- 一般情况下为逻辑表达式或关系表达式
作业:输入三个数,比较大小
思路分析:
先比较两个数选出大的那个数与第三个数进行比较若小于第三个数则最大的是第三个数第二大的数选出来的剩下的为最小的,若大于第三个数则需要把第三个数与两者较小的继续进行比较便能的到最后答案。
代码:
方法一:
//从大到小
if(a > b)
{
if(a > c)
{
if(b > c)
{
printf("%d>%d>%d",a,b,c);
}
else
{
printf("%d>%d>%d",a,c,b);
}
}
else
{
printf("%d>%d>%d",c,a,b);
}
}
else
{
if(a > c)
{
printf("%d>%d>%d",b,a,c);
}
else
{
if(b > c)
{
printf("%d>%d>%d",b,c,a);
}
else
{
printf("%d>%d>%d",c,b,a);
}
}
}
方法二:
//从小到大
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,t;
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",a,b,c);
return 0;
}
2 switch语句
多分支选择结构
switch 语句的基本形式
switch(表达式)
{
case 常量表达式1: 语句块1 ;break;
case 常量表达式2: 语句块2; break;
case 常量表达式n: 语句块n: break;
default : 语句块n+1
}
switch语句的使用
每个常量表达式的值必须各不相同,否则将出现矛盾
当表达式的值与case后面的常量表达式的值相等时,就执行case后面的语句。
switch中的表达式可以是整形,字符型表达式或枚举。
case 常量:只起语句标号的作用
break语句用于强行跳出switch体,一般每个case后面应有一个break语句,defalut
分支后的break可以省略
多个case可以执行一条语句
例如:成绩四分制
#include <stdio.h>
int main()
{
int score;
printf("please input your score:");
scanf("%d",&score);
if(score > 100 || score < 0)
{
printf("input error");
}
else
{
switch((int)score/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;
}
二、循环语句
1.goto
如何使用go to来完成1-100的求和
int main()
{
int i=1,sum =0;
loop:
if(i<=100)
{
sum=sum+i;
i++;
goto loop;
}
printf("%d \n",sum);
return 0;
}
当程序有多个出口,使用goto把这些出口集中到一处很方便,特别是函数中有很多重复的工作的时候。
理由是:
无条件跳转易于理解
可以减少嵌套
可以避免那些忘记更新某一个出口点的问题
算是帮助了编译器做优化
2while
while语句构成循环
基本形式:
while(表达式)
{
statements;
}
循环条件:
1.变量初值
2.终止条件
3.变量变化
例子:1-100的求和:
#include<stdio.h>
int main()
{
int i = 0,sum = 0;
while(i<=100)
{
sum += i;
i++;
}
printf("sum = %d",sum);
return 0;
}
3 do-while
do-while构成循环
基本形式
do{
statements;
}while(表达式);
例子:1-100的求和:
#include<stdio.h>
int main()
{
int i = 0,sum = 0;
do{
sum += i;
i++;
}while(i<=100)
printf("sum = %d",sum);
return 0;
}
注:while和do-while的区别:do-至少执行一次,while可以一次不执行。
4 for
一般形式
for(expression1;expressiojn2;expression3)
{
statements;
}
执行过程
- 先求解表达式1,初始值。
- 求解表达式2,若为真,则执行循环体,然后执行步骤三,若为假则执行步骤5
- 求解表达式3
- 转回执行步骤2
- 执行for下面的语句
例子,1-100的求和:
for(i=1;i<=100;i++)
{
sum=sum+i;
}
for语句构成循环
表达式1可以省略,但循环之前应要给循环变量赋值
表达式2可以省略,将陷入死循环
表达式3可以省略,但在循环体中增加循环使变量的值改变的语句
题目:打印九九乘法表
代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
for(int i = 1;i<=9;i++)
{
for(int j = 1 ; j <= i ; j++)
{
printf("%d x %d = %d ",j,i,i*j);
}
printf("\n");
}
return 0;
}
运行结果:
三、 辅助控制语句
1 break
用于从循环体内跳出一层循环体,即提前结束循环
break只能用在循环语句和switch语句中。
例:
for(r=1;r<=10;r++)
{
area=pi*r*r;
if(area>100) break;
printf("%f",area);
}
2 continue
结束本次循环,接着判定下一次是否执行循环
注意break和continue的区别
continue直结束本次循环,而break终止本层循环
例如:打印100~120之间的数(跳过能被3整除的数)
for(int i = 100 ;i <= 120 ;i++)
{
if( i % 3 == 0)
{
continue;
}
printf("%d\n",i);
}
3 return
return语句的一般形式:return(<表达式>)
主要用于终止包含它的函数的执行
若终止的为主函数,则主程序结束
总结
控制语句非常常用,一定要会。
只需要一次判断的可以用if-else
需要从多个当中选择可以用switch
需要多次执行相同的可以用while、dowhile、for。