学习目标:
《明解C语言》第3版
第三章
分支结构程序
学习内容:
3-1 if语句
3-2 switch语句
学习时间:
2020年10月24日晚七至九点
学习笔记:
3-1 if语句
#include<stdio.h>
int main(void)
{
int no;
printf("请输入一个整数:");scanf("%d",&no);
if(no%5)
puts("输入的整数不能被5整除");
return 0;
}
#include<stdio.h>
int main(void)
{
int no;
printf("请输入一个整数:");scanf("%d",&no);
if(no%2)
puts("输入的整数是奇数");
else
puts("输入的整数是偶数");
return 0;
}
if(表达式) 语句1 else 语句2;
<判断表达式的值> 若语句1成立则执行语句1,反之执行语句2。
练习3-1
/* 输入两个整数,如果后者是前者的约数则显示B是A的约数反之显示B不是A的约数 */
#include <stdio.h>
int main(void)
{
int a,b;
puts("请输入两个整数。");
printf("整数a:");scanf("%d",&a);
printf("整数b:");scanf("%d",&b);
if(a%b)
puts("b不为a的公约数");
else
puts("b为a的公约数");
return 0;
}
2.相等运算符
#include<stdi.h>
int main(void)
{
int n1,n2;
puts("请输入两个整数");
printf("整数1:");scanf("%d",&n1);
printf("整数2:");scanf("%d",&n2);
if(n1==n2)
puts("它们相等");
else
puts("它们不相等");
return 0;
== 运算符。会对两侧操作数进行比较,如果他们相等则结果为1,如果不相等结果为0。
!=运算符是用来判断两个操作数是否不相等。
这两种运算符统称为相等运算符。
3.关系运算符
#include<stdio.h>
int main(void)
{
int no;
printf("请输入一个整数");scnaf("%d",&no);
if(no==)
puts("该整数为0");
else if(no>0)
puts("该整数为正数");
else
puts("该整数为负数");
return 0;
}
< 运算符 > 运算符 <=运算符 >=运算符
成立时结果均为1,不成立时结果均为0.
练习3-2
/* if语句结尾else变为else if结果会怎样 */
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
if(a == 0)
puts("a为0");
else if(a < 0 )
puts("a为负数");
else if(a > 0 )
puts("a为正数");
return 0;
}
练习3-3
/* 输出一个数的绝对值 */
#include <stdio.h>
int main(void)
{
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(void)
{
int a, b;
puts("请输入两个数。");
printf("整数A:");scanf("%d",&a);
printf("整数B:");scanf("%d",&b);
if(a == b)
printf("a和b相等");
else if(a >b )
printf("a大于b");
else
printf("a小于b");
return 0;
}
4.条件运算符
#include<stdio.h>
int main(void)
{
int n1,n2,max;
puts("请输入两个整数");
printf("整数1:");scanf("%d",&n1);
printf("整数2:");scanf("%d",&n2);
max=(n1>n2)?n1:n2;
printf("较大的数是%d\n",max);
return 0;
}
a?b:c 条件运算符,如果a不为0,则结果是b的值,否则结果为c的值。
练习3-6
/* 计算出输入的三个整数中的最小值并显示 */
#include <stdio.h>
int main(void)
{
int a, b, c,min;
puts("请输入三个整数.");
printf("整数a:");scanf("%d",&a);
printf("整数b:");scanf("%d",&b);
printf("整数c:");scanf("%d",&c);
min = a;
if(b < min)
min = b;
if(c < min)
min = c;
printf("最小值为%d",min);
return 0;
}
练习3-7
/* 输入的四个整数中的最大值并显示 */
#include <stdio.h>
int main(void)
{
int a, b, c,max;
puts("请输入三个整数.");
printf("整数a:");scanf("%d",&a);
printf("整数b:");scanf("%d",&b);
printf("整数c:");scanf("%d",&c);
max = a;
if(b > max)
max = b;
if(c > max)
max = c;
printf("最大值为%d",max);
return 0;
}
练习3-9
/* 用条件运算符改写程序 */
#include <stdio.h>
int main(void)
{
int num;
printf("请输入一个整数:");scanf("%d",&num);
(num == 0)?puts("该整数是0"):puts("该整数不是0");
return 0;
}
5.逻辑运算符
#include<stdio.h>
int main(void)
{
int month;
printf("请输入月份:");scanf("%d",&month);
if(month>=3 && month<=5)
printf("%d月是春季\n",month);
else if(month>=6 && month<=8)
printf("%d月是夏季\n",month);
else if(month>=9 && month<=11)
printf("%d月是秋季\n",month);
else if(month == 1 || month == 2 || month == 12)
printf("%d月是冬季\n",month);
else
printf("%d月不存在\n",month);
return 0;
}
a && b “且”的判断
a | | b “或”的判断
两者为逻辑运算符。
练习3-10
/* 输入三个数,如果有三个相等,则输出有三个值相等,
以此类推,输出三种不同结果。 */
#include<stdio.h>
int main(void)
{
int a,b,c;
puts("请输入三个整数:");
printf("整数A:");scanf("%d",&a);
printf("整数B:");scanf("%d",&b);
printf("整数C:");scanf("%d",&c);
if(a==b&&b==c)
printf("三个值都相等");
else if(a==b||b==c||a==c)
printf("有两个值相等");
else
printf("三个值都不相等");
return 0;
}
练习3-11
/* 用逻辑或运算符计算两个整数插值是否小于10 */
#include <stdio.h>
int main(void)
{
int a, b;
puts("请输入两个整数。");
printf("整数A:"); scanf("%d",&a);
printf("整数B:"); scanf("%d",&b);
if((a-b) <= 10 || (a-b) == 0)
printf("它们的差小于等于10。");
else
puts("它们的差大于等于11。");
return 0;
}
3-2 switch语句
switch语句和break语句
#include<stdio.h>
int main(void)
{
int no;
printf("请输入一个整数");scanf("%d",&no);
switch(no%3){
case 0:puts("该数能被3整除"); break;
case 1:puts("该数除以3的余数是1 ");break;
case 2:puts("该数除以3的余数是2"); break;
}
return 0;
}
像case 1 这样用来表示程序跳转的标识称为标签。
case 和 1 之间必须有空格,不可不加空格写成case1.
break语句是switch语句执行结束。
if (p==1)
c=3;
else if(p==2)
c=5;
else if(p==3)
c=7;
else if(q==4)
c=9;
switch
switch(p){
case 1:c=3;break;
case 2:c=5;break;
case 3:c=7;break;
default:if(q==4) c=9;
}
if 语句转化为switch语句。
当任何一个case都不一致的时候,程序会跳转到 "default:"继续执行。
练习3-12
/* 用swith语句改写程序 */
#include <stdio.h>
int main(void)
{
int no;
printf("请输入一个整数:");
scanf("%d",&no);
switch(no%2){
case 0: puts("该整数是偶数。"); break;
default: puts("该数是奇数。");
}
return 0;
}
练习3-13
/* 使用switch语句修改程序 */
#include <stdio.h>
int main(void)
{
int month;
printf("请输入月份:");scanf("%d",&month);
switch (month) {
case 3:
case 4:
case 5:
printf("%d月是春季。\n",month); break;
case 6:
case 7:
case 8:
printf("%d月是夏季。\n",month); break;
case 9:
case 10:
case 11:
printf("%d月是秋季。\n",month); break;
case 12:
case 1:
case 2:
printf("%d月是冬季。\n",month); break;
default :
printf("%d月不存在!!\a\n",month);
return 0;
}
}