《明解C語言》第三章學習筆記

ALFYK24發表於2020-10-24

學習目標:

《明解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;
	}
 } 

相關文章