1. 程式人生 > >《明解C語言》筆記及課後習題答案 【第三章】

《明解C語言》筆記及課後習題答案 【第三章】

練習3-1

/*---輸入兩個整數,判斷後者是否為前者的約數---*/

#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; 
 } 

練習3-2

/*---if語句結尾用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

/*---輸入兩個數並判斷大小---*/

#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;
 } 

練習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-8

/*---使用if語句代替條件按運算子---*/

#include <stdio.h>

int main(void)
{
	int n1, n2;
	
	puts("請輸入兩個整數。");
	printf("整數1:");	scanf("%d",&n1);
	printf("整數2:");	scanf("%d",&n2);
	
	if(n1>n2)
		printf("它們的差是%d。\n",n1-n2);
	else
		printf("它們的差是%d。\n",n2-n1); 
		
	return 0;
}

練習3-9

/*---用條件運算子改寫程式---*/

#include <stdio.h>

int main(void)
{
	int num;
	
	printf("請輸入一個整數:");
	scanf("%d",&num);
	
	(num == 0)?puts("該整數是0"):puts("該整數不是0"); 

        return 0;    
 }   

練習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

/*---用邏輯或運算子計算差值---*/

#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-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;
	}
 } 

關係運算符:比較兩個運算元大小關係的運算子稱為關係運算符。

條件運算子:

                

複合語句(程式塊):

邏輯運算子:

&&(邏輯與運算子)            ||(邏輯或運算子)           

switch語句: