C語言編程 菜鳥練習100題(01-10)


【練習1】輸出 "Hello, World!"

0. 題目:
輸出 "Hello, World!"
1. 分析:
使用 printf() 輸出 "Hello, World!"。
2. 程序:

#include <stdio.h>
int main()
{
    printf("Hello, World!");  // printf() 中字符串的前后需要使用雙引號
    return 0;
}

3. 輸入輸出:

Hello, World!

4. 擴展知識:
printf() 是頭文件 stdio.h 中定義的函數,調用格式為:

printf("<格式化字符串>", <參量表>);


【練習2】輸出整數

0. 題目:
輸出整數
1. 分析:
使用 printf() 與 %d 格式化輸出整數。
2. 程序:

#include <stdio.h>
int main()
{
    int intNum;  // 聲明 int 變量
    printf("輸入一個整數: ");  // printf() 輸出字符串
    scanf("%d", &intNum);  // scanf() 格式化輸入,"%d"表示整數格式
    printf("輸入的整數是: %d", intNum);  // printf() 顯示格式化輸入
    return 0;
}

3. 輸入輸出:

輸入一個整數: 255
輸入的整數是: 255

4. 擴展知識:
scanf() 是頭文件 stdio.h 中定義的函數,從標准輸入 stdin 讀取格式化輸入。


【練習3】輸出單個字符

0. 題目:
輸出單個字符
1. 分析:
使用 printf() 與 %c 格式化輸出一個字符。
2. 程序:

#include <stdio.h>
int main()
{
    char oneChar;  // 聲明 char 變量
    oneChar = 'C';  // 向變量賦值
    printf("oneChar 的值為 %c", oneChar);  // printf() 格式化輸出
    return 0;
}

3. 輸入輸出:

oneChar 的值為 C

4. 擴展知識:

基本數據類型
int:整型
short:短整型
long:長整型
float:浮點型(單精度)
double:浮點型(雙精度)
char:字符型
void:無類型


【練習4】輸出浮點數

0. 題目:
輸出浮點數
1. 分析:
使用 printf() 與 %f 輸出浮點數。
2. 程序:

#include <stdio.h>
int main()
{
    float fVar1,fVar2;  // 聲明浮點數變量   
    fVar1 = 12.00123;  // 向變量賦值   
    printf("fVar1 的值為 %f\n", fVar1);   // printf() 格式化輸出 
    fVar2 = 123.001234;  // 向變量賦值   
    printf("fVar2 的值為 %f\n", fVar2);   // printf() 格式化輸出 
    return 0;
}

3. 輸入輸出:

fVar1 的值為 12.00123
fVar2 的值為 123.001236

【注意!】 fVar1 的值與賦值完全相同,但 fVar2 的的值與賦值不完全相同。這是因為 float 為單精度浮點數,內存中占 4個字節,有效數位是 7位。如果有效數字位數超過 7位,超出的部分會自動四舍五入。


【練習5】輸出雙精度數

0. 題目:
輸出雙精度數
1. 分析:
使用 printf() 與 %e 輸出雙精度數。
2. 程序:

#include <stdio.h>
{
    double dVar1,dVar2;  // 聲明浮點數變量   
    dVar1 = 12.00123;  // 向變量賦值   
    printf("dVar1 的值為 %Lf\n", dVar1);   // 格式化輸出:長實數 
    printf("dVar1 的值為 %Le\n", dVar1);   // 格式化輸出:科學計數法 
    dVar2 = 123.001234;  // 向變量賦值   
    printf("dVar2 的值為 %Lf\n", dVar2);   // 格式化輸出:長實數 
    printf("dVar2 的值為 %Le\n", dVar2);   // 格式化輸出:科學計數法 
    return 0;
}

3. 輸入輸出:

dVar1 的值為 12.001230
dVar1 的值為 1.200123e+001
dVar2 的值為 123.001234
dVar2 的值為 1.230012e+002

【注意!】 double 為雙精度浮點數,內存中占 8個字節,有效數位是 16位。dVar2 按科學計數法格式(Le)輸出時雖然與賦值不完全相同,這只是格式化輸出時的有效數字位數限制所致,但在實際存儲和計算時都是與賦值完全相同的,因此在按長實數格式(Lf)輸出時與賦值完全相同


【練習6】兩個數字相加

0. 題目:
題目兩個數字相加
1. 分析:
分析使用 scanf() 來接收輸入, printf() 與 %d 格式化輸出整數。
2. 程序:

#include <stdio.h>
int main()
{
    int firstNum, secondNum, sumNum;    
    printf("輸入兩個整數(以空格分隔): "); 
    // scanf() 格式化輸入,接收用戶輸入的兩個整數
    scanf("%d %d", &firstNum, &secondNum); 
    // 兩個整數相加
    sumNum = firstNum + secondNum; 
    // 輸出結果
    printf("%d + %d = %d", firstNum, secondNum, sumNum);
    return 0;
}

3. 輸入輸出:

輸入兩個數(以空格分割): -1 99
-1 + 99 = 98

【注意!】 由於scanf()函數中定義的輸入格式為"%d %d"(兩個%d之間有一個空格),在輸入時就必須嚴格按照定義的格式,在輸入的兩個整數之間加一個空格,否則可能出錯。類似地,如果定義輸入格式為"%d,%d",就必須在在輸入的兩個整數之間加一個逗號。


【練習7】兩個浮點數相乘

0. 題目:
兩個浮點數相乘
1. 分析:
輸入兩個浮點數,計算乘積。
2. 程序:

#include <stdio.h>
int main()
{
    double firstNum, secondNum, productNum;
    printf("輸入兩個浮點數(以空格分隔): ");
    scanf("%lf %lf", &firstNum, &secondNum);   
    productNum = firstNum * secondNum;  // 兩個浮點數相乘
    printf("%.2lf * %.2lf = %.2lf\n", firstNum,secondNum,productNum); 
    printf("%lf * %lf = %lf\n", firstNum,secondNum,productNum);
    return 0;
}

3. 輸入輸出:

輸入兩個浮點數(以空格分割): 1.2345 66
1.23 * 66.00 = 81.48
1.234500 * 66.000000 = 81.477000

【注意!】(1)變量 secondNum 定義為浮點數,雖然輸入為整數也是按浮點數存儲的。(2)%.2lf 表示輸出格式為保留2位有效數字,但並不影響存儲的數據的精度。


【練習8】字符轉 ASCII 碼

0. 題目:
字符轉 ASCII 碼
1. 分析:
ASCII 定義了 128 個字符:
(1)0-31、127(刪除鍵)是控制字符
(2)空白字符:空格(32)、 制表符、 垂直制表符、 換行、 回車。
(3)可顯示字符:a-z、A-Z、0-9、~、!、@、、%、^、&、#、$、*、(、)、-、+、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,還有頓號、。

2. 程序:

#include <stdio.h>
int main()
{
    char oneChar;  // 聲明 char 變量
    
    printf("輸入一個字符: "); 
    scanf("%c", &oneChar);  // 讀取用戶輸入
    printf("%c 的 ASCII 為 %d", oneChar, oneChar);  // %c 字符格式
    return 0;
}

3. 輸入輸出:

輸入一個字符: A
A 的 ASCII 為 65


【練習9】兩數相除

0. 題目:
兩數相除
1. 分析:
兩數相除,如果有余數,輸出余數
2. 程序:

#include <stdio.h>
int main()
{
    int dividend, divisor, quotient, remainder;
    
    printf("輸入被除數、除數(以空格分隔): "); 
    // scanf() 格式化輸入,接收用戶輸入的兩個整數
    scanf("%d %d", &dividend, &divisor);  // 輸入被除數、除數
   
    quotient = dividend / divisor;  // 除法,分子除分母的整數部分
    remainder = dividend % divisor;  // % 為模運算,整除后的余數
    printf("商 = %d, 余數 = %d", quotient,remainder);
    return 0;
}

3. 輸入輸出:

輸入被除數、除數(以空格分隔): 50 10 輸出:商 = 5, 余數 = 0
輸入被除數、除數(以空格分隔): 51 10 輸出:商 = 5, 余數 = 1
輸入被除數、除數(以空格分隔): 55 10 輸出:商 = 5, 余數 = 5
輸入被除數、除數(以空格分隔): 58 10 輸出:商 = 5, 余數 = 8

【注意!】除法“/”得出的商是被除數與除數相除的整數部分,不做四舍五入處理。


【練習10】數值比較

0. 題目:
數值比較
1. 分析:
定義了兩個整數變量,使用 if 來比較兩個數值
2. 程序:

#include <stdio.h>
int main()
{
    int firstNum, secondNum; 

    printf("輸入兩個整數(以空格分隔): "); 
    scanf("%d %d", &firstNum, &secondNum); 
    
    if(firstNum > secondNum)
        printf("%d 大於 %d", firstNum,secondNum);
    else if(firstNum < secondNum)
        printf("%d 小於 %d", firstNum,secondNum); 
    else
        printf("%d 等於 %d", firstNum,secondNum);
    return 0;
}

3. 輸入輸出:

輸入兩個整數(以空格分割): -1 99
-1 小於 99


版權說明:本文的題目和例程 源於 菜鳥教程,作者重新編寫了程序、注釋和算例,並增加了難點分析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM