第一节: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的标识下执行