1.IF单分支结构
if(表达式) 语句
表达式可以是任意表达式,语句可以是一条语句,也可以是复合语句,执行过程,先判断表达式是否为真,如果为真,那么执行语句,如果为假,那么跳过语句执行后面的程序。
flowchart LR
A(过程A)-->B{表达式}
B--是-->C[语句]
C-->D(结束)
#define _CRT_SECURE_NO_WARNINGS
#include
void main() {
if (0) {
printf("过程0");
}
if (1) {
printf("过程1");
}
if (100) {
printf("过程2");
}
if (-9) {
printf("过程3");
}
}
只要是非0就是真
编程实现,输入C语言课程的成绩 如果大于等于60分,则输出"您及格了"。
伪代码
- 用户输入给变量score赋值
- 如果score大于等于60,输出您及格了
流程图
flowchart LR
A(用户输入)-->B[Score赋值]
B-->C{Score>=60}
C--是-->D(您及格了)
#define _CRT_SECURE_NO_WARNINGS
#include
void main() {
int score;
printf("请输入您的成绩:");
scanf("%d", &score);
if (score >= 60) {
printf("您及格了!");
}
}
输入三个数,按从小到大的顺序输出
伪代码
申明三个接受变量a,b,c
申明一个临时变量tmp
如果a>b 时b与a交换
如果 a>c时 a与c交换
如果 b>c时b与c交换
打印输入a,b,c
flowchart LR
A(申明a,b,c三个变量)-->B[申明tmp临时变量]
B-->C{a>b}
C--是-->D[a与b交换]
D-->E{a>c}
E--是-->F[a与c交换]
F-->G{b>c}
G-->是-->H[b与c交换]
H-->I(打印a,b,c)
#define _CRT_SECURE_NO_WARNINGS
#include
void main() {
int a, b, c;
int tmp;
scanf("%d,%d,%d", &a, &b, &c);
if (a > b) {
tmp = a;
a = b;
b = tmp;
}
if (a > c) {
tmp = a;
a = c;
c = tmp;
}
if (b > c) {
tmp = b;
b = c;
c = tmp;
}
printf("%d,%d,%d", a, b, c);
}
2.IF双支选择结构
双分支if语句是指由某个条件的两种取值(真或假)构成两个分支,任何时候都会执行其中一个分支,这便形成了“二选一”的结构。
flowchart LR
A(过程A)-->B{表达式}
B--是-->C[语句]
B--否-->D[语句]
C-->E(结束)
D-->E(结束)
void main() {
if (1) {
system("dir");
}
else {
system("ipconfig");
}
}
用户随机输入一个数字,与系统随机数比较大小
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
srand((unsigned)time(NULL));//srand()函数来重新“播种”,这样种子就会发生改变
int a = rand() % 10; //产生0~9的随机数,注意10会被整除
int b;
scanf("%d", &b);
if (b>=a) {
printf("您输入的数字%d大于等于%d",b,a);
}
else {
printf("您输入的数字%d小于%d", b, a);
}
}
输入一个整数,判断是偶数还是奇数
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
int a;
scanf("%d", &a);
if (a % 2 == 0) {
printf("您输入的偶数%d", a);
}
else {
printf("您输入的奇数%d", a);
}
}
3.IF多分支选择结构
if else-if语句用于从多个条件执行一个代码。
输入一个整数,如果大于60我们提示“不错,及格了!”,如果大于90提示“优秀”,如果小于60且大于50提示“只差一点了,加油”,小于50提示“不行呀”
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
int a;
scanf("%d", &a);
if (a >= 90) {
printf("优秀!");
}
else if (a >= 60) {
printf("不错,及格了!");
}
else if (a >= 50) {
printf("只差一点了,加油");
}
else
{
printf("不行呀!");
}
}
判断输入的字符是数字,大写字母,小写字母
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int main() {
char a;
scanf("%c", &a);
if (a >= 48 && a <= 57) {
printf("数字!");
}
else if (a >= 65 && a <= 90) {
printf("大写字母");
}
else if (a >= 97 && a <= 122) {
printf("小写字母");
}
else {
printf("其它字符");
}
}
4.IF 嵌套
嵌套if语句就是在一个if语句中嵌套一个或多个if语句
if( boolean_expression 1)
{
/* 当布尔表达式 1 为真时执行 */
if(boolean_expression 2)
{
/* 当布尔表达式 2 为真时执行 */
}
}
输入一个整数,如果大于60我们提示“不错,及格了!”,如果大于90提示“优秀”,如果小于60且大于50提示“只差一点了,加油”,小于50提示“不行呀”
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
int score;
scanf("%d", &score);
if (score >= 60) {
if (score >= 90) {
printf("优秀!");
}
else {
printf("不错,及格了!");
}
}
else {
if (score >= 50) {
printf("只差一点!");
}
else {
printf("不行呀!");
}
}
}
企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
float money;
float bonus;
scanf("%f", &money);
if (money <=100000) {
bonus = money * 0.1;
}
else {
if (money <= 200000) {
bonus = 100000 * 0.1 + (money-100000) * 0.075;
}
else {
if (money <= 400000) {
bonus = money * 0.1 + (money - 200000) * 0.05;
}
else {
if (money <= 600000) {
bonus = money * 0.1 + (money - 400000) * 0.03;
}
else {
if (money <= 1000000) {
bonus = money * 0.1 + (money - 600000) * 0.015;
}
else {
bonus = money * 0.1 + (money - 1000000) * 0.01;
}
}
}
}
}
printf("奖金:%f", bonus);
}
5.Switch语句
一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。
switch(expression){
case constant-expression :
statement(s);
break; /* 可选的 */
case constant-expression :
statement(s);
break; /* 可选的 */
/* 您可以有任意数量的 case 语句 */
default : /* 可选的 */
statement(s);
}
switch 语句必须遵循下面的规则:
- switch 语句中的 expression 是一个常量表达式,必须是一个整型或枚举类型。
- 在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
- case 的 constant-expression 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
- 当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
- 当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
- 不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
- 一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
通过用户输入数字,输出星期几
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
int num;
printf("请输入1到7之间的数字:");
scanf("%d", &num);
if (!(num >= 1 && num <= 7)) {
printf("输入数字不符合要求");
return;
}
switch (num)
{
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
case 7:
printf("星期日");
break;
default:
break;
}
}
case穿透
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
int num;
printf("请输入1到7之间的数字:");
scanf("%d", &num);
if (!(num >= 1 && num <= 7)) {
printf("输入数字不符合要求");
return;
}
switch (num)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("可怜的上班生活!");
break;
case 6:
case 7:
printf("浪起来吧!");
break;
default:
break;
}
}
break是中断操作
每一个case可以想成一个入口
注意:switch结构只进行相等与否的判断,而if.else..结构还可以进行大于小于等范围上的判断。此外,switch无法处理浮点数,只进行整数的判断,而且,case标签值必须是常量,如果涉及到浮点数和变量的判断应当使用if.else.结构。应当从可读性和程序效率多方面综合考虑,适当搭配两种结构,方能写出高质量的代码。
#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main() {
char c;
scanf("%c", &c);
switch (c)
{
case 'A':
printf("优秀");
break;
case 'B':
printf("不错");
break;
case 'C':
printf("加油");
break;
default:
printf("未知!");
break;
}
}
6.习题
1.编写一个程序,用户输入ABCDE其中一个字母,然后输出A表示90分以上,B表示80到90分,C表示70到80分,D表示60到70分,E表示60分以下。输入对于的字母输出对应的表示内容。
int main()
{
char score;
scanf("%c",&score);
switch(score){
case 'A':
printf("90分以上\n");
break;
case 'B':
printf("80到90分\n");
break;
case 'C':
printf("70到80分\n");
break;
case 'D':
printf("60到70分\n");
break;
case 'E':
printf("60分以下\n");
break;
default:
printf("输入错误\n");
}
return 0;
}
2.判断闰年,已知能被 4 整除但不能被 100 整除或者能被 400 整除的年份是闰年。请编程判断一个年份是否是闰年。
#define _CRT_SECURE_NO_WARNINGS
#include
#include
int main()
{
int year;
scanf("%d", &year);
if (year % 4 == 0 && year % 100 != 0)
{
printf("%d 是闰年", year);
}
else if (year % 400 == 0)
{
printf("%d 是闰年", year);
}
else
{
printf("%d 不是闰年", year);
}
return 0;
}
int main()
{
int year;
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
{
printf("%d 是闰年", year);
}
else
{
printf("%d 不是闰年", year);
}
return 0;
}
3.医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。体指数计算公式是:
t = w /(h*h)
其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。根据给定的体指数t计算公式,可判断你的体重属于何种类型:
- 当 t<18 时,为低体重;
- 当 18≤t<25 时,为正常体重;
- 当 25≤t<27 时,为超重体重;
- 当 t≥27 时,为肥胖。
int main()
{
float h, w, t;
printf("请输入你的身高与体重:\n");
scanf("%f,%f", &h, &w);
t = w / (h * h);
if (t < 18)
{
printf("体重太轻了!\n");
}
else if (t >= 18 && t < 25)
{
printf("标准体重!\n");
}
else if (t >= 25 && t < 27)
{
printf("有点胖了喔!\n");
}
else if (t >= 27)
{
printf("太胖了!\n");
}
return 0;
}