<>第一节:if语句
练习3-1:编写一段程序,像下面这样输入两个值,如果后者是前者的约数,则显示B是A的约数,否则显示B不是A的约数。
请输入两个整数。
整数A:17
整数B:5
B不是A的约数。
#include<stdio.h> int main() { int a, b; printf("请输入两个整数。\n"); printf("整数A:");
scanf("%d", &a); printf("整数B:"); scanf("%d", &b); if (b % a) puts("B不是A的约数");
else puts("B是A的约数"); return 0; }
练习3-2:请考虑以下,将代码清单3-9最后的else变为else if (no < 0)结果会怎么样?
代码清单3-9代码如下:
#include<stdio.h> int main() { int no; printf("请输入一个整数"); scanf("%d", &no); if
(no == 0) puts("该整数为0"); else if (no > 0) puts("该整数为正数"); else puts("该整数为负数");
return 0; }
代码更换后为:
#include<stdio.h> int main() { int no; printf("请输入一个整数:"); scanf("%d", &no); if
(no == 0) puts("该整数为0"); else if (no > 0) puts("该整数为正数"); else if (no < 0) puts(
"该整数为负数"); return 0; }
运行结果相同!
练习3-3:编写一段程序,像下面这样输入一个整数值,显示出它的绝对值。
请输入一个整数:-8
它的绝对值是:8
#include<stdio.h> int main() { int a; printf("请输入一个整数:"); scanf("%d", &a); if (
a>= 0) printf("绝对值是:%d", a); else printf("绝对值是:%d", -a); return 0; }
练习3-4:编写一段程序,像下面这样输入两个整数值,如果两数值相等,则显示“A和B相等”。如果A大于B则显示“A大于B”。如果A小于B则显示“A小于B”。
#include<stdio.h> int main() { int a, b; printf("请输入两个整数。\n"); printf("整数A:");
scanf("%d", &a); printf("整数B:"); scanf("%d", &b); if (a == b) puts("A和B的数值相同");
else if (a > b) puts("A的值大于B"); else puts("A的值小于B"); return 0; }
练习3-5:编写一段程序,确认相等运算符和关系符的运算结果是1和0
#include<stdio.h> int main(void) { int a; a = (5 >= 3); printf("%d\n", a); a =
(5 <= 3); printf("%d\n", a); a = (5 == 3); printf("%d\n", a); a = (5 != 3);
printf("%d\n", a); return 0; }
练习3-6:编写一段程序,计算出输入的三个整数中的最小值并显示。(使用if语句)
#include<stdio.h> int main() { int a, b, c,min; printf("请输入三个整数。\n"); printf(
"整数1:"); scanf("%d", &a); printf("整数2:"); scanf("%d", &b); printf("整数3:"); scanf
("%d", &c); min = a; if (b < min) { min = b; printf("最小值是:%d", min); } else if (
c< min) { min = c; printf("最小值是:%d", min); } else printf("最小值是:%d", min); return
0; }
练习3-7:编写一段程序,计算出输入的四个整数中的最大值并显示。(使用if语句)
#include<stdio.h> int main() { int a, b, c, d, max1,max2; puts("请输入四个整数");
printf("整数1:"); scanf("%d", &a); printf("整数2:"); scanf("%d", &b); printf("整数3:")
; scanf("%d", &c); printf("整数4:"); scanf("%d", &d); max1 = (a> b) ? a : b; max2
= (c > d) ? c : d; if (max1 > max2) printf("%d", max1); else printf("%d", max2);
return 0; }
练习3-8:使用if语句替换掉315程序中的条件运算符,实现同样的功能
#include<stdio.h> int main() { int a, b; puts("请输入二个整数"); printf("整数1:"); scanf
("%d", &a); printf("整数2:"); scanf("%d", &b); if (a > b) printf("它们的差是%d", a - b)
; if (b > a) printf("它们的差是%d", b - a); return 0; }
练习3-9:使用条件运算替换练习3-6的if语句,实现同样的功能
#include<stdio.h> int main() { int a, b, c, min1,min2; printf("请输入三个整数。\n");
printf("整数1:"); scanf("%d", &a); printf("整数2:"); scanf("%d", &b); printf("整数3:")
; scanf("%d", &c); min1 = (a < b) ? a : b; min2 = (c < b) ? c : b; printf(
"最小值是:%d", (min1 < min2) ? min1 : min2); return 0; }
练习3-10:编写一段程序,像下面这样输入三个整数,如果三个数都相等,则显示"三个值都相等",如果两个相等则显示有两个相等,如都不符合,则显示,全部不相等。
#include<stdio.h> int main() { int a, b, c; puts("请输入三个值"); printf("整数1:");
scanf("%d", &a); printf("整数2:"); scanf("%d", &b); printf("整数3:"); scanf("%d", &c
); if (a == b && b == c) printf("他们三个都相等。"); else if (a == b || a == c || b == c
) printf("他们三个有两个相等。"); else printf("他们三个都不想等"); return 0; }
练习3-11:编写一段程序,像下面那样输入两个整数,如果它们的差值小于等于10,则显示它们的差小于等于10,否则显示他们的差大于11
#include<stdio.h> int main() { int a, b; printf("请输入两个整数\n"); printf("整数A:");
scanf("%d", &a); printf("整数B:"); scanf("%d", &b); if (a - b < 10 || a - b == 10)
printf("它们的差小于等于10"); else printf("它们的差大于等于11"); return 0; }
<>第二节:switch语句
练习3-12:对代码清单3-4的语句进行修改,要求不适用if语句使用switch语句
#include<stdio.h> int main() { int a; printf("请输入一个整数:"); scanf("%d", &a);
switch (a % 2) { case 0: printf("你输入的是偶数"); break; case 1: printf("你输入的是奇数");
break; } return 0; }
练习3-13:对代码清单3-17的程序进行修改,不使用if语句,用switch语句来实现
#include<stdio.h> int main() { int a; printf("请输入月份:"); scanf("%d", &a); switch
(a) { case 3 : case 4 : case 5 : printf("春天!"); break; case 6 : case 7 : case 8
: printf("夏天!"); break; case 9 : case 10: case 11: printf("秋天!"); break; case 12
: case 1 : case 2 : printf("冬天!"); break; default: printf("该月份不存在!!"); break; }
return 0; }
<>总结板块
&&表示与,两者都为真才为真
|| 表示或,两者都为假才为假
a<b ? a : b 如果a<b结果为真,则为a,如果a<b结果为假,则为b
?:语句就是将if语句功能凝结在一个单一语句中。
switch语句会首先对表达式的值进行判断,然后程序会转向case后书写的值与判断结果相等的部分
当程序被执行到break语句的break时,会跳出switch语句
default :xxxx
如果控制表达式的结果与任何一个case都不同的时候,就会跳转到default的标识下执行