C語言編程 菜鳥練習100題(11-20)

【練習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. 輸入輸出:code

Size of int: 4 bytes
Size of float: 4 bytes
Size of double: 8 bytes
Size of char: 1 byte教程


【練習12】交換兩個數的值

0. 題目:
交換兩個數的值
1. 分析:
本例程使用中間變量。
2. 程序:io

#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. 程序:float

#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

【注意!】 一、本程序採用的屢次條件判斷並非最好的方法,但思路容易理解,程序可讀性也較好。二、若是將題目理解爲找到最大數的數值,這個程序是正確的;但若是將題目理解爲找到第幾個數是最大數,則不只輸出結果不符合要求,並且總體算法也存在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 是字母


版權說明: 題目和例程 源於 菜鳥教程,做者從新編寫了程序、註釋和算例,並增長了難點分析。

相關文章
相關標籤/搜索