《由淺入深學(xué)C語言基礎(chǔ)温鸽、進(jìn)階與必做430題》課后習(xí)題參考答案

第1章 第一個C程序
第2章 C語言基礎(chǔ)
第3章 變量和數(shù)據(jù)類型
第4章 順序結(jié)構(gòu)程序設(shè)計
第5章 條件結(jié)構(gòu)程序設(shè)計
第6章 循環(huán)結(jié)構(gòu)程序設(shè)計
第7章 數(shù)組
第8章 指針
第9章 函數(shù)
第10章 結(jié)構(gòu)型铲觉、共用型、枚舉型及用戶自定義型數(shù)據(jù)
第12章 文件
第14章 預(yù)處理宏命令

第1章 第一個C程序

習(xí)題答案

一、選擇題

  1. C

二、填空題

  1. 補全下面的程序,讓其完整。
    #include<stdio.h>
    void main() 
    {
        int a=1;
        printf("%d\n", a);
    }
    

三索昂、編程題

  1. 參照例題建车,編寫一個程序輸出如下所示的一個倒三角形。
    *********************
      *****************
        *************
          *********
            *****
              *
    
    #include<stdio.h>
    
    void main() 
    {
        printf("*********************\n");
        printf("  *****************  \n");
        printf("    *************    \n");
        printf("      *********      \n");
        printf("        *****        \n");
        printf("          *          \n");
    }
    
  2. 從鍵盤輸入一個數(shù)椒惨,輸出該數(shù)的相反數(shù)缤至。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        scanf("%d", &x);
        if (x < 0)
        {
            x = -x;
        }
        printf("%d\n", x);
    }
    
  3. 編寫一個程序,實現(xiàn)兩個數(shù)相加并將結(jié)果輸出至屏幕康谆。
    #include<stdio.h>
    
    void main() 
    {
        int x, y, z;
        scanf("%d%d", &x, &y);
        z = x + y;
        printf("%d\n", z);
    }
    
  4. 從鍵盤輸入一個數(shù)领斥,判斷其是否能被 3 和 5 整除,若能整除則輸出“yes”沃暗,否則輸出“no”月洛。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        scanf("%d", &x);
        if (x % 3 == 0 && x % 5 == 0)
        {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
    }
    
  5. 從鍵盤輸入一個數(shù),通過 printf() 函數(shù)輸出該數(shù)的 2 倍數(shù)孽锥。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        scanf("%d", &x);
        printf("%d\n", 2 * x);
    }
    
  6. 從鍵盤輸入兩個數(shù)嚼黔,求這兩個數(shù)的乘積并輸出至屏幕。
    #include<stdio.h>
    
    void main() 
    {
        int x, y, z;
        scanf("%d%d", &x, &y);
        z = x * y;
        printf("%d\n", z);
    }
    
  7. 編寫一個程序惜辑,判斷一個數(shù)是否為偶數(shù)唬涧。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        scanf("%d", &x);
        if (x % 2 == 0)
        {
            printf("該數(shù)是偶數(shù)\n");
        }
        else
        {
            printf("該數(shù)是奇數(shù)\n");
        }
    }
    

第2章 C語言基礎(chǔ)

C語言特點

  1. 簡單、方便靈活
    • 9中控制語句
    • 32個關(guān)鍵字
  2. 運算符種類豐富
    • 34種運算符
  3. 數(shù)據(jù)結(jié)構(gòu)類型豐富
    • 7種類型
  4. 繪圖功能強大
  5. 結(jié)構(gòu)式語言
  6. 對語法限制不嚴(yán)格
  7. 生成代碼質(zhì)量高盛撑、執(zhí)行效率高
  8. 可移植性好

C程序編譯執(zhí)行過程

  1. 編輯
  2. 編譯
    1. 詞法分析
    2. 語法分析
    3. 語義分析
    4. 中間代碼生成
    5. 中間代碼優(yōu)化
    6. 目標(biāo)代碼生成
  3. 鏈接
  4. 執(zhí)行

習(xí)題答案

一碎节、填空題

  1. 5,6
  2. 4,4
  3. 4,3
  4. 9

二、編程題

  1. 求1~100的和抵卫。
    #include<stdio.h>
    
    void main() 
    {
        int sum = 0;
        sum = (float)(1 + 100) / 2 * 100;
        printf("%d\n", sum);
    }
    
  2. 從鍵盤輸入兩個數(shù)狮荔,求出這兩個數(shù)中的小者并將結(jié)果輸出,要求比較操作單獨編寫一個函數(shù)陌僵。
    #include<stdio.h>
    
    int min(int x, int y) {
        int z;
        if (x > y) {
            z = y;
        }
        else {
            z = x;
        }
        return z;
    }
    
    void main() 
    {
        int x, y;
        int z = 0;
        scanf("%d%d", &x, &y);
        z = min(x, y);
        printf("%d\n", z);
    }
    
  3. 從鍵盤輸入兩個數(shù)轴合,將這兩個數(shù)交換后輸出。
    #include<stdio.h>
    
    void main() 
    {
        int x, y;
        int z = 0;
        scanf("%d%d", &x, &y);
        z = x;
        x = y;
        y = z;
        printf("%d %d\n", x, y);
    }
    
  4. 從鍵盤輸入一個數(shù)碗短,編寫程序輸出該數(shù)的絕對值至屏幕。
    #include<stdio.h>
    #include<math.h>
    
    void main() 
    {
        int x;
        scanf("%d", &x);
        printf("%d\n", (int)fabs(x));
    }
    
  5. 編寫程序铐望,從鍵盤輸入兩個數(shù)茂附,求出其中的大者。
    #include<stdio.h>
    
    void main() 
    {
        int x, y;
        int max;
        scanf("%d%d", &x, &y);
        if (x > y)
        {
            max = x;
        } 
        else
        {
            max = y;
        }
        printf("%d\n", max);
    }
    
  6. 編寫程序,求 1~100 中的素數(shù)。
    #include<stdio.h>
    
    void main() 
    {
        for (int i = 1; i < 100; i++)
        {
            int count = 0;
            for (int j = 1; j <= i; j++) {
                if (i % j == 0)
                {
                    count++;
                }
            }
            if (count < 3)
            {
                printf("%d\n", i);
            }
        }
    }
    
  7. 編寫程序邀窃,從鍵盤輸入一個數(shù)并求其階乘值。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        int y = 1;
        scanf("%d", &x);
        for (; x >= 1; x--)
        {
            y *= x;
        }
        printf("%d\n", y);
    }
    
  8. 編寫程序,求 1~100 中所有奇數(shù)的和柬泽。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        for (int i = 1; i <= 100; i++)
        {
            if (i % 2 != 0)
            {
                x += i;
            }
        }
        printf("%d\n", x);
    }
    
  9. 編寫程序,要求從鍵盤鍵入n, 求 1/3+2/4+3/5+...+n-2/n的值殴俱。
    #include<stdio.h>
    
    void main() 
    {
        int n = 0;
        double sum = 0;
        scanf("%d", &n);
    
        for (int i = 3; i <= n; i++)
        {
            sum += (double)(i - 2) / i;
        }
    
        printf("%lf\n", sum);
    }
    

第3章 變量和數(shù)據(jù)類型

C語言的基本數(shù)據(jù)類型

  • 基本類型
    • 整型
      • 短整型(short)
      • 整型(int)
      • 長整型(long)
    • 浮點型
      • 單精度浮點(float)
      • 雙精度浮點(double)
    • 字符型(char)
  • 構(gòu)造類型
    • 數(shù)組
    • 結(jié)構(gòu)體(struct)
    • 共用體(union)
    • 枚舉類型(enum)
  • 指針類型
  • 空類型(void)

習(xí)題答案

一、選擇題

  1. B
  2. B
  3. B

二请琳、填空題

  1. (1)10 (2)10 (3)20 (4)0 (5)100
  2. z=0,t=1074087854
    • 備注:一定要用正確的格式控制符輸出對應(yīng)的數(shù)據(jù)類型粱挡,否則會輸出一個垃圾值,這是一個悲傷的故事俄精。询筏。。
  3. 34,40,30,39
  4. 97,98
  5. 7,7
  6. 32,45
  7. 5,14
  8. 6,6
  9. 4,5,5,5
  10. 11,8
  11. 57,9
  12. 2,1,c,g

三竖慧、編程題

  1. 從鍵盤輸入 3 個數(shù)嫌套,判斷其是否能構(gòu)成直角三角形逆屡,若能則輸出該直角三角形的面積,否則輸出不能構(gòu)成三角形的提示信息踱讨。
    #include<stdio.h>
    
    void main() 
    {
        double a, b, c; // 三角形的三條邊
        double area = 0;    // 三角形的面積
    
        printf("請輸入三角形的三邊的邊長:");
        scanf("%lf%lf%lf", &a, &b, &c);
    
        // 判斷是否能構(gòu)成直角三角形
        if (a * a + b * b == c * c)
        {
            area = 1.0 / 2 * a * b;
            printf("直角三角形的面積是:%lf\n", area);
        }
        else if (a * a + c * c == b * b)
        {
            area = 1.0 / 2 * a * c;
            printf("直角三角形的面積是:%lf\n", area);
        }
        else if (b * b + c * c == a * a)
        {
            area = 1.0 / 2 * b * c;
            printf("直角三角形的面積是:%lf\n", area);
        }
        else
        {
            printf("不能構(gòu)成直角三角形\n");
        }
    }
    
  2. 編寫一個程序魏蔗,輸入一個華氏溫度,按照公式 C=5/9*(F-32) 輸出攝氏溫度痹筛。
    #include<stdio.h>
    
    void main() 
    {
        double f = 0;
        double c = 0;
    
        printf("請輸入華氏溫度值:");
        scanf("%lf", &f);
    
        c = (double)5 / 9 * (f - 32);
        printf("對應(yīng)的攝氏溫度是:%lf\n", c);
    }
    
  3. 輸入一個年份莺治,判斷該年是否為閏年,若為閏年則輸出“yes”帚稠,否則輸出“no”谣旁。
    #include<stdio.h>
    
    void main() 
    {
        int year = 0;
        scanf("%d", &year);
    
        if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) {
            printf("yes\n");
        }
        else
        {
            printf("no\n");
        }
    }
    
  4. 從鍵盤輸入一個學(xué)生的5門科目成績,計算其平均值并輸出滋早。
    #include<stdio.h>
    
    void main() 
    {
        int score1 = 0;
        int score2 = 0;
        int score3 = 0;
        int score4 = 0;
        int score5 = 0;
        double average = 0;
    
        printf("請輸入5門課程的成績:");
        scanf("%d%d%d%d%d", &score1, &score2, &score3, &score4, &score5);
    
        average = (double)(score1 + score2 + score3 + score4 + score5) / 5;
    
        printf("平均成績是:%.2lf\n", average);
    }
    
  5. 從鍵盤輸入3個數(shù)榄审,輸出其中的最大者。
    #include<stdio.h>
    
    void main() 
    {
        int a = 0, b = 0, c = 0;
        int max = 0;
    
        printf("請輸入3個整數(shù):");
        scanf("%d%d%d", &a, &b, &c);
    
        max = a;
        if (max < b)
        {
            max = b;
        }
        if (max < c)
        {
            max = c;
        }
    
        printf("最大者是:%d\n", max);
    }
    
  6. 從鍵盤輸入3個數(shù)杆麸,將其從小到大排序后輸出搁进。
    #include<stdio.h>
    #define ARR_LEN 3
    
    void main() 
    {
        int arr[ARR_LEN] = { 0 };
        int temp = 0;
    
        // 讀入三個數(shù)
        for (int i = 0; i < ARR_LEN; i++)
        {
            printf("請輸入第%d個數(shù)的值:", i + 1);
            scanf("%d", &arr[i]);
        }
    
        // 排序
        for (int i = 0; i < ARR_LEN - 1; i++)
        {
            for (int j = 0; j < ARR_LEN - 1 - i; j++)
            {
                if (arr[j] > arr[j + 1])
                {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    
        // 輸出結(jié)果
        for (int i = 0; i < ARR_LEN; i++)
        {
            printf("arr[%d] = %d\n", i, arr[i]);
        }
    }
    
  7. 編寫程序,輸出1~1000之間的偶數(shù)昔头。
    #include<stdio.h>
    #define ARR_LEN 3
    
    void main() 
    {
        for (int i = 1; i <= 1000; i++)
        {
            if (i % 2 == 0)
            {
                printf("%4d  ", i);
            }
            // 十個數(shù)字一行
            if (i % 20 == 0)
            {
                printf("\n");
            }
        }
    }
    
  8. 從鍵盤輸入一串字符饼问,輸出至屏幕。
    #include<stdio.h>
    #define ARR_LEN 3
    
    void main() 
    {
        char arr[100] = "\0";
        scanf("%s", arr);
        printf("%s\n", arr);
    }
    
  9. 編寫一個程序减细,輸入半徑匆瓜,求圓的面積和體積。
    #include<stdio.h>
    #define PI 3.14
    
    void main() 
    {
        double r = 0;
        printf("請輸入圓的半徑:");
        scanf("%lf", &r);
    
        printf("圓的周長:%.2lf\n", 2 * PI * r);
        printf("圓的面積:%.2lf\n", PI * r * r);
    }
    
  10. 從鍵盤輸入兩個數(shù)未蝌,對其進(jìn)行加減乘除操作并將結(jié)果輸出至屏幕驮吱。
    #include<stdio.h>
    
    void main() 
    {
        int a = 0;
        int b = 0;
        
        printf("請輸入兩個整數(shù):");
        scanf("%d%d", &a, &b);
    
        printf("%d + %d = %d\n", a, b, a + b);
        printf("%d - %d = %d\n", a, b, a - b);
        printf("%d * %d = %d\n", a, b, a * b);
        printf("%d / %d = %d\n", a, b, a / b);
    }
    

第4章 順序結(jié)構(gòu)程序設(shè)計

常用輸入輸出函數(shù)

  • scanf()
  • printf()
  • getchar():用戶輸入的數(shù)據(jù)會被放入鍵盤緩沖區(qū),當(dāng)按下回車鍵時萧吠,系統(tǒng)就會從緩沖區(qū)中每次讀入一個字符左冬。
  • putchar()

習(xí)題答案

一、選擇題

  1. A
  2. C
  3. C
  4. B
  5. B
  6. D
  7. A
  8. A
  9. B
  10. C 注意:printf()函數(shù)中的表達(dá)式時按照從右往左的順序進(jìn)行計算的纸型。

二拇砰、填空題

  1. 0,3
  2. 10
  3. 0
  4. 如下:
    x=35,y=32
    x=#,y= 
    c=104,d=115
    m=0,n=0
    
  5. 5,1
  6. a
  7. 456,78
  8. 80
  9. h,104
  10. a,g
  11. 12,7
  12. a=5,b=5
  13. a,,
  14. e
  15. a,g

三、編程題

  1. 計算一元二次方程的 x2+4x+1=0 的根狰腌,結(jié)果保留兩位小數(shù)除破。
    #include<stdio.h>
    #include<math.h>
    
    void main() 
    {
        double x1, x2;
    
        x1 = (-4 - sqrt(4 * 4 - 4 * 1 * 1)) / (2 * 1);
        x2 = (-4 + sqrt(4 * 4 - 4 * 1 * 1)) / (2 * 1);
    
        printf("x1 = %.2lf, x2 = %.2lf\n", x1, x2);
    }
    
  2. 已知三角形的三邊,計算三角形的面積琼腔,結(jié)果保留3位小數(shù)瑰枫。
    #include<stdio.h>
    #include<math.h>
    
    void main() 
    {
        float a = 0.0f;
        float b = 0.0f;
        float c = 0.0f;
        float s = 0.0f;
        float area = 0.0f;
    
        printf("請輸入三角形的三邊:");
        scanf("%f%f%f", &a, &b, &c);
    
        s = (float)1 / 2 * (a + b + c);
        area = (float)sqrt(s * (s-a) * (s - b) * (s - c));
    
        printf("面積位:%.2f\n", area);
    }
    
  3. 已知一個圓的周長,編寫一個程序求其面積。要求從鍵盤輸入圓的周長光坝,將計算得出的面積輸出至屏幕尸诽。
    #include<stdio.h>
    #include<math.h>
    
    void main() 
    {
        double length = 0.0;
        double r = 0.0;
        double area = 0.0;
    
        printf("請輸入圓的周長:");
        scanf("%lf", &length);
    
        r = length / 2 / 3.14;
        area = 3.14 * r * r;
    
        printf("面積位:%lf\n", area);
    }
    
  4. 編寫一個程序,從鍵盤輸入一個字符盯另,實現(xiàn)輸出臨近該字符的5個字符(包括該字符性含,并以該字符為中心)。
    #include<stdio.h>
    
    void main() 
    {
        char c = '\0';
        c = getchar();
        printf("%c%c%c%c%c\n", c -2, c - 1, c, c + 1, c + 2);
    }
    
  5. 編寫一個程序鸳惯,從鍵盤輸入一個梯形的上底商蕴、下底和高,求其面積并將結(jié)果輸出至屏幕芝发。
    #include<stdio.h>
    
    void main() 
    {
        double top_len = 0.0;
        double bottom_len = 0.0;
        double height = 0.0;
        double area = 0.0;
    
        printf("請輸入梯形的上底下底和高:");
        scanf("%lf%lf%lf", &top_len, &bottom_len, &height);
    
        area = (double)1 / 2 * (top_len + bottom_len) * height;
    
        printf("面積為:%.2lf\n", area);
    }
    
  6. 從鍵盤輸入一串字符究恤,從該字符串中統(tǒng)計字符a的個數(shù)。
    #include<stdio.h>
    
    void main() 
    {
        int count = 0;
        char c = '\0';
    
        while ((c = getchar()) != '\n') 
        {
            if (c == 'a')
            {
                count++;
            }
        }
    
        printf("字母a出現(xiàn)的次數(shù)為:%d\n", count);
    }
    
  7. 從鍵盤輸入3個數(shù)后德,編寫一個程序計算其總和及平均值。
    #include<stdio.h>
    
    void main() 
    {
        int a = 0;
        int b = 0;
        int c = 0;
        int sum = 0;
        float average = 0.0f;
    
        printf("請輸入三個整數(shù):");
        scanf("%d%d%d", &a, &b, &c);
    
        sum = a + b + c;
        average = (float)sum / 3;
    
        printf("總和是:%d, 平均值是:%.2f\n", sum , average);
    }
    
  8. 編寫程序?qū)r間轉(zhuǎn)化為秒后輸出抄腔,例如8時20分45秒轉(zhuǎn)化過程為83600+2060+45瓢湃。
    #include<stdio.h>
    
    void main() 
    {
        int hour = 0;
        int minute = 0;
        int second = 0;
        int result = 0;
    
        printf("請輸入時分秒:");
        scanf("%d%d%d", &hour, &minute, &second);
    
        result = hour * 3600 + minute * 60 + second;
    
        printf("等價于%d秒\n", result);
    }
    
  9. 從鍵盤輸入兩個數(shù),交換兩個數(shù)的值赫蛇,再輸出至屏幕绵患。
    #include<stdio.h>
    
    void main() 
    {
        int a = 0;
        int b = 0;
        int temp = 0;
    
        printf("請輸入兩個整數(shù):");
        scanf("%d%d", &a, &b);
    
        printf("交換之前的值是:a=%d, b=%d\n", a, b);
    
        temp = a;
        a = b;
        b = temp;
    
        printf("交換后的值是:a=%d, b=%d\n", a, b);
    }
    
  10. 現(xiàn)有函數(shù) y=5x+3,從鍵盤輸入一個數(shù)悟耘,輸出對應(yīng)的 y 值落蝙。
    #include<stdio.h>
    
    void main() 
    {
        int x = 0;
        int y = 0;
    
        printf("請輸入x的值:");
        scanf("%d", &x);
    
        y = 5 * x + 3;
    
        printf("y的值是:%d\n", y);
    }
    
  11. 從鍵盤輸入一個小寫字母,要求將其轉(zhuǎn)換為大寫字母后輸出暂幼。
    #include<stdio.h>
    
    void main() 
    {
        char c = '\0';
    
        c = getchar();
    
        if ('a' <= c && c <= 'z')
        {
            c -= 32;
            printf("對應(yīng)的大寫字母為:%c\n", c);
        }
        else
        {
            printf("輸入不合法\n");
        }
    }
    

第5章 條件結(jié)構(gòu)程序設(shè)計

分類

  • if-else
  • switch-case

習(xí)題答案

一筏勒、選擇題

  1. D
  2. C
  3. C
  4. D
  5. C
  6. D
  7. D
  8. B
  9. B
  10. B
  11. A
  12. B
  13. B
  14. A
  15. C

二、填空題

  1. second
  2. 2,3,2
  3. 1,2
  4. 2
  5. 0,1,1
  6. &x, x > 0, %d, y
  7. a, 1 <= a && a <= 7, case 5, else
  8. 20,30
  9. zerofive
  10. 0
  11. 9或3
  12. 1,1,1
  13. 5
  14. 5
  15. 11
  16. 5
  17. 1
  18. 7
  19. $$16

三旺嬉、編程題

  1. 輸入三個數(shù)管行,輸出其中的最大數(shù)和最小數(shù)。
    #include<stdio.h>
    
    void main() 
    {
        int a = 0;
        int b = 0;
        int c = 0;
        int max = 0;
        int min = 0;
    
        printf("請輸入三個整數(shù):");
        scanf("%d%d%d", &a, &b, &c);
    
        // 計算最大數(shù)
        max = a;
        if (max < b)
        {
            max = b;
        }
        if (max < c)
        {
            max = c;
        }
    
        // 計算最小數(shù)
        min = a;
        if (min > b)
        {
            min = b;
        }
        if (min > c)
        {
            min = c;
        }
    
        // 輸出最大數(shù)和最小數(shù)
        printf("最大數(shù)是:%d\n最小數(shù)是:%d\n", max, min);
    }
    
  2. 用*號輸出字母C的團(tuán)邪媳。
    #include<stdio.h>
    
    void main() 
    {
        printf("*****\n");
        printf("*\n");
        printf("*\n");
        printf("*\n");
        printf("*****\n");
    }
    
  3. 某班進(jìn)行學(xué)習(xí)成績評估捐顷,若學(xué)習(xí)成績大于或等于90分的同學(xué)用A表示,60~89分之間的同學(xué)用B表示雨效,60分以下的同學(xué)用C表示迅涮。利用條件運算符的嵌套來完成此題。
    #include<stdio.h>
    
    void main() 
    {
        int score = 0;
        
        printf("請輸入成績:");
        scanf("%d", &score);
    
        if (score >= 90)
        {
            printf("A");
        }
        else if (score >= 60)
        {
            printf("B");
        }
        else
        {
            printf("C");
        }
    }
    
  4. 輸入一個年份徽龟,判斷該年是否為閏年叮姑。
    #include<stdio.h>
    
    void main() 
    {
        int year = 0;
    
        printf("請輸入年份:");
        scanf("%d", &year);
    
        if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
        {
            printf("%d年是閏年\n", year);
        }
        else
        {
            printf("%d年不是閏年\n", year);
        }
    }
    
  5. 輸入某年某月某日,判斷并輸出這一天是這一年的第幾天顿肺。
    #include<stdio.h>
    #include<stdbool.h>
    
    void main() 
    {
        int year = 0;
        int month = 0;
        int day = 0;
        int sum = 0;
        bool flag = false;
    
        printf("請輸入年月日:");
        scanf("%d%d%d", &year, &month, &day);
    
        switch (month)
        {
        case 1:
            sum = 0;
            break;
        case 2:
            sum = 31;
            break;
        case 3:
            sum = 50;
            break;
        case 4:
            sum = 90;
            break;
        case 5:
            sum = 120;
            break;
        case 6:
            sum = 151;
            break;
        case 7:
            sum = 181;
            break;
        case 8:
            sum = 212;
            break;
        case 9:
            sum = 243;
            break;
        case 10:
            sum = 273;
            break;
        case 11:
            sum = 304;
            break;
        case 12:
            sum = 334;
            break;
        default:
            break;
        }
    
        sum += day;
    
        if ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0))
        {
            flag = true;
        }
    
        if (flag && month > 2)
        {
            sum += 1;
        }
    
        printf("對應(yīng)的天數(shù)是:%d\n", sum);
    }
    
  6. 輸入一個數(shù)戏溺,判斷其為奇數(shù)還是偶數(shù)渣蜗。
    #include<stdio.h>
    
    int main()
    {
        int a = 0;
    
        printf("請輸入一個整數(shù):");
        scanf("%d", &a);
    
        // 判斷是否是偶數(shù)
        if (a % 2 == 0)
        {
            printf("%d 是偶數(shù)\n", a);
        }
        else
        {
            printf("%d 是奇數(shù)\n", a);
        }
        return 0;
    }
    
  7. 從鍵盤輸入兩個數(shù),調(diào)換這兩個數(shù)的值旷祸。
    #include<stdio.h>
    
    int main()
    {
        int a = 0;
        int b = 0;
        int temp = 0;
    
        // 從鍵盤輸入兩個整數(shù)
        printf("請輸入兩個整數(shù):");
        scanf("%d%d", &a, &b);
    
        // 輸出交換前的值
        printf("交換前:a=%d, b=%d\n", a, b);
    
        // 交換這兩個數(shù)
        temp = a;
        a = b;
        b = temp;
    
        // 輸出交換后的結(jié)果
        printf("交換后:a=%d, b=%d\n", a, b);
        return 0;
    }
    
  8. 輸入一個不超過5位的數(shù)字耕拷,求:(1)求其是幾位數(shù);(2)分別輸出這幾位數(shù)字托享;(3)把這幾位數(shù)分別加1再輸出骚烧。
    #include<stdio.h>
    
    int main()
    {
        long a = 0; // 輸入的數(shù)字
        int count = 0; // 數(shù)字的位數(shù)
        long temp = 0;  // 用于保存輸入的數(shù)字的副本
        int i = 0; // 循環(huán)變量
    
        // 輸入一個不超過5位的數(shù)字
        printf("請輸入一個不超過5位的整數(shù):");
        scanf("%ld", &a);
    
        // 求該數(shù)是幾位數(shù)并輸出至屏幕
        if (a > 9999)
        {
            count = 5;
        }
        else if (a > 999)
        {
            count = 4;
        }
        else if (a > 99)
        {
            count = 3;
        }
        else if (a > 9)
        {
            count = 2;
        }
        else
        {
            count = 1;
        }
        printf("該數(shù)是%d位數(shù)\n", count);
    
        // 分別輸出各個位的數(shù)字
        printf("\n該數(shù)的各個位的數(shù)字是:\n");
        i = count;
        temp = a;
        while (i)
        {
            printf("%d 位數(shù)字是:%d\n", i, temp % 10);
            temp /= 10;
            i--;
        }
        // 各個位的數(shù)字加1后輸出
        printf("\n該數(shù)的各個位的數(shù)字加1是:\n");
        i = count;
        temp = a;
        while (i)
        {
            printf("%d 位數(shù)字是:%d\n", i, temp % 10 + 1);
            temp /= 10;
            i--;
        }
    
        return 0;
    }
    
  9. 編寫一個程序輸入一個學(xué)生三次的成績,并判斷該學(xué)生三次是否都及格闰围。若不及格則輸出“有不及格科目”赃绊,若都及格則輸出三次的平均成績。
    #include<stdio.h>
    
    int main()
    {
        int a = 0;
        int b = 0;
        int c = 0;
        float average = 0.0f;
    
        // 輸入三門成績
        printf("請輸入三門課程的成績:");
        scanf("%d%d%d", &a, &b, &c);
    
        // 判斷是否存在不及格的科目
        if (a >= 60 && b >= 60 && c >= 60)
        {
            average = (float)(a + b + c) / 3;
            printf("三門課程的平均分是:%.2f\n", average);
        }
        else
        {
            printf("存在不及格的科目\n");
        }
    
        return 0;
    }
    
  10. 輸出特殊圖案羡榴,把下面代碼在C環(huán)境中運行看看碧查,Very Beautiful!
    #include<stdio.h>
    
    int main()
    {
        char a = 176, b = 219;
    
        printf("%c%c%c%c%c\n", b, a, a, a, b);
        printf("%c%c%c%c%c\n", a, b, a, b, a);
        printf("%c%c%c%c%c\n", a, a, b, a, a);
        printf("%c%c%c%c%c\n", a, b, a, b, a);
        printf("%c%c%c%c%c\n", b, a, a, a, b);
        return 0;
    }
    

第6章 循環(huán)結(jié)構(gòu)程序設(shè)計

分類

  • for
  • while
  • do-while

習(xí)題答案

一校仑、選擇題

  1. B
  2. B
  3. D
  4. B
  5. B
  6. B
  7. A
  8. B
  9. B
  10. A

二忠售、填空題

  1. 12
  2. main, int, %d
  3. 4,8
  4. 0,3
  5. x >= 0, max < x, %d, %d
  6. 7
  7. 3
  8. 運行結(jié)果是:
    *****
    ****
    ***
    **
    *
    
  9. ***27
  10. 1
  11. 6
  12. 1,2
  13. 4
  14. 18
  15. 1.283333
  16. 27
  17. 運行結(jié)果為:
    #
    ##
    ###
    
  18. 24

三、編程題

  1. 編寫一個程序迄沫,求出1000以內(nèi)的完全數(shù)稻扬。
    #include<stdio.h>
    
    int main()
    {
        int sum = 0; // 存放因子之和
    
        for (int i = 1; i < 1000; i++)
        {
            sum = 0;
            for (int j = 1; j < i; j++)
            {
                if (i % j == 0)
                {
                    sum += j;
                }
            }
            if (sum == i)
            {
                printf("%3d\n", i);
            }
        }
        return 0;
    }
    
  2. 百馬百擔(dān)問題:現(xiàn)有100匹馬,100擔(dān)貨羊瘩,大馬駝3擔(dān)泰佳,中馬駝2擔(dān),兩匹小馬駝1擔(dān)尘吗,問大馬逝她、中馬、小馬各應(yīng)需多少匹睬捶。
    #include<stdio.h>
    
    int main()
    {
        for (int i = 0; i <= 33; i++)
        {
            for (int j = 0; j <= 50; j++)
            {
                for (int k = 0; k <= 200; k += 2)
                {
                    if ((i + j + k == 100) && (3 * i + 2 * j + k / 2 == 100))
                    {
                        printf("需大馬%d匹汽绢、中馬%d匹、小馬%d匹\n", i, j, k);
                    }
                }
            }
        }
        return 0;
    }
    
  3. 編寫程序求出0~200中能被4整除余3的數(shù)侧戴。
    #include<stdio.h>
    
    int main()
    {
        for (int i = 0; i <= 200; i++)
        {
            if (i % 4 == 3)
            {
                printf("%d\n", i);
            }
        }
        return 0;
    }
    
  4. 從鍵盤輸入一個數(shù)n宁昭,求其階乘n!。
    #include<stdio.h>
    
    int main()
    {
        int num = 0;
        int sum = 1;
    
        printf("請輸入一個整數(shù):");
        scanf("%d", &num);
    
        for (int i = num; i > 1; i--)
        {
            sum *= i;
        }
    
        printf("%d! = %d\n", num, sum);
        return 0;
    }
    
  5. 現(xiàn)有100元酗宋,用來買7元积仗、8元、9元的商品蜕猫,問將100元花完總共有多少種方式寂曹。
    #include<stdio.h>
    
    int main()
    {
        int count = 0;
    
        for (int i = 0; i <= 14; i++)
        {
            for (int j = 0; j < 12; j++)
            {
                for (int k = 0; k < 11; k++)
                {
                    if (7 * i + 8 * j + 9 * k == 100)
                    {
                        printf("7元商品%d件、8元商品%d件、9元商品%d件\n", i, j, k);
                        count++;
                    }
                }
            }
        }
        printf("總共有%d種花法\n", count);
        return 0;
    }
    
  6. 猜數(shù)游戲:游戲中隨機產(chǎn)生一個1~100之間的數(shù)隆圆,請用戶猜數(shù)漱挚。若10次之內(nèi)猜中則提示成功,若10次之內(nèi)沒有猜中則提示失敗渺氧。
    #include<stdio.h>
    #include<stdlib.h>
    #include<time.h>
    #include<stdbool.h>
    
    int main()
    {
        int guess = 0;
        bool flag = false;
        int num = 0;    // 用戶輸入的數(shù)字
    
        srand((unsigned)time(NULL));
        guess = rand() % 101;
    
        for (int i = 0; i < 10; i++)
        {
            printf("猜第 %d 次:", i + 1);
            scanf("%d", &num);
    
            if (num == guess)
            {
                flag = true;
                break;
            }
            else
            {
                printf("哎呀旨涝,猜錯了,再猜一次吧!\n");
            }
        }
    
        if (flag)
        {
            printf("恭喜您猜對啦\n");
        }
        else
        {
            printf("您已經(jīng)猜了10次侣背,都沒有猜對哦\n");
        }
        return 0;
    }
    
  7. 求出100~400中滿足條件的所有數(shù)白华,要求三個數(shù)字之積為24,三個數(shù)字之和為12贩耐。
    #include<stdio.h>
    
    int main()
    {
        
        for (int i = 100; i <= 400; i++)
        {
            // 計算各個位數(shù)字之和
            int sum = i % 10 + i % 100 / 10 + i / 100;
    
            // 計算各個位數(shù)字之積
            int temp = (i % 10) * (i % 100 / 10) * (i / 100);
    
            // 判斷是否是要找的數(shù)字
            if (temp == 24 && sum == 12)
            {
                printf("%d\n", i);
            }
        }
        return 0;
    }
    
  8. 從鍵盤輸入20個數(shù)弧腥,求出其中正數(shù)的個數(shù)及其平均值。
    #include<stdio.h>
    
    int main()
    {
        int num = 0; // 每次輸入的數(shù)字
        int count = 0; // 正數(shù)的個數(shù)
        int sum = 0; // 所有正數(shù)的和
    
        // 輸入20個數(shù)字
        for (int i = 0; i < 20; i++)
        {
            printf("請輸入第 %d 個數(shù)字:", i+1);
            scanf("%d", &num);
    
            if (num > 0)
            {
                count++;
                sum += num;
            }
        }
    
        // 求平均數(shù)并輸出
        printf("正數(shù)的個數(shù)是 %d 個潮太,其平均值是 %.2f\n", count, (float)sum / count);
        return 0;
    }
    
  9. 編寫一個程序管搪,打印出所有的水仙花數(shù)。
    #include<stdio.h>
    
    int main()
    {
        int a = 0; // 保存?zhèn)€位數(shù)
        int b = 0; // 保存十位數(shù)
        int c = 0; // 保存百位數(shù)
        int d = 0; // 保存各個位的平方之和
    
        for (int i = 100; i < 1000; i++)
        {
            a = i % 10;
            b = i % 100 / 10;
            c = i / 100;
            d = a * a * a + b * b * b + c * c * c;
            if (d == i)
            {
                printf("%d\n", i);
            }
        }
        return 0;
    }
    
  10. 輸入一串字符铡买,統(tǒng)計其中的字母抛蚤、空格、數(shù)字及其他字符的個數(shù)寻狂。
    #include<stdio.h>
    #define STR_LEN 100
    
    int main()
    {
        char str[STR_LEN] = { '\0' };
        int alpha = 0;
        int blank = 0;
        int digit = 0;
        int other = 0;
    
        // 輸入一串字符
        printf("請輸入一個字符串:\n");
        gets_s(str, STR_LEN);
    
        // 計算每種類型的字符的個數(shù)
        for (int i = 0; i < STR_LEN && str[i] != '\0'; i++)
        {
            if (('a' <= str[i] && str[i] <= 'z') || ('A' <= str[i] && str[i] <= 'Z'))
            {
                alpha++;
            }
            else if ('0' <= str[i] && str[i] <= '9')
            {
                digit++;
            }
            else if (str[i] == ' ')
            {
                blank++;
            }
            else
            {
                other++;
            }
        }
    
        // 輸出統(tǒng)計的結(jié)果
        printf("字母有 %d 個\n空格有 %d 個\n數(shù)字有 %d 個\n其他有 %d 個\n", alpha, blank, digit, other);
        return 0;
    }
    
  11. 編寫程序,從鍵盤輸入一個數(shù)朋沮,判斷是否為素數(shù)并輸出相應(yīng)的信息至屏幕蛇券。
    #include<stdio.h>
    #include<stdbool.h>
    
    int main()
    {
        int num = 0;
        bool flag = true;
    
        printf("請輸入一個整數(shù):");
        scanf("%d", &num);
    
        for (int i = 2; i < num / 2; i++)
        {
            if (num % i == 0)
            {
                flag = false;
            }
        }
    
        if (flag)
        {
            printf("%d是素數(shù)\n", num);
        }
        else
        {
            printf("%d不是素數(shù)\n", num);
        }
        return 0;
    }
    
  12. 編寫程序,打印九九乘法表樊拓。
    #include<stdio.h>
    
    int main()
    {
        for (int i = 1; i <= 9; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                printf("%d*%d=%-2d\t", i, j, i * j);
            }
            printf("\n");
        }
        return 0;
    }
    

第7章 數(shù)組

習(xí)題答案

一纠亚、選擇題

  1. A
  2. B
  3. C
  4. A
  5. A
  6. B
  7. B
  8. C
  9. A

二、填空題

  1. abcdef
  2. 10101010101010101010
  3. min > a[i], k = i, a[k]
  4. gets(s[i]), strcpy(c, s[i])
  5. 運行結(jié)果如下:
    1234
    5678
    9000
    
  6. 6
  7. aceg
  8. 1471013
  9. 02345078
  10. 1-11-11
  11. Hello world!
  12. 80
  13. 運行結(jié)果如下:
    第1個元素為1
    第2個元素為2
    第3個元素為3
    第4個元素為4
    第5個元素為5
    第6個元素為6
    第7個元素為7
    第8個元素為8
    第9個元素為9
    第10個元素為10
    

三筋夏、編程題

  1. 設(shè)有以下10個數(shù)(4蒂胞,2,7条篷,8骗随,9,10赴叹,11鸿染,24,5乞巧,6)涨椒,編寫程序用選擇排序法使這10個數(shù)按升序排序,并輸出排序后的結(jié)果。
    #include<stdio.h>
    
    int main()
    {
        int num[10] = { 4, 2, 7, 8, 9, 10, 11, 24, 5, 6 };
        int k = 0;
        int temp = 0;
    
        for (int i = 0; i < 9; i++)
        {
            k = i;
            for (int j = i + 1; j < 10; j++)
            {
                if (num[i] > num[j])
                {
                    k = j;
                }
            }
            if (k != i)
            {
                temp = num[i];
                num[i] = num[k];
                num[k] = temp;
            }
        }
    
        for (int i = 0; i < 10; i++)
        {
            printf("%3d", num[i]);
        }
        printf("\n");
    
        return 0;
    }
    
  2. 從鍵盤輸入30個整數(shù)蚕冬,統(tǒng)計并輸出這些數(shù)字中正數(shù)的個數(shù)免猾。
    #include<stdio.h>
    #define STR_LEN 30
    
    int main()
    {
        int num[STR_LEN] = { 0 };
        int count = 0;
    
        // 從鍵盤輸入數(shù)據(jù)
        for (int i = 0; i < STR_LEN; i++)
        {
            scanf("%d", &num[i]);
        }
    
        for (int i = 0; i < STR_LEN; i++)
        {
            if (num[i] > 0)
            {
                count++;
            }
        }
    
        printf("正數(shù)的個數(shù)是%d\n", count);
        return 0;
    }
    
  3. 從鍵盤輸入一個字符串,編寫一個程序?qū)崿F(xiàn)從鍵盤輸入一個數(shù)囤热,可刪除字符串該位置上的字符并輸出改變后的字符串猎提。
    #include<stdio.h>
    #define STR_LEN 100
    
    int main()
    {
        char str[STR_LEN] = { '\0 ' };
        int position = 0;
    
        printf("請輸入一個字符串:\n");
        gets(str, STR_LEN);
    
        printf("請輸入一個整數(shù):\n");
        scanf("%d", &position);
    
        // 刪除制定位置的字符
        for (int i = position - 1; i < STR_LEN - 1; i++)
        {
            str[i] = str[i + 1];
        }
    
        // 輸出結(jié)果
        puts(str);
        return 0;
    }
    
  4. 編寫一個程序,實現(xiàn)從鍵盤輸入10個整數(shù)赢乓,將其逆序輸出忧侧。
    #include<stdio.h>
    #define ARR_LEN 10
    
    int main()
    {
        int num[ARR_LEN] = { 0 };
    
        // 從鍵盤輸入ARR_LEN個數(shù)字
        for (int i = 0; i < ARR_LEN; i++)
        {
            printf("請輸入第%d個數(shù)字:", i + 1);
            scanf("%d", &num[i]);
        }
    
        // 逆序輸出
        for (int i = ARR_LEN - 1; i >= 0; i--)
        {
            printf("%d  ", num[i]);
        }
        printf("\n");
        return 0;
    }
    
  5. 現(xiàn)有一個長度為4X5的二維數(shù)組,要求將該數(shù)組的行和列元素互換牌芋,保存至另外一個數(shù)組中蚓炬,并輸出交換后的結(jié)果。
    #include<stdio.h>
    
    int main()
    {
        int num[4][5] = {
            {1, 2, 3, 4, 5},
            {6, 7, 8, 9, 10},
            {11, 12, 13, 14, 15},
            {16, 17, 18, 19, 20}
        };
        int result[5][4] = { 0 };
    
        // 行列元素互換保存到另一個數(shù)組里
        for (int i = 0; i < 4; i++)
        {
            for (int j = 0; j < 5; j++)
            {
                result[j][i] = num[i][j];
            }
        }
    
        // 輸出結(jié)果
        for (int i = 0; i < 5; i++)
        {
            for (int j = 0; j < 4; j++)
            {
                printf("%4d", result[i][j]);
            }
            printf("\n");
        }
        printf("\n");
    
        return 0;
    }
    
  6. 編寫一個程序躺屁,實現(xiàn)兩個字符串的合并肯夏。
    #include<stdio.h>
    
    int main()
    {
        char str1[50] = "hello world!";
        char str2[50] = " hello code!";
        char result[100] = "";
        int i = 0;
    
        for (int j = 0; str1[j] != '\0'; i++, j++)
        {
            result[i] = str1[j];
        }
        for (int j = 0; str2[j] != '\0'; i++, j++)
        {
            result[i] = str2[j];
        }
        result[i] = '\0';
    
        puts(result);
        return 0;
    }
    
  7. 編寫一個程序,將字符串倒序并輸出至屏幕犀暑。
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char str[100] = "";
    
        // 從鍵盤輸入字符串
        gets(str, 100);
    
        // 倒序輸出
        for (int i = strlen(str) - 1; i >= 0; i--)
        {
            putchar(str[i]);
        }
        putchar('\n');
    
        return 0;
    }
    
  8. 從鍵盤輸入10個數(shù)據(jù)驯击,利用冒泡排序法對其從小到大排序后輸出至屏幕。
    #include<stdio.h>
    
    int main()
    {
        int num[10] = { 0 };
        int temp = 0;
    
        // 從鍵盤輸入10個整數(shù)
        for (int i = 0; i < 10; i++)
        {
            printf("請輸入第%d個整數(shù):", i + 1);
            scanf("%d", &num[i]);
        }
    
        // 冒泡排序(從小到大)
        for (int i = 0; i < 10; i++)
        {
            for (int j = 0; j < 9 - i; j++)
            {
                if (num[j] > num[j + 1])
                {
                    temp = num[j];
                    num[j] = num[j + 1];
                    num[j + 1] = temp;
                }
            }
        }
    
        // 輸出至屏幕
        for (int i = 0; i < 10; i++)
        {
            printf("%d  ", num[i]);
        }
        printf("\n");
    
        return 0;
    }
    
  9. 從鍵盤輸入一串字符耐亏,以#為結(jié)束標(biāo)志徊都,統(tǒng)計其中字符的個數(shù)。
    #include<stdio.h>
    
    int main()
    {
        char str[100] = "";
        int count = 0;
    
        // 從鍵盤輸入一個字符串
        printf("請輸入一個字符串:\n");
        gets(str, 100);
    
        // 統(tǒng)計#前面的字符的個數(shù)
        for (int i = 0; str[i] != '#' && str[i] != '\0'; i++)
        {
            count++;
        }
    
        // 輸出結(jié)果
        printf("字符個數(shù)為:%d\n", count);
        return 0;
    }
    
  10. 現(xiàn)有一個字符串广辰,刪除特定位置上的字符串暇矫,輸出至屏幕。
    #include<stdio.h>
    #include<string.h>
    
    int main()
    {
        char str[100] = "Hello World! Hello Beijing!";
        int position = 3;
        char *p = NULL;
    
        p = str;
        strcpy((p + 2), (p + 3));
    
        printf("%s\n", str);
    
        return 0;
    }
    

第8章 指針

習(xí)題答案

一择吊、選擇題

  1. C
  2. D
  3. B
  4. D
  5. C
  6. B
  7. B
  8. B
  9. B
  10. B
  11. B
  12. C
  13. B
  14. B
  15. A

二李根、填空題

  1. 3
  2. a,b
  3. Hello, happy
  4. abcdshkg
  5. s, %s, *p++
  6. 1 2 3 4 5 6
  7. 4
  8. He
  9. 1 4 7 10 13 16 19 22
  10. 7
  11. 6,8,9
  12. 45
  13. C LanguageP
  14. 5,6

三、編程題

  1. 編寫一個函數(shù)几睛,實現(xiàn)字符串的復(fù)制功能房轿。
    #include<stdio.h>
    #define ARR_LEN 100
    
    int main()
    {
        char str1[ARR_LEN] = "hello world!";
        char str2[ARR_LEN] = "hello c program.";
        char *p1 = NULL;
        char *p2 = NULL;
    
        p1 = str1;
        p2 = str2;
    
        while (*p2)
        {
            *p1 = *p2;
            p1++;
            p2++;
        }
        *p1 = '\0';
    
        printf("str1 = %s\n", str1);
    
        return 0;
    }
    
  2. 從鍵盤輸入5個字符串,對這5個字符串從小到大排列并輸出排列結(jié)果所森。
    #include<stdio.h>
    #include<string.h>
    #define STR_LEN 100
    
    int main()
    {
        char s[5][STR_LEN] = { '\0' };
        char *str[5] = { NULL };
        char *p = NULL;
    
        // 從鍵盤輸入5個字符串
        for (int i = 0; i < 5; i++)
        {
            gets(s[i], STR_LEN);
            str[i] = s[i];
        }
    
        // 排序
        for (int i = 0; i < 4; i++)
        {
            for (int j = i + 1; j < 5; j++)
            {
                if (strcmp(str[i], str[j]) > 0)
                {
                    p = str[i];
                    str[i] = str[j];
                    str[j] = p;
                }
            }
        }
    
        // 輸出排序后的結(jié)果
        for (int i = 0; i < 5; i++)
        {
            puts(str[i]);
        }
        
        return 0;
    }
    
  3. 編寫一個函數(shù)囱持,通過指針實現(xiàn)兩個數(shù)的交換。
    #include<stdio.h>
    
    void swap(int *pa, int *pb)
    {
        int temp = 0;
        temp = *pa;
        *pa = *pb;
        *pb = temp;
    }
    
    int main()
    {
        int a = 3;
        int b = 5;
        int *pa = &a;
        int *pb = &b;
        void(*pswap)() = swap;
    
        // 交換之前
        printf("交換之前 a=%d, b=%d\n", a, b);
    
        // 交換
        pswap(pa, pb);
    
        // 交換之后
        printf("交換之后 a=%d, b=%d\n", a, b);
    
        return 0;
    }
    
  4. 從鍵盤輸入一個字符串焕济,分別統(tǒng)計字符串中字母洪唐、數(shù)字及其他字符的個數(shù)并輸出。
    #include<stdio.h>
    
    int main()
    {
        char str[100] = { '\0' };
        char *p = str;
        int alpha = 0;
        int digit = 0;
        int other = 0;
    
        // 從鍵盤上輸入一個字符串
        gets(p, 100);
    
        // 統(tǒng)計字符個數(shù)
        while (*p)
        {
            if ('0' <= *p && *p <= '9')
            {
                digit++;
            }
            else if (('a' <= *p && *p <= 'z') || ('A' <= *p && *p <= 'Z'))
            {
                alpha++;
            }
            else
            {
                other++;
            }
            p++;
        }
    
        // 輸出統(tǒng)計結(jié)果
        printf("字母有%d個吼蚁,數(shù)字有%d個凭需,其他有%d個\n", alpha, digit, other);
    
        return 0;
    }
    
  5. 從鍵盤輸入一個字符串和一個數(shù)字n问欠,要求從字符串第n個字符開始至字符串的末尾重新組成一個字符串輸出可帽。
    #include<stdio.h>
    
    int main()
    {
        char str[100] = { '\0' };
        char str2[100] = { '\0' };
        char *p = NULL;
        char *p2 = NULL;
        int n = 0;
    
        // 從鍵盤上輸入一個字符串
        gets(str, 100);
        scanf("%d", &n);
    
        p = str;
        p += n - 1;
        p2 = str2;
        while (*p2++ = *p++)
        {
            ;
        }
        
        // 輸出結(jié)果
        puts(str2);
    
        return 0;
    }
    
  6. 編寫一個程序垮斯,要求利用指針求任意數(shù)據(jù)的絕對值。
    #include<stdio.h>
    
    int main()
    {
        int num = 0;
        int *p = NULL;
    
        // 從鍵盤輸入一個整數(shù)
        printf("請輸入一個整數(shù):");
        scanf("%d", &num);
    
        // 求num的絕對值
        p = #
        if (*p < 0)
        {
            *p = -*p;
        }
    
        // 輸出num的絕對值
        printf("%d\n", *p);
    
        return 0;
    }
    
  7. 從鍵盤輸入10個數(shù)至數(shù)組中定嗓,然后將其中的元素進(jìn)行逆序存放后輸出枯怖。
    #include<stdio.h>
    #define ARR_LEN 10
    
    int main()
    {
        int num[ARR_LEN] = { 0 };
        int num_other[ARR_LEN] = { 0 };
        int *p1 = NULL;
        int *p2 = NULL;
    
        // 從鍵盤輸入ARR_LEN個數(shù)字
        for (int i = 0; i < ARR_LEN; i++)
        {
            printf("請輸入第 %2d 個數(shù):", i + 1);
            scanf("%d", &num[i]);
        }
    
        // 逆序存入另一個數(shù)組
        p1 = num;
        p2 = num_other;
    
        for (int i = 0; i < ARR_LEN; i++)
        {
            *(p2 + ARR_LEN - 1 - i) = *(p1 + i);
        }
    
        // 輸出逆序后的數(shù)組
        for (int i = 0; i < ARR_LEN; i++)
        {
            printf("%d ", *(p2 + i));
        }
    
        return 0;
    }
    
  8. 從鍵盤輸入一個字符串注整,將其逆序輸出。
    #include<stdio.h>
    #include<string.h>
    #define ARR_LEN 100
    
    int main()
    {
        char str[ARR_LEN] = { '\0' };
        char *p = NULL;
    
        // 從鍵盤輸入一個字符串
        gets(str, ARR_LEN);
    
        // 逆序輸出
        p = str;
        p += strlen(str) - 1;
        for (int i = 0; i < strlen(str); i++)
        {
            putchar(*p);
            p--;
        }
    
        return 0;
    }
    
  9. 從鍵盤輸入兩個字符串s1和s2度硝,將s2連接至s1后輸出肿轨。
    #include<stdio.h>
    #include<string.h>
    #define ARR_LEN 100
    
    int main()
    {
        char s1[ARR_LEN] = { '\0' };
        char s2[ARR_LEN] = { '\0' };
        char *p1 = NULL;
        char *p2 = NULL;
    
        // 從鍵盤輸入連個字符串
        gets(s1, ARR_LEN);
        gets(s2, ARR_LEN);
    
        // 連接字符串
        p1 = s1;
        p2 = s2;
        while (*p1)
        {
            p1++;
        }
        while (*p1 = *p2)
        {
            p1++;
            p2++;
        }
        *p1 = '\0';
    
        // 輸出連接后的字符串
        puts(s1);
    
        return 0;
    }
    
  10. 從鍵盤輸入兩個字符串,編寫一個程序拍段兩個字符串是否相等蕊程。
    #include<stdio.h>
    #include<stdbool.h>
    #define ARR_LEN 100
    
    int main()
    {
        char s1[ARR_LEN] = { '\0' };
        char s2[ARR_LEN] = { '\0' };
        char *p1 = NULL;
        char *p2 = NULL;
    
        // 從鍵盤輸入兩個字符串
        gets(s1, ARR_LEN);
        gets(s2, ARR_LEN);
    
        // 比較字符串
        p1 = s1;
        p2 = s2;
        while (true)
        {
            if (*p1 > *p2)
            {
                printf("s1 > s2\n");
                break;
            }
            else if (*p1 < *p2)
            {
                printf("s1 < s2\n");
            }
            else
            {
                p1++;
                p2++;
                continue;
            }
        }
    
        return 0;
    }
    

第9章 函數(shù)

習(xí)題答案

一椒袍、選擇題

  1. B
  2. B
  3. D
  4. A
  5. D
  6. B
  7. A

二、填空題

  1. 10
  2. 10,20
  3. 運行結(jié)果如下:
    1, 2, 3, 4, 
    6, 7, 8, 9, 6, 7, 8, 9, 
    
  4. 246
  5. 1,2
  6. 1346869105
  7. 10,20,30,40
  8. 6,1
  9. -5,5
  10. 7,3,11
  11. 8
  12. 3,9
  13. 5,5
  14. 23456
  15. gggggggh

三藻茂、編程題

  1. 編寫一個函數(shù)驹暑,從鍵盤輸入一個字符串,將其反序輸出辨赐。
    #include <stdio.h>
    #include<string.h>
    
    int reverse(char str[])
    {
        int len = strlen(str);
        for (int i = len - 1; i >= 0; i--)
        {
            printf("%c", str[i]);
        }
        printf("\n");
    }
    
    int main()
    {
        char str[100] = "";
        printf("請輸入一個字符串:\n");
        gets(str, 100);
        reverse(str);
        return 0;
    }
    
  2. 從鍵盤輸入一個數(shù)n优俘,求1+2+3+...+n的值,要求用遞歸的方式求解掀序。
#include<stdio.h>

int iterate(int n)
{
    if (n == 1)
    {
        return 1;
    }
    else
    {
        return n + iterate(n - 1);
    }
}

int main()
{
    int n = 0;
    
    printf("請輸入一個整數(shù):");
    scanf("%d", &n);
    
    printf("值為:%d\n", iterate(n));
    
    return 0;
}
  1. 從鍵盤輸入一個字符串帆焕,要求從該字符串的第n個位置開始至末位組成一個新的字符串并將結(jié)果輸出至屏幕。
    #include<stdio.h>
    
    int main()
    {
        char str[100] = "";
        int n = 0;
        char *p = NULL;
        
        scanf("%s", str);
        scanf("%d", &n);
        
        p = str;
        p += n - 1;
        printf("%s\n", p);
        
        return 0;
    }
    
  2. 從鍵盤輸入一個字符串不恭,統(tǒng)計其中字母的個數(shù)叶雹。
    #include<stdio.h>
    
    int count(char *p)
    {
        int n = 0;
        while (*p)
        {
            if (('a' <= *p && *p <= 'z') || ('A' <= *p && *p <= 'Z'))
            {
                n++;
            }
            p++;
        }
        return n;
    }
    
    int main()
    {
        char str[100] = "";
        
        gets(str);
        
        printf("%d\n", count(str));
        
        return 0;
    }
    
    
  3. 編寫一個函數(shù),判斷一個數(shù)是否為素數(shù)县袱。
    #include<stdio.h>
    #include<stdbool.h>
    
    bool sushu(char num)
    {
        bool flag = true;
        
        for (int i = 2; i <= num / 2; i++)
        {
            if (num % 2 == 0)
            {
                flag = false;
            }
        }
        return flag;
    }
    
    int main()
    {
        int n = 0;
        
        printf("請輸入一個整數(shù):");
        scanf("%d", &n);
        
        printf("%d %s是素數(shù)\n", n, sushu(n) ? "" : "不");
        
        return 0;
    }
    
  4. 從鍵盤輸入多個字符串,編寫一個函數(shù)對這些字符串從大到小排序佑力,并輸出排序結(jié)果式散。
    #include<stdio.h>
    #include<string.h>
    
    void sort(char *p[])
    {
        char *temp = NULL;
        
        for (int i = 0; i < 4; i++)
        {
            for (int j = i + 1; j < 5; j++)
            {
                if (strcmp(p[i], p[j]) < 0)
                {
                    temp = p[i];
                    p[i] = p[j];
                    p[j] = temp;
                }
            }
        }
        
        for (int i = 0; i < 5; i++)
        {
            printf("%s\n", p[i]);
        }
    }
    
    int main()
    {
        char str[5][100] = { "" };
        char *p[5] = { NULL };
        
        for (int i = 0; i < 5; i++)
        {
            gets(str[i]);
            p[i] = str[i];
        }
        
        sort(p);
        
        return 0;
    }
    
  5. 編寫一個程序,求1!+2!+3!+4!的值打颤。
    #include<stdio.h>
    
    int sum(int n)
    {
        int a = 1;
        int sum = 0;
        
        for (int i = 1; i <= n; i++)
        {
            a *= i;
            sum += a;
        }
        
        return sum;
    }
    
    int main()
    {
        int n = 4;
        
        printf("%d\n", sum(n));
    
        return 0;
    }
    
  6. 編寫一個函數(shù)暴拄,判斷一個字母是否為小寫字母,若為小寫字母則轉(zhuǎn)化成大寫字母后輸出编饺。
    #include<stdio.h>
    
    char touppercase(char c)
    {
        if ('a' <= c && c <= 'z')
        {
            c -= 32;
        }
        
        return c;
    }
    
    int main()
    {
        char c = 'a';
        
        printf("%c\n", touppercase(c));
    
        return 0;
    }
    
  7. 編寫一個函數(shù)乖篷,將字符串逆序輸出至屏幕。
    #include<stdio.h>
    #include<string.h>
    
    void fun(char *p)
    {
        for (int i = (int)strlen(p) - 1; i >= 0; i--)
        {
            printf("%c", *(p + i));
        }
        printf("\n");
    }
    
    int main()
    {
        char str[100] = "Hello World!";
        
        fun(str);
        
        return 0;
    }
    
  8. 編寫一個函數(shù)透且,實現(xiàn)字符串的連接功能撕蔼。
    #include<stdio.h>
    #include<string.h>
    
    void fun(char *str1, char *str2)
    {
        char *temp = NULL;
        temp = str1;
        
        while (*str1)
        {
            str1++;
        }
        while ((*str1 = *str2))
        {
            str1++;
            str2++;
        }
        *str1 = '\0';
        
        printf("%s\n", temp);
    }
    
    int main()
    {
        char str1[100] = "Hello World!";
        char str2[100] = " Hello C!";
        
        fun(str1, str2);
        
        return 0;
    }
    

第10章 結(jié)構(gòu)型豁鲤、共用型、枚舉型及用戶自定義型數(shù)據(jù)

結(jié)構(gòu)體類型

  • 定義
    struct 結(jié)構(gòu)體名
    {
        結(jié)構(gòu)體成員
    };
    
  • 引用
    結(jié)構(gòu)體變量名.成員名;
    

結(jié)構(gòu)指針

  • 定義
    struct 結(jié)構(gòu)體類型 *指針名;
    
  • 引用
    (*指針名).成員名;
    指針名->成員名;
    

共用體

  • 定義
    union 共用體名
    {
        成員表
    };
    

枚舉型

  • 定義
    enum 枚舉類型名 {枚舉元素表};
    

用戶自定義類型

  • 定義
    typedef 類型名 標(biāo)識名;
    

習(xí)題答案

一鲸沮、填空題

  1. D
  2. C
  3. D
  4. A
  5. A
  6. B
  7. A
  8. B
  9. B
  10. 262

二琳骡、填空題

  1. 9
  2. 8
  3. abcdef
  4. 3,8
  5. 17
  6. 16
  7. W
  8. 5,6,0
  9. 1,3,5,7,9,11,13,15,17,19,
  10. 8
  11. 0,1,2,3
  12. 4
  13. yangwu,90
  14. 運行結(jié)果如下:
    5,89.5
    8,91.7
    
  15. 20,Marry10,Marry

三、編程題

  1. 編寫一個程序讼溺,用來記錄一個學(xué)生的信息楣号。
    #include <stdio.h>
    
    int main()
    {
        struct student
        {
            char name[10];  // 姓名
            int num;    // 學(xué)號
            int age;    // 年齡
            char sex;   // 性別
            int score;  // 成績
        };
        struct student stu;
    
        printf("請輸入學(xué)生的信息:");
        scanf("%s %d %d %c %d", stu.name, &stu.num, &stu.age, &stu.sex, &stu.score);
    
        printf("%s, %d, %d, %c, %d\n", stu.name, stu.num, stu.age, stu.sex, stu.score);
    
        return 0;
    }
    
  2. 現(xiàn)有5名學(xué)生,要求編寫程序從鍵盤輸入這5名學(xué)生的信息怒坯,其中包括學(xué)號炫狱、姓名、性別剔猿、成績等信息视译,再將其輸出。
    #include <stdio.h>
    
    int main()
    {
        struct student
        {
            char name[10];  // 姓名
            int num;    // 學(xué)號
            int age;    // 年齡
            char sex;   // 性別
            int score;  // 成績
        };
        struct student stu[5];
    
        printf("請輸入學(xué)生的信息:\n");
        for (int i = 0; i < 5; i++)
        {
            printf("str[%d] -> ", i);
            scanf("%s %d %d %c %d", stu[i].name, &stu[i].num, &stu[i].age, &stu[i].sex, &stu[i].score);
        }
    
        for (int i = 0; i < 5; i++)
        {
            printf("str[%d] -> ", i);
            printf("%s, %d, %d, %c, %d\n", stu[i].name, stu[i].num, stu[i].age, stu[i].sex, stu[i].score);
        }
    
        return 0;
    }
    
  3. 編寫程序艳馒,利用結(jié)構(gòu)體輸入若干個學(xué)生的信息憎亚,將其寫至文件中。
    #include <stdio.h>
    
    int main()
    {
        struct student
        {
            char name[10];  // 姓名
            int num;    // 學(xué)號
            int age;    // 年齡
            char sex;   // 性別
            int score;  // 成績
        };
        struct student stu[5];
        FILE *fp = NULL;
    
        printf("請輸入學(xué)生的信息:\n");
        for (int i = 0; i < 5; i++)
        {
            printf("str[%d] -> ", i);
            scanf("%s %d %d %c %d", stu[i].name, &stu[i].num, &stu[i].age, &stu[i].sex, &stu[i].score);
        }
        fp = fopen("students.txt", "w");
        fwrite(stu, sizeof(struct student), 5, fp);
        fclose(fp);
        return 0;
    }
    
  4. 創(chuàng)建一個鏈表弄慰,輸入若干個學(xué)生的信息第美,其中包括學(xué)號、姓名陆爽、成績什往,將結(jié)果輸出至屏幕。
    #include <stdio.h>
    #include <stdlib.h>
    
    struct student
    {
        int num; // 學(xué)號
        char name[20]; // 姓名
        int score; // 成績
        struct student *next;
    };
    
    int main()
    {
        int n = 0; // 學(xué)生的數(shù)量
        struct student *head = NULL;
        struct student *tail = NULL;
        struct student *temp = NULL;
        
        printf("請輸入學(xué)生的數(shù)量:");
        scanf("%d", &n);
        
        for (int i = 0; i < n; i++)
        {
            temp = malloc(sizeof(struct student));
            
            printf("請輸入第 %d 個學(xué)生的信息:\n", i + 1);
            scanf("%d%s%d", &temp->num, temp->name, &temp->score);
            
            if (i == 0)
            {
                head = temp;
                tail = temp;
                tail->next = NULL;
            }
            else
            {
                temp->next = NULL;
                tail->next = temp;
                tail = temp;
            }
        }
        
        temp = head;
        while (temp)
        {
            printf("%d, %s, %d\n", temp->num, temp->name, temp->score);
            temp = temp->next;
        }
        
        return 0;
    }
    
  5. 編寫一個函數(shù)慌闭,在鏈表的任意位置上插入一個結(jié)點别威。
    /* 在第4題基礎(chǔ)上增加了插入功能 */
    #include <stdio.h>
    #include <stdlib.h>
    
    struct student
    {
        int num; // 學(xué)號
        char name[20]; // 姓名
        int score; // 成績
        struct student *next;
    };
    
    void print_stu(struct student *stu)
    {
        struct student *temp = NULL;
        temp = stu;
        while (temp)
        {
            printf("%d, %s, %d\n", temp->num, temp->name, temp->score);
            temp = temp->next;
        }
    }
    
    int main()
    {
        int n = 0; // 學(xué)生的數(shù)量
        int p = 1; // 在某一位置之后插入節(jié)點(編號從1開始)
        int i = 0; // 計數(shù)器
        struct student *head = NULL;
        struct student *tail = NULL;
        struct student *temp = NULL;
        struct student *temp2 = NULL;
        
        printf("請輸入學(xué)生的數(shù)量:");
        scanf("%d", &n);
        
        for (int i = 0; i < n; i++)
        {
            temp = malloc(sizeof(struct student));
            
            printf("請輸入第 %d 個學(xué)生的信息:\n", i + 1);
            scanf("%d%s%d", &temp->num, temp->name, &temp->score);
            
            if (i == 0)
            {
                head = temp;
                tail = temp;
                tail->next = NULL;
            }
            else
            {
                temp->next = NULL;
                tail->next = temp;
                tail = temp;
            }
        }
        
        print_stu(head);
        
        // 在第p個位置之后插入節(jié)點
        printf("\n請輸入位置:");
        scanf("%d", &p);
        
        i = 1;
        temp = head;
        
        while (temp)
        {
            if (i == p)
            {
                temp2 = malloc(sizeof(struct student));
                printf("請輸入學(xué)生的信息:\n");
                scanf("%d%s%d", &temp2->num, temp2->name, &temp2->score);
                temp2->next = temp->next;
                temp->next = temp2;
                break;
            }
            temp = temp->next;
            i++;
        }
        
        print_stu(head);
    
        return 0;
    }
    
  6. 編寫一個程序,打印出5名學(xué)生的信息至屏幕驴剔,要求輸出單獨編寫成一個函數(shù)省古。
    #include <stdio.h>
    
    struct student
    {
        char name[10];  // 姓名
        int num;    // 學(xué)號
        int age;    // 年齡
        char sex;   // 性別
        int score;  // 成績
    };
    
    void print_stu(struct student stu)
    {
        printf("%s, %d, %d, %c, %d\n", stu.name, stu.num, stu.age, stu.sex, stu.score);
    }
    
    int main()
    {
        struct student stu[5];
    
        printf("請輸入學(xué)生的信息:\n");
        for (int i = 0; i < 5; i++)
        {
            printf("str[%d] -> ", i);
            scanf("%s %d %d %c %d", stu[i].name, &stu[i].num, &stu[i].age, &stu[i].sex, &stu[i].score);
        }
    
        for (int i = 0; i < 5; i++)
        {
            printf("str[%d] -> ", i);
            print_stu(stu[i]);
        }
    
        return 0;
    }
    

第12章 文件

文件

  • 文件指針
    FILE *指針名;
    
  • 打開文件
    fopen(文件名, 打開方式);
    
  • 關(guān)閉文件
    fclose(文件指針名);
    
  • 文件讀寫函數(shù)
    fputc();
    fgetc();
    fread();
    fwrite();
    fprintf();
    fscanf();
    
  • 文件定位函數(shù)
    feof();
    rewind();
    fseek();
    ftell();
    
  • 出錯檢查函數(shù)
    ferror();
    clearerr();
    

習(xí)題答案

一、選擇題

  1. C
  2. C
  3. D
  4. A
  5. D
  6. C
  7. C
  8. B

二丧失、填空題

  1. ajig
  2. abcd
  3. abcdef
  4. Hello 15
  5. Beijing shanghai tianjin
  6. 0123456789
  7. 7
  8. 運行結(jié)果如下:
    Lili,89
    Wangming,90
    Yanghua,78
    Zhangxiao,88
    
  9. abcsade
  10. aajkcnal

三豺妓、編程題

  1. 編寫程序,將磁盤文件中的內(nèi)容顯示在屏幕上布讹。
    #include <stdio.h>
    
    int main()
    {
        FILE *fp = NULL;
        fp = fopen("test.txt", "r");
        if (fp == NULL)
        {
            printf("打開文件失敗\n");
            return 1;
        }
        while (!feof(fp))
        {
            putchar(fgetc(fp));
        }
        printf("\n");
    
        fclose(fp);
        return 0;
    }
    
  2. 編寫一個程序琳拭,由鍵盤輸入5個學(xué)生的信息,并將數(shù)據(jù)保存在名為student.txt的文本文件中描验。
    #include <stdio.h>
    
    struct student
    {
        char name[20];
        int score;
    };
    
    int main()
    {
        struct student stu[5];
        FILE *fp = NULL;
        fp = fopen("student.txt", "w");
        if (fp == NULL)
        {
            printf("打開文件失敗\n");
            return 1;
        }
    
        // 從鍵盤上輸入5個學(xué)生的信息
        for (int i = 0; i < 5; i++)
        {
            scanf("%s%d", &stu[i].name, &stu[i].score);
        }
    
        // 將信息寫入文件中
        for (int i = 0; i < 5; i++)
        {
            fwrite(&stu[i], sizeof (struct student), 1, fp);
        }
    
        fclose(fp);
        return 0;
    }
    
  3. 編寫一個程序白嘁,實現(xiàn)文件的復(fù)制功能。
    #include <stdio.h>
    
    int main()
    {
        FILE *fp1 = NULL;
        FILE *fp2 = NULL;
    
        fp1 = fopen("student.txt", "r");
        fp2 = fopen("studentcopy.txt", "w");
        if (fp1 == NULL)
        {
            printf("打開 student.txt 失敗\n");
            return 1;
        }
        if (fp2 == NULL)
        {
            printf("打開 studentcopy.txt 失敗\n");
            return 1;
        }
    
        while (!feof(fp1))
        {
            fputc(fgetc(fp1), fp2);
        }
    
        fclose(fp1);
        fclose(fp2);
        return 0;
    }
    
  4. 編寫程序膘流,實現(xiàn)兩個文件的合并絮缅,即將兩個文件中的內(nèi)容復(fù)制到其中一個文件中鲁沥。
    #include <stdio.h>
    
    int main()
    {
        FILE *fp1 = NULL;
        FILE *fp2 = NULL;
    
        fp1 = fopen("student.txt", "r");
        fp2 = fopen("studentcopy.txt", "a");
        if (fp1 == NULL)
        {
            printf("打開 student.txt 失敗\n");
            return 1;
        }
        if (fp2 == NULL)
        {
            printf("打開 studentcopy.txt 失敗\n");
            return 1;
        }
    
        while (!feof(fp1))
        {
            fputc(fgetc(fp1), fp2);
        }
    
        fclose(fp1);
        fclose(fp2);
        return 0;
    }
    
  5. 編寫程序,從文件中隔一個字符進(jìn)行讀取盟蚣,例如文件中內(nèi)容為“jajasiddeb”黍析,則輸出jjsdc至屏幕上。
    #include <stdio.h>
    
    int main()
    {
        FILE *fp1 = NULL;
    
        fp1 = fopen("test.txt", "r");
        if (fp1 == NULL)
        {
            printf("打開 test.txt 失敗\n");
            return 1;
        }
    
        while (!feof(fp1))
        {
            putchar(fgetc(fp1));
            fgetc(fp1);
        }
        putchar('\n');
    
        fclose(fp1);
        return 0;
    }
    

第14章 預(yù)處理宏命令

  • 不帶參數(shù)的宏
    #define 用戶標(biāo)識符 字符串
    #undef 用戶標(biāo)識符
    
  • 帶參數(shù)的宏
    #define 宏名 字符串
    
  • 帶參數(shù)的宏和函數(shù)的關(guān)系
    • 函數(shù)調(diào)用參數(shù)傳遞的過程中會產(chǎn)生一個中間值屎开,而帶參數(shù)的宏只是進(jìn)行字符串的替換阐枣,不會產(chǎn)生中間值。
    • 函數(shù)中實參要與形參的類型一致奄抽,而宏定義不要求一致蔼两。
    • 函數(shù)只能返回一個值,而宏定義可以返回多個值逞度。

文件包含

#define <文件名稱>
或 
#include "文件名稱"

條件編譯

#ifdef 標(biāo)識符
    程序1
#else
    程序2
#endif

不同存儲類型的變量

  • 自動類型變量
    [auto] 類型 變量名;
    
  • 靜態(tài)變量
    static 類型 變量名;
    
  • 寄存變量
    rigister 類型 變量名;
    
  • 外部變量
    extern 類型 變量名;
    

習(xí)題答案

一额划、選擇題

  1. B
  2. B
  3. A
  4. A
  5. A
  6. A
  7. C
  8. B
  9. C
  10. B
  11. A
  12. B

二、填空題

  1. 28
  2. 4
  3. 4,17
  4. 52
  5. 29
  6. 4
  7. 5,0
  8. 95 24
  9. 20,-16
  10. 4
  11. 5,49
  12. 3,3,5
  13. acjaahnldne

三档泽、編程題

  1. 編寫函數(shù)求出1~100中的素數(shù)俊戳。
    #include <stdio.h>
    #include <stdbool.h>
    
    int main()
    {
        bool flag = true;
    
        for (int i = 1; i <= 100; i++)
        {
            flag = true;
            for (int j = 2; j <= i / 2; j++)
            {
                if (i % j == 0)
                {
                    flag = false;
                }
            }
    
            if (flag)
            {
                printf("%d\n", i);
            }
        }
        return 0;
    }
    
  2. 利用帶參數(shù)的宏,從三個數(shù)中找出最大值馆匿。
    #include <stdio.h>
    #define MIN(x, y, z) x < y ? (x < z ? x : z) : (y < z ? y : z)
    #define MAX(x, y, z) x > y ? (x > z ? x : z) : (y > z ? y : z)
    
    int main()
    {
        int a = 34;
        int b = 23;
        int c = 54;
    
        printf("min = %d, max = %d\n", MIN(a, b, c), MAX(a, b, c));
    
        return 0;
    }
    
  3. 從鍵盤輸入一個數(shù)抑胎,利用宏求出其平方值及其平方根。
    #include <stdio.h>
    #include <math.h>
    
    #define H(x) (x)*(x)
    #define S(x) sqrt(x)
    
    int main()
    {
        double num = 0;
    
        printf("請輸入一個整數(shù):");
        scanf("%lf", &num);
    
        printf("%lf, %lf\n", H(num), S(num));
    
        return 0;
    }
    
  4. 從鍵盤輸入一個圓錐的半徑和高度渐北,通過宏定義求出圓錐體積阿逃。
    #include <stdio.h>
    
    #define PI 3.14
    #define S(r, h) PI*(r)*(r)*(h)/3.0
    
    int main()
    {
        double r = 0.0;
        double h = 0.0;
    
        printf("請輸入圓錐的半徑和高度:");
        scanf("%lf%lf", &r, &h);
    
        printf("圓錐的表面積是:%lf\n", S(r, h));
        return 0;
    }
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市赃蛛,隨后出現(xiàn)的幾起案子恃锉,更是在濱河造成了極大的恐慌,老刑警劉巖呕臂,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件破托,死亡現(xiàn)場離奇詭異,居然都是意外死亡歧蒋,警方通過查閱死者的電腦和手機土砂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疏尿,“玉大人瘟芝,你說我怎么就攤上這事易桃∪焖觯” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵晤郑,是天一觀的道長敌呈。 經(jīng)常有香客問我贸宏,道長,這世上最難降的妖魔是什么磕洪? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任吭练,我火速辦了婚禮,結(jié)果婚禮上析显,老公的妹妹穿的比我還像新娘鲫咽。我一直安慰自己,他們只是感情好谷异,可當(dāng)我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布分尸。 她就那樣靜靜地躺著,像睡著了一般歹嘹。 火紅的嫁衣襯著肌膚如雪箩绍。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天尺上,我揣著相機與錄音材蛛,去河邊找鬼。 笑死怎抛,一個胖子當(dāng)著我的面吹牛卑吭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抽诉,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼陨簇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迹淌?” 一聲冷哼從身側(cè)響起河绽,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎唉窃,沒想到半個月后耙饰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡纹份,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年苟跪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔓涧。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡件已,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出元暴,到底是詐尸還是另有隱情篷扩,我是刑警寧澤,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布茉盏,位于F島的核電站鉴未,受9級特大地震影響枢冤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铜秆,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一淹真、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧连茧,春花似錦核蘸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坯汤,卻和暖如春虐唠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背惰聂。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工疆偿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搓幌。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓杆故,卻偏偏與公主長得像,于是被迫代替她去往敵國和親溉愁。 傳聞我的和親對象是個殘疾皇子处铛,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容

  • C語言的學(xué)習(xí)要從基礎(chǔ)開始,這里是100個經(jīng)典的算法-1C語言的學(xué)習(xí)要從基礎(chǔ)開始拐揭,這里是100個經(jīng)典的 算法 題目:...
    Poison_19ce閱讀 1,124評論 0 0
  • 數(shù)組在程序設(shè)計中撤蟆,為了處理方便, 把具有相同類型的若干變量按有序的形式組織起來堂污。這些按序排列的同類數(shù)據(jù)元素的集合稱...
    朱森閱讀 3,895評論 2 13
  • 前言:指針是 C語言一個重要概念家肯,也是C 語言的一個重要特色。使程序簡潔盟猖、緊湊讨衣、高效。指針乃是C之精華式镐。 數(shù)據(jù)在內(nèi)...
    瀟湘候晨雪閱讀 755評論 0 0
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型反镇。 運用指針編程是C語言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)娘汞; ...
    朱森閱讀 3,424評論 3 44
  • //出自51博客:www.Amanda0928.51.com 第一章 一歹茶、選擇題 1.B; (typedef ,t...
    Damongggggg閱讀 11,104評論 0 1