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

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

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

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

3. 輸入輸出:函數

Hello, World!code

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

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


【練習2】輸出整數

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

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

3. 輸入輸出:rem

輸入一個整數: 255
輸入的整數是: 255字符串

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


【練習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-3一、127(刪除鍵)是控制字符
(2)空白字符:空格(32)、 製表符、 垂直製表符、 換行、 回車。
(3)可顯示字符:a-z、A-Z、0-九、~、!、@、、%、^、&、#、$、*、(、)、-、+、{、}、[、]、'、"、<、>、,、?、/、|、\、_、:、;、.,還有頓號、。

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


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

相關文章
相關標籤/搜索