C语言是结构化的程序设计语言,其中包含顺序结构、选择结构、循环结构。
if、switch实现分支结构,for、while、do while实现循环结构
一、if语句
1.1 if
1 if ( 表达式 ) 2 语句表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。
在C语言中,0表示假,非0表示真。
例子:输入一个数为整数,判断是否为奇数
#include<stdio.h> int main() { int num = 0; scanf_s("%d\n", &num); if (num % 2 == 1) printf("%d是奇数\n", num); return 0; }1.2 else
如果一个数不是奇数,那就是偶数。判断任意一个数是奇数还是偶数,需要if...else...语句,
1 if(表达式) 2 语句1 3 else 4 语句2#include<stdio.h> int main() { int num = 0; scanf_s("%d", &num); if (num % 2 == 1) printf("%d是奇数\n", num); else printf("%d是偶数\n", num); return 0; }1.3分支中包含多条语句
默认在if和else语句中只控制一条语句,所以需要使用{ }将代码括起来
#include <stdio.h> int main() { int age = 0; scanf("%d", &age); if(age >= 18) //if 后使⽤{} 控制多条语句-这个块也叫:程序块,或者复合语句 { printf("成年了\n"); printf("可以谈恋爱了\n"); } else //else 后使⽤{}控制多条语句-这个块也叫:程序块,或者复合语句 { printf("未成年\n"); printf("不可以早恋哦\n"); } return 0; }1.4嵌套if
#include <stdio.h> int main() { int num = 0; scanf("%d", &num); if(num == 0) printf("输⼊的数字是0\n"); else if(num > 0) //这⾥的if 相当于嵌套在else语句中,形成了嵌套结构 printf("输⼊的数字是正数\n"); else printf("输⼊的数字是负数\n"); return 0; }1 输⼊⼀个⼈的年龄 2 如果年龄<18岁,打印"少年" 3 如果年龄在18岁⾄44岁打印"⻘年" 4 如果年龄在45岁⾄59岁打印"中⽼年" 5 如果年龄在60岁⾄89岁打印"⽼年" 6 如果90岁及以上打印"⽼寿星"#include<stdio.h> int main() { int age = 0; scanf_s("%d", &age); if (age < 18) printf("少年\n"); else if (age <= 44) printf("青年\n"); else if (age <= 59) printf("中老年\n"); else if (age <= 89) printf("老年\n"); else printf("老寿星\n"); return 0; }二、关系操作符
C语言用于比较的表达式,称为“关系表达式”,主要包含以下6个
>大于运算符 <小于运算符 >=大于等于运算符 <=小于等于运算符 ==相等运算符 !=不相等运算符#include <stdio.h> int main() { int age = 0; scanf("%d", &age); if(age>=18 && age<=36) { printf("⻘年\n"); } return 0; }三、条件操作符
exp1 ? exp2 : exp3#include <stdio.h> int main() { int a = 0; int b = 0; scanf("%d %d", &a, &b); int m = a>b ? a : b; printf("%d\n", m); return 0; }四、逻辑操作符:&& , || , !
4.1逻辑取反运算符 !
#include <stdio.h> int main() { int flag = 0; if(!flag) { printf("do something\n"); } return 0; }4.2逻辑与运算符&&
1 int month = 0; 2 scanf("%d", &month); 3 if(month >= 3 && month <= 5) 4 { 5 printf("春季\n"); 6 }4.3逻辑或运算符 ||
1 int month = 0; 2 scanf("%d", &month); 3 if(month == 12 || month==1 || month == 2) 4 { 5 printf("冬季\n"); 6 }4.4闰年的判断
闰年判断的规则: 1. 能被4整除并且不能被100整除是闰年 2. 能被400整除是闰年#include<stdio.h> int main() { int year = 0; scanf_s("%d", &year); if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) { printf("是闰年\n"); } else { printf("不是闰年\n"); } return 0; }4.5短路
if(month >= 3 && month <= 5)if(month == 12 || month==1 || month == 2)五、switch语句
switch (expression) { case value1: statement case value2: statement ... default: statement }练习: 输⼊⼀个1~7的数字,打印对应的星期⼏ 例如: 输⼊:1 输出:星期⼀ 输⼊:2 输出:星期⼆ 输⼊:3 输出:星期三 输⼊:4 输出:星期四 输⼊:5 输出:星期五 输⼊:6 输出:星期六 输⼊:7 输出:星期天#include<stdio.h> int main() { int day = 0; scanf_s("%d", &day); switch (day) { case 1: case 2: case 3: case 4: case 5: printf("工作日\n"); break; case 6: case 7: printf("休息日\n"); break; default: printf("输入错误\n"); break; } return 0; }六、while循环
输⼊⼀个正的整数,逆序打印这个整数的每⼀位 例如: 输⼊:1234,输出:4 3 2 1 输⼊:521,输出:1 2 5include<stdio.h> int main() { int n = 0; scanf_s("%d", &n); while (n) { printf("%d", n % 10); n /= 10; } return 0; }七、for循环
for(表达式1; 表达式2; 表达式3) 语句;//如果循环体想包含更多的语句,可以加上⼤括号 表达式1 ⽤于循环变量的初始化 表达式2 ⽤于循环结束条件的判断 表达式3 ⽤于循环变量的调整#include<stdio.h> int main() { int i = 0; int sum = 0; for (i = 1; i < 100; i++) { if (i % 3 == 0) sum += i; } printf("%d\n", sum); return 0; }八、do-while循环
do 语句; while(表达式);输⼊⼀个正整数,计算这个整数是⼏位数? 例如: 输⼊:1234 输出:4 输⼊:12 输出:2#include<stdio.h> int main() { int n = 0; scanf_s("%d", &n); int cnt = 0; do { cnt++; n = n / 10; } while (n); printf("%d\n", cnt); return 0; }九、break和continue语句
十、循环的嵌套
练习 找出100~200之间的素数,并打印在屏幕上。 注:素数⼜称质数,只能被1和本⾝整除的数字。题⽬解析: 1. 要从100~200之间找出素数,⾸先得有100~200之间的数,这⾥可以使⽤循环解决。 2. 假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,需要产⽣2~i-1之间的数字,也可以使⽤ 循环解决。 3. 如果2~i-1之间有数字能整除i,则i不是素数,如果都不能整除,则i是素数。#include<stdio.h> int main() { int i = 0; for (i = 100; i <= 200; i++) { int j = 0; int flag = 1; for (j = 2; j < i; j++) { if (i % j == 0) { flag = 0; break; } } if (flag == 1) printf("%d\n", i); } return 0; }完