《明解C語言》示例程式碼和練習程式碼[第3章]
阿新 • • 發佈:2019-02-10
第3章 分支結構程式
示例程式碼:
示例程式碼 3-1
/*
輸入的整數能被5整除嗎
*/
#include <stdio.h>
int main(void)
{
int vx;
printf("請輸入一個整數:");
scanf("%d", &vx);
if (vx % 5)
puts("輸入的整數不能被5整除。");
return (0);
}
示例程式碼 3-2
/* 輸入的整數是奇數嗎 */ #include <stdio.h> int main(void) { int no; printf("請輸入一個整數:"); scanf("%d", &no); if (no % 2) puts("輸入的整數是奇數。"); return (0); }
示例程式碼 3-3
/*
輸入的整數能否被5整除
*/
#include <stdio.h>
int main(void)
{
int vx;
printf("請輸入一個整數:");
scanf("%d", &vx);
if (vx % 5)
puts("該整數不能被5整除。");
else
puts("該整數能被5整除。");
return (0);
}
示例程式碼 3-4
/* 輸入的整數是奇數還是偶數 */ #include <stdio.h> int main(void) { int no; printf("請輸入一個整數:"); scanf("%d", &no); if (no % 2) puts("該整數是奇數。"); else puts("該整數是偶數。"); return (0); }
示例程式碼 3-5
/*
輸入的整數值是否為0
*/
#include <stdio.h>
int main(void)
{
int num;
printf("請輸入一個整數:");
scanf("%d", &num);
if (num)
puts("該整數不是0。");
else
puts("該整數是0。");
return (0);
}
示例程式碼 3-6
/* 輸入的兩個整數相等嗎 */ #include <stdio.h> int main(void) { int x1, x2; puts("請輸入兩個整數。"); printf("整數1:"); scanf("%d", &x1); printf("整數2:"); scanf("%d", &x2); if (x1 == x2) printf("它們相等。\n"); else printf("它們不相等。\n"); return (0); }
示例程式碼 3-7
/*
輸入的兩個整數相等嗎 (第二版)
*/
#include <stdio.h>
int main(void)
{
int x1, x2;
puts("請輸入兩個整數。");
printf("整數1:"); scanf("%d", &x1);
printf("整數2:"); scanf("%d", &x2);
if (x1 != x2)
printf("它們不相等。\n");
else
printf("它們相等。\n");
return (0);
}
示例程式碼 3-8
/*
個位數是5嗎
*/
#include <stdio.h>
int main(void)
{
int vx;
printf("請輸入一個整數:");
scanf("%d", &vx);
if (vx % 10 == 5)
puts("該整數的個位數是5。");
return (0);
}
示例程式碼 3-9
/*
判斷輸入整數的符號
*/
#include <stdio.h>
int main(void)
{
int no;
printf("請輸入一個整數:");
scanf("%d", &no);
if (no == 0)
puts("該整數為0。");
else if (no > 0)
puts("該整數為正數。");
else
puts("該整數為負數。");
return (0);
}
示例程式碼 3-10
/*
顯示出輸入的兩個整數中較大的數
*/
#include <stdio.h>
int main(void)
{
int n1, n2;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
if (n1 > n2)
printf("較大的數是%d。\n", n1);
else
printf("較大的數是%d。\n", n2);
return (0);
}
示例程式碼 3-11
/*
顯示出輸入的兩個整數中較大的數並顯示
*/
#include <stdio.h>
int main(void)
{
int n1, n2, max;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
if (n1 > n2)
max = n1;
else
max = n2;
printf("較大的數是%d。\n", max);
return (0);
}
示例程式碼 3-12
/*
計算輸入的三個整數中的最大值並顯示
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3, max;
puts("請輸入三個整數。");
printf("整數1:"); scanf("%d", &n1);
printf("整數2:"); scanf("%d", &n2);
printf("整數3:"); scanf("%d", &n3);
max = n1;
if (n2 > max) max = n2;
if (n3 > max) max = n3;
printf("最大值是%d。\n", max);
return (0);
}
示例程式碼 3-13
/*
計算輸入的兩個整數中較大的數並顯示(條件運算子)
*/
#include <stdio.h>
int main(void)
{
int n1, n2, max;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
max = (n1 > n2) ? n1 : n2; // 將較大的值賦給max
printf("較大的數是%d。\n", max);
return (0);
}
示例程式碼 3-14
/*
計算輸入的兩個整數的差並顯示
*/
#include <stdio.h>
int main(void)
{
int n1, n2;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
printf("它們的差是%d。\n", (n1 > n2) ? n1 - n2 : n2 - n1);
return (0);
}
示例程式碼 3-15
/*
計算輸入的兩個整數中較大數和較小數並顯示
*/
#include <stdio.h>
int main(void)
{
int n1, n2, max, min;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
if (n1 > n2) {
max = n1;
min = n2;
} else {
max = n2;
min = n1;
}
printf("較大的數是%d。\n", max);
printf("較小的數是%d。\n", min);
return (0);
}
示例程式碼 3-16
/*
顯示輸入月份所處的季節
*/
#include <stdio.h>
int main(void)
{
int month; // 月
printf("請輸入月份:");
scanf("%d", &month);
if (month >= 3 && month <= 5)
puts("春天");
else if (month >= 6 && month <= 8)
puts("夏天");
else if (month >= 9 && month <= 11)
puts("秋天");
else if (month == 1 || month == 2 || month == 12)
puts("冬天");
else
puts("輸入月份不存在!!\a");
return (0);
}
示例程式碼 3-17
/*
顯示出輸入整數除以3的餘數
*/
#include <stdio.h>
int main(void)
{
int num;
printf("請輸入一個整數:");
scanf("%d", &num);
if (num % 3 == 0)
puts("該數能被3整除。");
else if (num % 3 == 1)
puts("該數除以3的餘數是1。");
else
puts("該數除以3的餘數是2。");
return (0);
}
示例程式碼 3-18
/*
顯示出輸入整數除以3的餘數 (switch語句)
*/
#include <stdio.h>
int main(void)
{
int num;
printf("請輸入一個整數:");
scanf("%d", &num);
switch (num % 3) {
case 0:
puts("該數能被3整除。");
break;
case 1:
puts("該數除以3的餘數是1。");
break;
case 2:
puts("該數除以3的餘數是2。");
}
return (0);
}
示例程式碼 3-19
/*
確認switch語句動作的程式
*/
#include <stdio.h>
int main(void)
{
int sw;
printf("請輸入一個整數:");
scanf("%d", &sw);
switch (sw) {
case 1: puts("A"); puts("B"); break;
case 2: puts("C"); break;
case 5: puts("D"); break;
case 6:
case 7: puts("E"); break;
default : puts("F"); break;
}
return (0);
}
練習程式碼 :
練習程式碼 e3-1
/*
判斷是否為約數
*/
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int a, b;
puts("請輸入兩個整數。");
printf("整數A:"); scanf("%d", &a);
printf("整數B:"); scanf("%d", &b);
if (a % b)
printf("B不是A的約數。\n");
else
printf("B是A的約數。\n");
return (0);
}
練習程式碼 e3-2
/*
關係運算符
*/
#include <stdio.h>
int main(void)
{
int a, b;
puts("輸入兩個整數:");
printf("整數a:"); scanf("%d", &a);
printf("整數b:"); scanf("%d", &b);
printf("%d > %d, %d\n", a, b, a > b);
printf("%d < %d, %d\n", a, b, a < b);
printf("%d = %d, %d\n", a, b, a == b);
printf("%d >= %d, %d\n", a, b, a >= b);
printf("%d <= %d, %d\n", a, b, a <= b);
return (0);
}
練習程式碼 e3-3
/*
顯示絕對值
*/
#include <stdio.h>
int main(void)
{
int no;
printf("請輸入一個整數:");
scanf("%d", &no);
if (no < 0)
printf("絕對值是%d。\n", -no);
else
printf("絕對值是%d。\n", no);
return (0);
}
練習程式碼 e3-4
/*
判斷大小
*/
#include <stdio.h>
int main(void)
{
int n1, n2;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
if (n1 < n2)
printf("A小於B。\n");
else if (n1 > n2)
printf("A大於B。\n");
else
printf("A等於B。\n");
return (0);
}
練習程式碼 e3-5
/*
計算輸入的三個整數中的最小值並顯示
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3, min;
puts("請輸入三個整數。");
printf("整數1:"); scanf("%d", &n1);
printf("整數2:"); scanf("%d", &n2);
printf("整數3:"); scanf("%d", &n3);
min = n1;
if (n2 < min) min = n2;
if (n3 < min) min = n3;
printf("最小值是%d。\n", min);
return (0);
}
練習程式碼 e3-6
/*
計算輸入的四個整數中的最大值並顯示
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3, n4, max;
puts("請輸入四個整數。");
printf("整數1:"); scanf("%d", &n1);
printf("整數2:"); scanf("%d", &n2);
printf("整數3:"); scanf("%d", &n3);
printf("整數4:"); scanf("%d", &n4);
max = n1;
if (n2 > max) max = n2;
if (n3 > max) max = n3;
if (n4 > max) max = n4;
printf("最大值是%d。\n", max);
return (0);
}
練習程式碼 e3-7
/*
計算輸入的兩個整數的差並顯示 (使用if語句)
*/
#include <stdio.h>
int main(void)
{
int n1, n2;
puts("請輸入兩個整數:");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
if (n1 > n2)
printf("它們的差是%d。\n", n1 - n2);
else
printf("它們的差是%d。\n", n2 - n1);
return (0);
}
練習程式碼 e3-8
/*
計算輸入的三個整數中的最小值並顯示 (使用條件運算子)
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3, min;
puts("請輸入三個整數。");
printf("整數1:"); scanf("%d", &n1);
printf("整數2:"); scanf("%d", &n2);
printf("整數3:"); scanf("%d", &n3);
min = n1;
if (n2 < min) min = n2;
if (n3 < min) min = n3;
printf("最小值是%d。\n", n3 < (min = (n1 < n2) ? n1 : n2) ? n3 : min);
return (0);
}
練習程式碼 e3-9
/*
判斷三個整數是否相等
*/
#include <stdio.h>
int main(void)
{
int n1, n2, n3;
puts("請輸入三個整數。");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
printf("整數C:"); scanf("%d", &n3);
if (n1 == n2 && n2 == n3)
puts("三個值都相等");
else if (n1 == n2 || n1 == n3 || n2 == n3)
puts("有兩個值相等");
else
puts("三個值各不相等");
return (0);
}
練習程式碼 e3-10
/*
判斷兩個整數的差(使用邏輯或運算子)
*/
#include <stdio.h>
int main(void)
{
int n1, n2, max, min;
puts("請輸入兩個整數。");
printf("整數A:"); scanf("%d", &n1);
printf("整數B:"); scanf("%d", &n2);
max = (n1 - n2) > 0 ? n1 : n2;
min = (n1 - n2) < 0 ? n1 : n2;
if (max - min < 10 || max - min == 0)
puts("它們的差小於等於10");
else
puts("它們的差大於等於11");
return (0);
}
練習程式碼 e3-11
/*
輸入的整數是奇數還是偶數 (switch語句)
*/
#include <stdio.h>
int main(void)
{
int no;
printf("請輸入一個整數:");
scanf("%d", &no);
switch (no % 2) {
case 0 : puts("該整數是偶數。"); break;
case 1 : puts("該整數是奇數。"); break;
}
return (0);
}
練習程式碼 e3-12
/*
顯示輸入月份所處的季節 (switch語句)
*/
#include <stdio.h>
int main(void)
{
int month; // 月
printf("請輸入月份:");
scanf("%d", &month);
switch (month) {
case 1 :
case 2 :
case 12 : puts("冬天"); break;
case 3 :
case 4 :
case 5 : puts("春天"); break;
case 6 :
case 7 :
case 8 : puts("夏天"); break;
case 9 :
case 10 :
case 11 : puts("秋天"); break;
default : puts("輸入月份不存在!!\a"); break;
}
return (0);
}