首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C 語言選擇與循環結構:經典上機練習題精選解析

     編輯:關於C語言

C 語言選擇與循環結構:經典上機練習題精選解析

本文整理 6 道典型選擇/循環練習,涵蓋分段計費、整除判斷、統計計數、條件篩選、平均值計算、逆序求和等核心考點。

題 1:出租車分段計費

需求:三種車型起步價 3km 內、超出後單價不同。輸入車型(1/2/3)與里程,輸出車費。

#include <stdio.h>

double fare(int type, double km) {
    double base[3] = {7, 8, 9};
    double extra[3] = {2.1, 2.4, 2.7};
    if (km <= 3) return base[type-1] * km;
    return base[type-1] * 3 + extra[type-1] * (km - 3);
}

int main() {
    int type; double km;
    printf("車型(1夏利 2富康 3桑塔納) 里程: ");
    scanf("%d %lf", &type, &km);
    if (type >= 1 && type <= 3)
        printf("車費: %.2f\n", fare(type, km));
    return 0;
}

題 2:整除判斷

需求:輸入兩整數,判斷第一個能否被第二個整除。

#include <stdio.h>

int main() {
    int a, b;
    scanf("%d %d", &a, &b);
    if (b != 0 && a % b == 0)
        printf("%d 能整除 %d\n", a, b);
    else
        printf("%d 不能整除 %d\n", a, b);
    return 0;
}

題 3:正負數統計(以 0 結束輸入)

#include <stdio.h>
#define N 1000

int main() {
    int a[N], n = 0, x;
    printf("輸入整數(0結束): ");
    while (n < N && scanf("%d", &x) == 1 && x != 0)
        a[n++] = x;
    int pos = 0, neg = 0;
    for (int i = 0; i < n; i++)
        if (a[i] > 0) pos++; else if (a[i] < 0) neg++;
    printf("正數: %d  負數: %d\n", pos, neg);
    return 0;
}

題 4:篩選輸出 300 內能被 7 或 17 整除的偶數,每行 5 個,並求和

#include <stdio.h>

int main() {
    int a[100], cnt = 0, sum = 0;
    for (int i = 2; i <= 300; i += 2)  // 只遍歷偶數
        if (i % 7 == 0 || i % 17 == 0)
            a[cnt++] = i;
    for (int i = 0; i < cnt; i++) {
        printf("%4d", a[i]);
        if ((i+1) % 5 == 0) putchar('\n');
        sum += a[i];
    }
    if (cnt % 5) putchar('\n');
    printf("Sum = %d\n", sum);
    return 0;
}

題 5:奇偶數平均值(以 0 結束)

#include <stdio.h>

int main() {
    long long even_sum = 0, odd_sum = 0;
    int even_cnt = 0, odd_cnt = 0, x;
    printf("輸入非零整數(0結束): ");
    while (scanf("%d", &x) == 1 && x != 0) {
        if (x % 2 == 0) { even_sum += x; even_cnt++; }
        else { odd_sum += x; odd_cnt++; }
    }
    if (even_cnt) printf("偶數平均: %.2f\n", (double)even_sum / even_cnt);
    if (odd_cnt)  printf("奇數平均: %.2f\n", (double)odd_sum / odd_cnt);
    return 0;
}

題 6:500 以內最大的 10 個能被 13 或 17 整除的自然數之和

#include <stdio.h>

int main() {
    int a[100], cnt = 0;
    for (int i = 1; i <= 500; i++)
        if (i % 13 == 0 || i % 17 == 0)
            a[cnt++] = i;
    int sum = 0;
    for (int i = cnt - 1; i >= cnt - 10; i--) {
        printf("%4d", a[i]);
        sum += a[i];
    }
    printf("\nSum = %d\n", sum);
    return 0;
}

核心考點總結

  • switch-case 多條件分支(題 1)
  • 模運算 % 判斷整除/奇偶/篩選(題 2,4,6)
  • 哨兵控制循環:以 0 終止輸入(題 3,5)
  • 陣列暫存 + 格式化輸出:每行固定個數(題 4)
  • 逆序遍歷 取最大 N 個(題 6)
  • 整數求和用長整型 防溢出(題 5,6)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved