心智圖資源庫 C語言題16——20
這是一篇關於C語言題16——20的思維導圖,主要內容包括:20、 C 語言實例- 判斷字母,20、 C 語言實例- 判斷字母,19、 C 語言實例- 判斷正數負數零,18、 C 語言實例- 判斷閏年,17、 C 語言實例- 一元二次方程,16、 C 語言實例- 判斷三個數中的最大數。
編輯於2025-02-13 20:37:16我——16——20
16、 C 語言實例 - 判斷三個數中的最大數
方法一:使用 if - else 語句 這是最常見和直接的方法,使用條件語句來比較三個數。
#include <stdio.h>
int main() {
int num1, num2, num3, max;
printf("請輸入三個整數: ");
scanf("%d %d %d", &num1, &num2, &num3);
if (num1 >= num2 && num1 >= num3) {
max = num1;
}
else if (num2 >= num1 && num2 >= num3) {
max = num2;
}
else {
max = num3;
}
printf("最大數是: %d ", max);
return 0;
}
方法二:使用嵌套的 if 語句 這種方法通過嵌套的 if 語句來逐步比較兩個數。
#include <stdio.h>
int main() {
int num1, num2, num3, max;
printf("請輸入三個整數: ");
scanf("%d %d %d", &num1, &num2, &num3);
if (num1 >= num2) {
if (num1 >= num3) {
max = num1;
}
else {
max = num3;
}
}
else {
if (num2 >= num3) {
max = num2;
}
else {
max = num3;
}
}
printf("最大數是: %d ", max);
return 0;
}
方法三:使用函數 將判斷最大數的邏輯封裝成一個函數,使代碼更清晰和可複用。
#include <stdio.h>
int findMax(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
return max;
}
int main() {
int num1, num2, num3;
printf("請輸入三個整數: ");
scanf("%d %d %d", &num1, &num2, &num3);
int max = findMax(num1, num2, num3);
printf("最大數是: %d ", max);
return 0;
}
方法四:使用指針和數組 這種方法通過數組和指針來簡化代碼。
#include <stdio.h>
int main() {
int num[3], max;
printf("請輸入三個整數: ");
for (int i = 0; i < 3; i ) {
scanf("%d", &num[i]);
}
max = num[0];
for (int i = 1; i < 3; i ) {
if (num[i] > max) {
max = num[i];
}
}
printf("最大數是: %d ", max);
return 0;
}
方法五:使用三目運算符 三目運算符是一種簡潔的方式來處理簡單的條件判斷。
#include <stdio.h>
int main() {
int num1, num2, num3, max;
printf("請輸入三個整數: ");
scanf("%d %d %d", &num1, &num2, &num3);
max = (num1 >= num2) ? ((num1 >= num3) ? num1 : num3) : ((num2 >= num3) ? num2 : num3);
printf("最大數是: %d ", max);
return 0;
}
方法六:使用標準庫函數 fmax 這種方法利用了C標準庫中的 fmax 函數來簡化代碼,但需要注意 fmax 函數適用於浮點數。
#include <stdio.h>
#include <math.h>
int main() {
double num1, num2, num3, max;
printf("請輸入三個數: ");
scanf("%lf %lf %lf", &num1, &num2, &num3);
max = fmax(num1, fmax(num2, num3));
printf("最大數是: %.2f ", max);
return 0;
}
循環
方法一:使用 for 循環 這是最常見和直接的方法,通過 for 循環來讀取輸入並比較三個數。 */
#include <stdio.h>
int main() {
int num[3], max;
int i;
printf("請輸入三個整數: ");
for (i = 0; i < 3; i ) {
scanf("%d", &num[i]);
}
// 假設第一個數是最大數
max = num[0];
// 使用循環比較其他數
for (i = 1; i < 3; i ) {
if (num[i] > max) {
max = num[i];
}
}
printf("最大數是: %d ", max);
return 0;
}
方法二:使用 while 循環 通過 while 循環來讀取輸入並比較三個數。
#include <stdio.h>
int main() {
int num[3], max;
int i = 0;
printf("請輸入三個整數: ");
while (i < 3) {
scanf("%d", &num[i]);
i ;
}
// 假設第一個數是最大數
max = num[0];
// 使用循環比較其他數
i = 1;
while (i < 3) {
if (num[i] > max) {
max = num[i];
}
i ;
}
printf("最大數是: %d ", max);
return 0;
}
方法三:使用 do - while 循環 通過 do - while 循環來讀取輸入並比較三個數。
#include <stdio.h>
int main() {
int num[3], max;
int i = 0;
printf("請輸入三個整數: ");
do {
scanf("%d", &num[i]);
i ;
} while (i < 3);
// 假設第一個數是最大數
max = num[0];
// 使用循環比較其他數
i = 1;
do {
if (num[i] > max) {
max = num[i];
}
i ;
} while (i < 3);
printf("最大數是: %d ", max);
return 0;
}
方法四:使用嵌套循環(適用於更複雜的場景) 雖然在這個簡單的例子中不需要嵌套循環,但為了完整起見,這裡展示一個嵌套循環的示例。嵌套循環通常用於處理更複雜的場景,比如處理多維數組。
#include <stdio.h>
int main() {
int num[3], max;
int i, j;
printf("請輸入三個整數: ");
for (i = 0; i < 3; i ) {
scanf("%d", &num[i]);
}
// 假設第一個數是最大數
max = num[0];
// 使用嵌套循環比較其他數(在這個簡單例子中嵌套循環無意義)
for (i = 1; i < 3; i ) {
for (j = i; j < 3; j ) {
if (num[j] > max) {
max = num[j];
}
}
}
printf("最大數是: %d ", max);
return 0;
}
17、 C 語言實例 - 一元二次方程
用C語言求解一元二次方程的幾種常見方法 方法1:基本方法(包含實數根和復數根)
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, discriminant, root1, root2, realPart, imagPart;
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
return 0;
}
方法2:使用函數封裝 將求解根的邏輯封裝在一個函數中,使代碼更加模塊化和易於維護。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c) {
double discriminant, root1, root2, realPart, imagPart;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
}
int main() {
double a, b, c;
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
return 0;
}
方法3:使用結構體存儲結果 使用結構體來存儲根的結果,使得結果的處理更加方便。
#include <stdio.h>
#include <math.h>
typedef struct {
double realPart;
double imagPart;
} ComplexRoot;
ComplexRoot solveQuadratic(double a, double b, double c) {
ComplexRoot roots;
double discriminant;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
roots.realPart = (-b sqrt(discriminant)) / (2 * a);
roots.imagPart = 0;
}
else if (discriminant == 0) {
roots.realPart = -b / (2 * a);
roots.imagPart = 0;
}
else {
roots.realPart = -b / (2 * a);
roots.imagPart = sqrt(-discriminant) / (2 * a);
}
return roots;
}
int main() {
double a, b, c;
ComplexRoot roots;
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
roots = solveQuadratic(a, b, c);
if (roots.imagPart == 0) {
if (roots.realPart == roots.imagPart) {
printf("方程有一個實數根: %.2lf ", roots.realPart);
}
else {
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", roots.realPart, roots.realPart);
}
}
else {
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", roots.realPart, roots.imagPart, roots.realPart, roots.imagPart);
}
}
return 0;
}
但是,上面的代碼在處理結構體時存在一些問題,特別是對於實數根的處理部分。下面是修正後的版本:
#include <stdio.h>
#include <math.h>
typedef struct {
double realPart;
double imagPart;
} ComplexRoot;
ComplexRoot solveQuadratic(double a, double b, double c) {
ComplexRoot roots;
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
roots.realPart = (-b sqrt(discriminant)) / (2 * a);
roots.imagPart = 0;
ComplexRoot root2;
root2.realPart = (-b - sqrt(discriminant)) / (2 * a);
root2.imagPart = 0;
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", roots.realPart, root2.realPart);
}
else if (discriminant == 0) {
roots.realPart = -b / (2 * a);
roots.imagPart = 0;
printf("方程有一個實數根: %.2lf ", roots.realPart);
}
else {
roots.realPart = -b / (2 * a);
roots.imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", roots.realPart, roots.imagPart, roots.realPart, roots.imagPart);
}
return roots;
}
int main() {
double a, b, c;
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
return 0;
}
方法4:使用指針傳遞結果 使用指針將根的結果傳遞給調用函數。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c, double* real1, double* imag1, double* real2, double* imag2) {
double discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
*real1 = (-b sqrt(discriminant)) / (2 * a);
*imag1 = 0;
*real2 = (-b - sqrt(discriminant)) / (2 * a);
*imag2 = 0;
}
else if (discriminant == 0) {
*real1 = *real2 = -b / (2 * a);
*imag1 = *imag2 = 0;
}
else {
*real1 = *real2 = -b / (2 * a);
*imag1 = sqrt(-discriminant) / (2 * a);
*imag2 = -sqrt(-discriminant) / (2 * a);
}
}
int main() {
double a, b, c, real1, imag1, real2, imag2;
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c, &real1, &imag1, &real2, &imag2);
if (imag1 == 0 && imag2 == 0) {
if (real1 == real2) {
printf("方程有一個實數根: %.2lf ", real1);
}
else {
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", real1, real2);
}
}
else {
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", real1, imag1, real2, imag2);
}
}
return 0;
}
循環
方法1:使用 do - while 循環 do - while 循環至少執行一次循環體,然後再根據條件決定是否繼續循環。這種方式適用於需要確保用戶至少輸入一次方程係數的場景。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c) {
double discriminant, root1, root2, realPart, imagPart;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
}
int main() {
double a, b, c;
char choice;
do {
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
printf("是否繼續求解方程?(y/n): ");
scanf(" %c", &choice); // 注意這裡的空格,用於跳過換行符
} while (choice == 'y' || choice == 'Y');
return 0;
}
方法2:使用 while 循環 while 循環在每次執行前檢查條件是否滿足。這種方式適用於需要根據條件動態決定是否繼續循環的場景。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c) {
double discriminant, root1, root2, realPart, imagPart;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
}
int main() {
double a, b, c;
char choice;
printf("是否開始求解方程?(y/n): ");
scanf(" %c", &choice); // 注意這裡的空格,用於跳過換行符
while (choice == 'y' || choice == 'Y') {
printf("請輸入一元二次方程的係數a, b, c: ");
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
printf("是否繼續求解方程?(y/n): ");
scanf(" %c", &choice); // 注意這裡的空格,用於跳過換行符
}
return 0;
}
方法3:使用 for 循環 for 循環適用於已經知道循環次數的場景。這種方式適用於用戶預先知道需要求解多少個方程的情況。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c) {
double discriminant, root1, root2, realPart, imagPart;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
}
int main() {
int n, i;
double a, b, c;
printf("請輸入需要求解的一元二次方程的數量: ");
scanf("%d", &n);
for (i = 0; i < n; i ) {
printf("請輸入第%d個一元二次方程的係數a, b, c: ", i 1);
scanf("%lf %lf %lf", &a, &b, &c);
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
}
return 0;
}
方法4:使用 do - while 循環讀取文件中的係數 從文件中讀取多個方程的係數並求解,可以使用 do - while 循環來逐行處理文件中的內容。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c) {
double discriminant, root1, root2, realPart, imagPart;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
}
int main() {
FILE* file;
double a, b, c;
file = fopen("equations.txt", "r");
if (file == NULL) {
printf("無法打開文件。 ");
return 1;
}
do {
if (fscanf(file, "%lf %lf %lf", &a, &b, &c) != 3) {
break; // 如果讀取不到三個係數,則退出循環
}
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
} while (!feof(file)); // 繼續循環直到文件結束
fclose(file);
return 0;
}
方法5:使用 while 循環讀取文件中的係數 同樣地,可以使用 while 循環來逐行讀取文件中的係數。
#include <stdio.h>
#include <math.h>
void solveQuadratic(double a, double b, double c) {
double discriminant, root1, root2, realPart, imagPart;
discriminant = b * b - 4 * a * c;
if (discriminant > 0) {
root1 = (-b sqrt(discriminant)) / (2 * a);
root2 = (-b - sqrt(discriminant)) / (2 * a);
printf("方程有兩個不相等的實數根: %.2lf 和 %.2lf ", root1, root2);
}
else if (discriminant == 0) {
root1 = root2 = -b / (2 * a);
printf("方程有一個實數根: %.2lf ", root1);
}
else {
realPart = -b / (2 * a);
imagPart = sqrt(-discriminant) / (2 * a);
printf("方程有兩個共軛的複數根: %.2lf %.2lfi 和 %.2lf - %.2lfi ", realPart, imagPart, realPart, imagPart);
}
}
int main() {
FILE* file;
double a, b, c;
file = fopen("equations.txt", "r");
if (file == NULL) {
printf("無法打開文件。 ");
return 1;
}
while (fscanf(file, "%lf %lf %lf", &a, &b, &c) == 3) {
if (a == 0) {
printf("這不是一個一元二次方程。 ");
}
else {
solveQuadratic(a, b, c);
}
}
fclose(file);
return 0;
}
18、 C 語言實例 - 判斷閏年
方法一:標準方法 這是最常見和標準的方法,遵循閏年的規則:能被4整除但不能被100整除的年份,或者能被400整除的年份為閏年。
#include <stdio.h>
int main() {
int year;
// 提示用戶輸入年份
printf("請輸入一個年份: ");
scanf("%d", &year);
// 判斷是否為閏年
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d 是閏年。 ", year);
}
else {
printf("%d 不是閏年。 ", year);
}
return 0;
}
方法二:使用嵌套的if語句 這種方法通過嵌套的if語句來逐步判斷年份是否為閏年。
#include <stdio.h>
int main() {
int year;
// 提示用戶輸入年份
printf("請輸入一個年份: ");
scanf("%d", &year);
// 判斷是否為閏年
if (year % 4 == 0) {
if (year % 100 != 0) {
printf("%d 是閏年。 ", year);
}
else {
if (year % 400 == 0) {
printf("%d 是閏年。 ", year);
}
else {
printf("%d 不是閏年。 ", year);
}
}
}
else {
printf("%d 不是閏年。 ", year);
}
return 0;
}
方法三:使用函數封裝 這種方法將閏年的判斷邏輯封裝在一個函數中,使代碼更加模塊化和易於維護。
#include <stdio.h>
// 函數聲明
int isLeapYear(int year);
int main() {
int year;
// 提示用戶輸入年份
printf("請輸入一個年份: ");
scanf("%d", &year);
// 調用函數並輸出結果
if (isLeapYear(year)) {
printf("%d 是閏年。 ", year);
}
else {
printf("%d 不是閏年。 ", year);
}
return 0;
}
// 函數定義
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
return 1; // 是閏年
}
else {
return 0; // 不是閏年
}
}
方法四:使用三目運算符 這種方法使用三目運算符來簡化代碼。
#include <stdio.h>
int main() {
int year;
// 提示用戶輸入年份
printf("請輸入一個年份: ");
scanf("%d", &year);
// 使用三目運算符判斷是否為閏年
((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) ?
printf("%d 是閏年。 ", year) :
printf("%d 不是閏年。 ", year);
return 0;
}
總結
以上是幾種在C語言中判斷閏年的常見方法。每種方法都有其特點:
標準方法:直接在main函數中使用條件語句判斷。
嵌套的if語句:通過嵌套的if語句逐步判斷。
使用函數封裝:將判斷邏輯封裝在函數中,使代碼更加模塊化。
使用三目運算符:使用三目運算符簡化條件判斷。
循環
方法一:使用for循環
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int year, i, num;
// 提示用戶輸入要判斷的年份數量
printf("請輸入要判斷的年份數量: ");
scanf("%d", &num);
// 使用for循環多次判斷閏年
for (i = 0; i < num; i ) {
printf("請輸入第 %d 個年份: ", i 1);
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d 是閏年。 ", year);
}
else {
printf("%d 不是閏年。 ", year);
}
}
return 0;
}
方法二:使用while循環
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int year, num, count = 0;
// 提示用戶輸入要判斷的年份數量
printf("請輸入要判斷的年份數量: ");
scanf("%d", &num);
// 使用while循環多次判斷閏年
while (count < num) {
printf("請輸入第 %d 個年份: ", count 1);
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d 是閏年。 ", year);
}
else {
printf("%d 不是閏年。 ", year);
}
count ;
}
return 0;
}
方法三:使用do - while循環
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int year, num, count = 0;
// 提示用戶輸入要判斷的年份數量
printf("請輸入要判斷的年份數量: ");
scanf("%d", &num);
// 使用do-while循環多次判斷閏年
do {
printf("請輸入第 %d 個年份: ", count 1);
scanf("%d", &year);
if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
printf("%d 是閏年。 ", year);
}
else {
printf("%d 不是閏年。 ", year);
}
count ;
} while (count < num);
return 0;
}
19、 C 語言實例 - 判斷正數 負數 零
方法一:使用 if - else 語句
#include <stdio.h>
int main() {
int number;
// 提示用戶輸入一個整數
printf("請輸入一個整數: ");
scanf("%d", &number);
// 判斷輸入的整數是正數、負數還是零
if (number > 0) {
printf("這個數是正數。 ");
}
else if (number < 0) {
printf("這個數是負數。 ");
}
else {
printf("這個數是零。 ");
}
return 0;
}
會
方法二:使用嵌套 if 語句
#include <stdio.h>
int main() {
int number;
// 提示用戶輸入一個整數
printf("請輸入一個整數: ");
scanf("%d", &number);
// 判斷輸入的整數是正數、負數還是零
if (number != 0) {
if (number > 0) {
printf("這個數是正數。 ");
}
else {
printf("這個數是負數。 ");
}
}
else {
printf("這個數是零。 ");
}
return 0;
}
會
方法三:使用三元運算符
#include <stdio.h>
int main() {
int number;
// 提示用戶輸入一個整數
printf("請輸入一個整數: ");
scanf("%d", &number);
// 使用三元運算符判斷輸入的整數是正數、負數還是零
(number > 0) ? printf("這個數是正數。 ") :
(number < 0) ? printf("這個數是負數。 ") :
printf("這個數是零。 ");
return 0;
}
會
方法四:使用 switch 語句(適用於有限值集) 這種方法不太適用於直接判斷正數、負數和零,但可以通過一些變通來實現。通常情況下,switch 語句更適合處理離散的、有限的值集合。但為了滿足要求,可以採用如下方式:
#include <stdio.h>
int main() {
int number;
// 提示用戶輸入一個整數
printf("請輸入一個整數: ");
scanf("%d", &number);
// 使用 switch 語句判斷輸入的整數是正數、負數還是零
switch (number > 0) {
case 1:
printf("這個數是正數。 ");
break;
case 0:
switch (number < 0) {
case 1:
printf("這個數是負數。 ");
break;
case 0:
printf("這個數是零。 ");
break;
}
break;
}
return 0;
}
會
方法五:使用函數
#include <stdio.h>
void checkNumber(int number) {
if (number > 0) {
printf("這個數是正數。 ");
}
else if (number < 0) {
printf("這個數是負數。 ");
}
else {
printf("這個數是零。 ");
}
}
int main() {
int number;
// 提示用戶輸入一個整數
printf("請輸入一個整數: ");
scanf("%d", &number);
// 調用函數判斷輸入的整數是正數、負數還是零
checkNumber(number);
return 0;
}
循環
while循環:
#include <stdio.h>
int main() {
int number;
char choice = 'y';
while (choice == 'y' || choice == 'Y') {
printf("請輸入一個整數: ");
scanf("%d", &number);
if (number > 0) {
printf("這個數是正數。 ");
}
else if (number < 0) {
printf("這個數是負數。 ");
}
else {
printf("這個數是零。 ");
}
printf("是否繼續輸入?(y/n): ");
scanf(" %c", &choice);
}
return 0;
}
我
#include<stdio.h>
int main() {
int a;
char b = 'y';
for (; (b == 'y' || b == 'Y');) {
scanf("%d", &a);
if (a > 0) {
printf("這個數是正數。 ");
}
else if (a < 0) {
printf("這個數是負數。 ");
}
else {
printf("這個數是零。 ");
}
printf("是否繼續輸入?(y/n): ");
scanf(" %c", &b);
}
return 0;
}
do - while循環:
#include <stdio.h>
int main() {
int number;
char choice;
do {
printf("請輸入一個整數: ");
scanf("%d", &number);
if (number > 0) {
printf("這個數是正數。 ");
}
else if (number < 0) {
printf("這個數是負數。 ");
}
else {
printf("這個數是零。 ");
}
printf("是否繼續輸入?(y/n): ");
scanf(" %c", &choice);
} while (choice == 'y' || choice == 'Y');
return 0;
}
for循環:
#include <stdio.h>
int main() {
int count, number;
// 提示用戶輸入要判斷的整數個數
printf("請輸入要判斷的整數個數: ");
scanf("%d", &count);
// 使用for循環來判斷每個整數
for (int i = 0; i < count; i ) {
printf("請輸入第%d個整數: ", i 1);
scanf("%d", &number);
if (number > 0) {
printf("%d 是正數。 ", number);
}
else if (number < 0) {
printf("%d 是負數。 ", number);
}
else {
printf("%d 是零。 ", number);
}
}
return 0;
}
20、 C 語言實例 - 判斷字母
方法一:使用 isalpha 函數 isalpha 是C標準庫中的一個函數,位於 <ctype.h> 頭文件中,用於判斷一個字符是否為字母(A - Z 或 a - z)。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用isalpha函數判斷字符是否為字母
if (isalpha(ch)) {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
方法二:使用 ASCII 碼範圍 可以通過檢查字符的ASCII碼值來判斷它是否為字母。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用ASCII碼範圍判斷字符是否為字母
if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
方法三:使用條件表達式和 toupper 函數 可以將字符轉換為大寫形式,然後檢查其是否在大寫字母的ASCII碼範圍內。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用toupper函數將字符轉換為大寫形式,然後判斷是否為字母
if (toupper(ch) >= 'A' && toupper(ch) <= 'Z') {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
方法四:使用位運算 這種方法通過位運算來判斷字符是否為字母。它是比較複雜的,但可以作為一種有趣的實現方式。
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int is_alpha(char ch) {
// 判斷字符是否為字母的位運算
return ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'));
}
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用is_alpha函數判斷字符是否為字母
if (is_alpha(ch)) {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
20、 C 語言實例 - 判斷字母
方法一:使用 isalpha 函數 isalpha 是C標準庫中的一個函數,位於 <ctype.h> 頭文件中,用於判斷一個字符是否為字母(A - Z 或 a - z)。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用isalpha函數判斷字符是否為字母
if (isalpha(ch)) {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
方法二:使用 ASCII 碼範圍 可以通過檢查字符的ASCII碼值來判斷它是否為字母。
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用ASCII碼範圍判斷字符是否為字母
if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
方法三:使用條件表達式和 toupper 函數 可以將字符轉換為大寫形式,然後檢查其是否在大寫字母的ASCII碼範圍內。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用toupper函數將字符轉換為大寫形式,然後判斷是否為字母
if (toupper(ch) >= 'A' && toupper(ch) <= 'Z') {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
方法四:使用位運算 這種方法通過位運算來判斷字符是否為字母。它是比較複雜的,但可以作為一種有趣的實現方式。
#include <stdio.h>
#define _CRT_SECURE_NO_WARNINGS
int is_alpha(char ch) {
// 判斷字符是否為字母的位運算
return ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'));
}
int main() {
char ch;
// 提示用戶輸入一個字符
printf("請輸入一個字符:");
scanf("%c", &ch);
// 使用is_alpha函數判斷字符是否為字母
if (is_alpha(ch)) {
printf("您輸入的是字母。 ");
}
else {
printf("您輸入的不是字母。 ");
}
return 0;
}
總結
以上四種方法都可以用來判斷一個字符是否為字母。每種方法都有其特點:
使用 isalpha 函數:簡單直接,易於理解,且適用於所有C編譯器。
使用 ASCII 碼範圍:通過直接比較字符的ASCII值,不需要額外的庫函數。
使用 toupper 函數:通過將字符轉換為統一的大寫形式進行比較,簡化了條件判斷。
使用位運算:雖然這種方法比較複雜,但它提供了一種不同的思考方式。
這些方法都可以根據具體需求選擇使用。通常情況下,使用 isalpha 函數是最為推薦的方式,因為它簡潔且易於維護。
循環
1.使用 for 循環 假設你想在一個字符串中判斷每個字符是否為字母,可以使用 for 循環。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char str[100];
printf("請輸入一個字符串:");
scanf("%s", str);
for (int i = 0; str[i] != '\0'; i ) {
if (isalpha(str[i])) {
printf("字符 '%c' 是字母。 ", str[i]);
}
else {
printf("字符 '%c' 不是字母。 ", str[i]);
}
}
return 0;
}
2. 使用 while 循環 同樣,假設你想在一個字符串中判斷每個字符是否為字母,可以使用 while 循環。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char str[100];
printf("請輸入一個字符串:");
scanf("%s", str);
int i = 0;
while (str[i] != '\0') {
if (isalpha(str[i])) {
printf("字符 '%c' 是字母。 ", str[i]);
}
else {
printf("字符 '%c' 不是字母。 ", str[i]);
}
i ;
}
return 0;
}
3. 使用 do - while 循環 同樣,假設你想在一個字符串中判斷每個字符是否為字母,可以使用 do - while 循環。
#include <stdio.h>
#include <ctype.h>
#define _CRT_SECURE_NO_WARNINGS
int main() {
char str[100];
printf("請輸入一個字符串:");
scanf("%s", str);
int i = 0;
do {
if (isalpha(str[i])) {
printf("字符 '%c' 是字母。 ", str[i]);
}
else {
printf("字符 '%c' 不是字母。 ", str[i]);
}
i ;
} while (str[i] != '\0');
return 0;
}