万江网站建设拓客团队怎么联系
文章目录
- 什么是语句?
- 分支语句(选择结构)
- 循环语句
- goto语句
前言
一、什么是语句?
C语句可分为以下五类:
1. 表达式语句
2. 函数调用语句
3. 控制语句
4. 复合语句
5. 空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。
可分成以下三类:
1. 条件判断语句也叫分支语句:if语句、switch语句;
2. 循环执行语句:do while语句、while语句、for语句;
3. 转向语句:break语句、goto语句、continue语句、return语句。
二、分支语句(选择结构)
if语句
语法结构:if(表达式)语句;if(表达式)语句1;else语句2;//多分支if(表达式1)语句1;else if(表达式2)语句2;else语句3;
#include<stdio.h>int main()
{int age = 0;scanf("%d", &age);//if (age >= 18)// printf("成年\n");//else// printf("未成年\n");if (age < 18)printf("青少年\n");else if (age >= 18 && age < 30)printf("青年\n");else if (age >= 30 && age < 50)printf("中年\n");else if (age >= 50 && age < 80)printf("中老年\n");else if (age >= 80 && age < 100)printf("老年\n");elseprintf("老寿星\n");return 0;
}
如果条件成立,要执行多条语句,怎应该使用代码块。
#include <stdio.h>int main(){if(表达式){语句列表1;}else{语句列表2;}return 0;}
#include <stdio.h>
int main()
{int a = 0;int b = 2;if(a == 1){if(b == 2){printf("hehe\n");}}else{printf("haha\n");} return 0;
}
if语句练习
#include<iostream>
//判断一个数是否是奇数
//int main()
//{
// int n = 0;
// scanf("%d", &n);
//
// if (n % 2 == 1)
// printf("奇数\n");
//
// return 0;
//}//打印1~100之间的奇数
int main()
{int i = 1;while (i <= 100) {if (i % 2 == 1)printf("%d ", i);i++;}return 0;
}
注意:
如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真。
这里的一对 { } 就是一个代码块。
else的匹配:else是和它离的最近的if匹配的。
switch语句
switch语句也是一种分支语句。
常常用于多分支的情况。
if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。这就是switch 语句。switch(整型表达式){语句项;//是一些case语句://如下:case 整形常量表达式:语句;}
#include <stdio.h>
int main()
{int day = 0;switch (day){case 1:printf("星期一\n");break;case 2:printf("星期二\n");break;case 3:printf("星期三\n");break;case 4:printf("星期四\n");break;case 5:printf("星期五\n");break;case 6:printf("星期六\n");break;case 7:printf("星期天\n");break;}return 0;
}
/*
#include <stdio.h>int main()
{int day = 0;switch (day){case 1:case 2:case 3:case 4:case 5:printf("weekday\n");break;case 6:case 7:printf("weekend\n");break;}return 0;
}
*/
switch语句练习
#include <stdio.h>int main()
{int n = 1;int m = 2;switch (n){case 1:m++;case 2:n++;case 3:switch (n){//switch允许嵌套使用case 1:n++;case 2:m++;n++;break;}case 4:m++;break;default:break;}printf("m = %d, n = %d\n", m, n);return 0;
}
程序结果如图所示:
注意:
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
break语句 的实际效果是把语句列表划分为不同的分支部分。
default:写在任何一个 case 标签可以出现的位置。当switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
三、循环语句
while循环
while(表达式)循环语句;
打印1~10的数字
#include <stdio.h>
int main()
{int i = 1;while (i <= 10){printf("%d ", i);i = i + 1;}return 0;
}
for循环
for(表达式1; 表达式2; 表达式3)循环语句;表达式1表达式1为初始化部分,用于初始化循环变量的。表达式2表达式2为条件判断部分,用于判断循环时候终止。表达式3表达式3为调整部分,用于循环条件的调整。
#include <stdio.h>
int main()
{int i = 0;//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)for(i=1; i<=10; i++){printf("%d ", i);}return 0;
}
//请问循环要循环多少次?
#include <stdio.h>int main()
{int i = 0;int k = 0;for(i =0,k=0; k=0; i++,k++)k++;return 0;
}
do-while循环
do语句的语法:
do循环语句;while(表达式);
#include <stdio.h>int main()
{int i = 10;do{printf("%d\n", i);}while(i<10);return 0;
}
猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>void menu()
{printf("**********************************\n");printf("*********** 1.play **********\n");printf("*********** 0.exit **********\n");printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{//时间戳srand(200);//rand函数返回的随机数的范围是(0~32767)//猜数字游戏的实现int ret = rand();printf("%d\n", ret);//猜数字int random_num = rand() % 100 + 1;int input = 0;while (1){printf("请输入猜的数字>:");scanf("%d", &input);if (input > random_num){printf("猜大了\n");}else if (input < random_num){printf("猜小了\n");}else{printf("恭喜你,猜对了\n");break;}}
}int main()
{int input = 0;srand((unsigned)time(NULL));do{menu();printf("请选择>:");scanf("%d", &input);switch (input){case 1:game();break;case 0:break;default:printf("选择错误,请重新输入!\n");break;}} while (input);return 0;
}
注意:break在while循环中的作用: 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。
continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
for循环的判断部分省略了,就意味着判断恒为真。
do-while循环循环体至少执行一次。
四、goto语句
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
goto语句适合的情景:
for(...)for(...){for(...){if(disaster)goto error;}}…error:if(disaster)// 处理错误情况
利用goto语句写一个关机程序
#include <stdio.h>
#include<stdlib.h>
#include<string.h>int main()
{char input[10] = { 0 };system("shutdown -s -t 60");
again:printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");scanf("%s", input);if (0 == strcmp(input, "我是猪")){system("shutdown -a");}else{goto again;}return 0;
}
使用while循环
#include <stdio.h>
#include <stdlib.h>int main()
{char input[10] = {0};system("shutdown -s -t 60");while(1){printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");scanf("%s", input);if(0 == strcmp(input, "我是猪")){system("shutdown -a");break;}}return 0;
}