【練習11】計算 int, float, double 和 char 字節大小
0. 題目:
計算 int, float, double 和 char 字節大小
1. 分析:
使用 sizeof 操作符計算int, float, double 和 char四種變量字節大小。
sizeof 是單目操作符,以字節形式給出了其操作數的存儲大小。
2. 程序:
#include <stdio.h>
int main()
{
int integerType;
float floatType;
double doubleType;
char charType;
// sizeof 操作符用於計算變量的字節大小
printf("Size of int: %ld bytes\n",sizeof(integerType));
printf("Size of float: %ld bytes\n",sizeof(floatType));
printf("Size of double: %ld bytes\n",sizeof(doubleType));
printf("Size of char: %ld byte\n",sizeof(charType));
return 0;
}
3. 輸入輸出:
Size of int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of char: 1 byte
【練習12】交換兩個數的值
0. 題目:
交換兩個數的值
1. 分析:
本例程使用中間變量。
2. 程序:
#include <stdio.h>
int main()
{
float firstNum, secondNum, tempVar;
printf("輸入兩個浮點數(以空格分隔): ");
scanf("%f %f", &firstNum, &secondNum);
tempVar = firstNum;
firstNum = secondNum;
secondNum = tempVar;
printf("\n交換后 firstNum = %.2f", firstNum);
printf("\n交換后 secondNum = %.2f", secondNum);
return 0;
}
3. 輸入輸出:
輸入兩個浮點數(以空格分隔): 1 2
交換后 firstNum = 2.00
交換后 secondNum = 1.00
【練習13】判斷奇數/偶數
0. 題目:
判斷奇數/偶數
1. 分析:
判斷用戶輸入的整數是奇數還是偶數。
2. 程序:
#include <stdio.h>
int main()
{
int iNum;
printf("輸入一個整數: ");
scanf("%d", &iNum);
// 判斷這個數除以 2 的余數
if(iNum % 2 == 0)
printf("%d 是偶數。", iNum);
else
printf("%d 是奇數。", iNum);
return 0;
}
3. 輸入輸出:
輸入一個整數: 99
99 是奇數。
【練習14】區間內的奇偶判斷
0. 題目:
判斷循環區間內的奇數/偶數
1. 分析:
循環輸出區間范圍內的奇數/偶數可以通過除於 2 的余數來判斷。
2. 程序:
#include <stdio.h>
int main()
{
int i;
for(i=1;i<=10;i++)
{
if(i%2 == 0)
printf(" %d\n", i);
}
return 0;
}
3. 輸入輸出:
2
4
6
8
10
【練習15】判斷元音/輔音
0. 題目:
判斷元音/輔音
1. 分析:
判斷輸入的字母是元音還是輔音。英語有26個字母,只有 a、e、i、o、u 是元音。
2. 程序:
#include <stdio.h>
int main()
{
char cInput;
int isLowercaseVowel, isUppercaseVowel;
printf("輸入一個字母: ");
scanf("%c",&cInput);
isLowercaseVowel = ((cInput=='a') || (cInput=='e') || (cInput=='i') || (cInput=='o') || (cInput=='u')); // 小寫字母元音
isUppercaseVowel = ((cInput=='A') || (cInput=='E') || (cInput=='I') || (cInput=='O') || (cInput=='U')); // 大寫字母元音
if (isLowercaseVowel || isUppercaseVowel)
printf("%c 是元音。", cInput);
else
printf("%c 是輔音。", cInput);
return 0;
}
3. 輸入輸出:
輸入一個字母: S
S 是輔音
【注意!】 關系運算符 '==" 優先於 邏輯運算符 "||",因此 (cInput=='a') 中的小括號 ()也可以省略。
【練習16】判斷三個數中的最大數
0. 題目:
判斷三個數中的最大數
1. 分析:
分析使用 scanf() 來接收輸入,if 分支語句進行條件判斷。
2. 程序:
#include <stdio.h>
int main()
{
float fNum1, fNum2, fNum3;
printf("請輸入 3 個數(以逗號分隔): ");
scanf("%f,%f,%f", &fNum1, &fNum2, &fNum3);
if(fNum1>=fNum2 && fNum1>=fNum3 )
printf("最大數是 %.2f。", fNum1);
if(fNum2>=fNum1 && fNum2>=fNum3 )
printf("最大數是 %.2f。", fNum2);
if(fNum3>=fNum1 && fNum3>=fNum1 )
printf("最大數是 %.2f。", fNum3);
return 0;
}
3. 輸入輸出:
請輸入三個數(以逗號分隔): 0,1,2
最大數是 2.00
【注意!】 1、本程序采用的多次條件判斷並不是最好的方法,但思路容易理解,程序可讀性也較好。2、如果將題目理解為找到最大數的數值,這個程序是正確的;但如果將題目理解為找到第幾個數是最大數,則不僅輸出結果不符合要求,而且整體算法也存在Bug。
【練習17】一元二次方程
0. 題目:
一元二次方程
1. 分析:
求一元二次方程:ax2+bx+c=0 的根。
輸入三個實數a,b,c的值,且a不等於0。
2. 程序:
#include <stdio.h>
#include <math.h>
int main()
{
float fParaA,fParaB,fParaC,fRoofX1,fRoofX2,fDelta;
printf("\n一元二次方程:ax2+bx+c=0:");
printf("\n輸入系數a,b,c(以逗號分隔):");
scanf("%f %f %f",&fParaA,&fParaB,&fParaC);
if(fParaA!=0)
{
fDelta = fParaB*fParaB - 4*fParaA*fParaC;
if(fDelta>0)
{
fRoofX1=(-fParaB+sqrt(fDelta))/(2*fParaA);
fRoofX2=(-fParaB-sqrt(fDelta))/(2*fParaA);
printf("x1 = %0.2f, x2 = %0.2f\n",fRoofX1,fRoofX2);
}
else if(fDelta==0)
{
fRoofX1=(-fParaB+sqrt(fDelta))/(2*fParaA);
printf("x1 = x2 = %0.2f\n",fRoofX1);
}
else
{
printf("方程無實數解!\n");
}
}
return 0;
}
3. 輸入輸出:
一元二次方程:ax2+bx+c=0:
輸入系數a,b,c(以逗號分隔):1,4,-5
x1 = 1.00, x2 = -5.00
【練習18】判斷閏年
0. 題目:
判斷閏年
1. 分析:
能被4整除的年份是閏年,但被100整除的年份不是閏年;但被400整除的年份還是閏年。
2. 程序:
#include <stdio.h>
int main()
{
int iYear;
printf("輸入年份: ");
scanf("%d",&iYear);
//被4整除的年份是閏年,但被100整除的年份不是閏年,但被400整除的年份還是閏年
if((iYear%4 == 0 && iYear%100 != 0) || iYear%400 == 0)
printf("%d 是閏年", iYear);
else
printf("%d 不是閏年", iYear);
return 0;
}
3. 輸入輸出:
輸入年份: 2021
2021不是閏年
【練習19】判斷正數/負數
0. 題目:
判斷正數/負數/零
1. 分析:
兩數相除,如果有余數,輸出余數
2. 程序:
#include <stdio.h>
int main()
{
float fNum;
printf("輸入一個實數: ");
scanf("%f", &fNum);
if(fNum < 0.0)
printf("輸入的 %.2f 是負數\n",fNum);
else if(fNum > 0.0)
printf("輸入的 %.2f 是正數\n",fNum);
else
printf("輸入的 %.2f 是零\n",fNum);
return 0;
}
3. 輸入輸出:
輸入一個實數: 0.0
輸入的 0.00 是零
【注意!】該程序將輸入值與數值 0.0 比較大小是可以的。但如果比較兩個實數變量的大小,由於存在有效數字位數問題,一般不能直接比較二者是否相等。
【練習20】判斷輸入字符是否字母
0. 題目:
判斷輸入字符是否字母
1. 分析:
大寫字母和小寫字母都屬於字母
2. 程序:
#include <stdio.h>
int main()
{
char cInput;
printf("輸入一個字符: ");
scanf("%c",&cInput);
if( (cInput>='a' && cInput<='z') || (cInput>='A' && cInput<='Z'))
printf("%c 是字母",cInput);
else
printf("%c 不是字母",cInput);
return 0;
}
3. 輸入輸出:
輸入一個字符: S
S 是字母
版權說明:
題目和例程 源於 菜鳥教程,作者重新編寫了程序、注釋和算例,並增加了難點分析。