《明解C语言》第三章学习笔记

学习目标:

《明解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;
	}
 } 
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页