c语言是结构化的程序设计语言:顺序结构,选择结构,循环结构。
1.什么是语句?c语句可分为以下五类
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持三种结构:顺序结构、选择结构、循环结构),它们由特定的语句定义符组成,C语言有九种控制语句。 可分成以下三类:
-
条件判断语句也叫分支语句:if语句、switch语句;
-
循环执行语句:do while语句、while语句、for语句;
-
转向语句:break语句、goto语句、continue语句、return语句。
2.分支语句(选择结构) 2.1if语句
//单分支 if(表达式) 语句; //双分支 if(表达式) 语句1; else 语句2; //多分支 if(表达式1) 语句1; else if(表达式2) 语句2; … else 语句n;2.1.1悬空else
#includeint main() { int a = 0; int b = 2; if(a == 1) if(b == 2) printf("hehen"); else printf("hahan"); return 0; }
2.1.2练习
1.判断一个数是否为奇数
#includeint main() { int n=0; scanf("%d",&n); if(n%2=1) { printf("%d为奇数",n); } else { printf("%d为偶数",n); } return 0; }
2.输出1-100之间的奇数
#include2.2switch语句int main() { int i=1; while(i<100) { printf("%dn",i); i+=2; } return 0; }
switch(整形表达式) case 整形常量: 语句; break; default://默认 语句; break;
switch允许嵌套使用
编程好习惯
在最后一个 case 语句的后面加上一条 break语句。 (之所以这么写是可以避免出现在以前的最后一个 case 语句后面忘了添加 break语句)。
在每个 switch 语句中都放一条default子句是个好习惯,甚至可以在后边再加一个 break 。
3.循环语句 3.1while循环while(表达式)
循环语句;
while(getchar()!='n')
{
;//清理缓冲区
}
3.2for循环
for(表达式1;表达式2;表达式3)
{
循环语句;
}
表达式1为初始化部分,用于初始化循环变量;
表达式2为条件判断部分,用于用于判断循环时候终止;
表达式3为调整部分,用于循环条件的调整。
建议:
-
不可在for 循环体内修改循环变量,防止 for 循环失去控制。
-
建议for语句的循环控制变量的取值采用“前闭后开区间”写法。
do
循环语句;
while(表达式);//至少执行1次
3.4练习
1.计算n的阶乘
#include2.计算1!+2!+……+10!int main() { int n = 0; int i = 0; int sum = 1; scanf("%d", &n); for (i = 1; i <= n; i++) { sum *= i; } printf("%d", sum); return 0; }
#include3.在一个有序数组中查找具体的某个数字n。(讲解二分查找/折半查找)int main() { int n = 0; int i = 0; int ret = 1; int sum = 0; scanf("%d", &n); for (i = 1; i <= n; i++) { ret *= i; sum += ret; } printf("%d", sum); return 0; }
#include4.编写代码,演示多个字符从两端移动,向中间汇聚。int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,10 }; int sz = sizeof(arr) / sizeof(arr[0]);//求数组个数 int left = 0; int right = sz - 1;//最右边元素下标数为数组个数减去1 int k = 0; scanf("%d", &k); int mid = 0; while (left<=right) { mid = (left + right) / 2; if (arr[mid] < k) { left = mid + 1; } else if (arr[mid] > k) { right = mid - 1; } else { printf("找到了,k的下标为%dn", mid); break;//此处不添加break程序死循环 } } if (left > right) { printf("找不到n"); } return 0; }
#include5.编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。)#include #include #include int main() { char arr1[] = { "welcome to bit!!!!!" }; char arr2[] = { "###################" }; int left = 0; int right = strlen(arr1) - 1;//strlen(arr1)求得字符数组arr1的元素个数 while (left <= right) { arr2[left] = arr1[left]; arr2[right] = arr1[right]; left++; right--; Sleep(1000);//Sleep函数表示延迟(n)毫秒后执行下个程序,需引用头文件 system("cls");//cls命令表示清空屏幕,system函数需引用头文件 printf("%sn", arr2); } return 0; }
#include6.猜数字游戏#include int main() { char password[20] = { 0 }; int i = 0; printf("请输入密码n"); for (i = 0; i < 3; i++)//3次输入密码机会 { scanf("%s", password); if (strcmp(password, "bitbit") == 0) { printf("密码正确n"); break;//密码正确后要跳出循环 } else { printf("密码错误,请重新输入n"); } } if (i == 3) { printf("密码输入错误3次,退出程序n"); } return 0; }
#include#include #include void meun() { printf("######################n"); printf("###### 1.play ########n"); printf("###### 0.exit ########n"); printf("######################n"); } void game() { int guess = 0; int ret = rand() % 100 + 1;//随机生成一个1-100的数 //rand函数可以生成随机数 //返回一个0~RAND_MAX(32767) while (1) { printf("请猜数字"); scanf("%d", &guess); if (guess > ret) { printf("猜大了n"); } else if (guess < ret) { printf("猜小了n"); } else { printf("猜对了n"); break; } } } int main() { int input = 0; srand((unsigned int)time(NULL)); do { meun(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 1: game();//猜数字游戏通过一个函数实现 break; case 0: printf("退出游戏n"); break; default: printf("输入错误,请重新输入n"); break; } } while (input); return 0; }
4.goto语句
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。 例如:一次跳出两层或多层循环。 多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。
4.1goto语句示例#include推荐书籍#include #include int main() { char input[20] = { 0 }; system("shutdown -s -t 60"); again: printf("你的电脑将在1分钟内关机,如果想停止关机,请输入我是猪n"); scanf("%s", input); if(strcmp(input,"我是猪") ==0) { system("shutdown -a"); printf("电脑已停止关机n"); } else { goto again; } return 0; }
《高质量C++/C编程指南》(林锐)(代码风格讲解)



