循环

Oct 31, 2024

题目

  1. 计算正整数 1 ~ 100 中的奇数之和及偶数之和.
  2. 从 5 ~ 100 之间找出能被 5 或 7 整除的数.
  3. 编程统计全班同学成绩.要求每次从键盘输入一个学生 2 门分数, 计算输出每个学生的平均分, 如果平均分大于等于 85 为优秀、85 ~ 60 为通过, 统计出成绩优秀的学生和通过的学生人数.
  4. 输入 10 个数, 统计并输出正数、负数和 0 的个数.
  5. 打印输出所有的水仙花数, 所谓的水仙花数指的是一个三位数, 其各位数的立方和等于数本身.如 153 = 1^3 + 5^3 + 3^3, 所以 153 是一个水仙花数.
  6. 一篮子鸡蛋, 拿走 2 个剩 1 个, 拿走 3 个剩 2 个, 拿走 5 个剩 4 个. 一个鸡蛋 0.4 元, 这一篮子鸡蛋能卖多少钱.
  7. 一辆卡车违反交通规则, 撞人逃逸. 现场三人目击事件, 但都没有记住车号, 只记下车的一些特征. 甲说: 牌照的前两位数字是相同的; 乙说: 牌照的后两位数字是相同的; 丙是位数学家, 他说: 四位的车号正好是一个整数的平方. 请根据以上线索求出车号.

答案

// 计算正整数 1 ~ 100 中的奇数之和及偶数之和.
int odd = 0, even = 0;
for (int i = 1; i <= 100; i++) {
    if (i % 2) {
        // 奇数
        odd += i;
    }
    else {
        even += i;
    }
}
printf("奇数之和: %d \n偶数之和: %d", odd, even);
// 从 5 ~ 100 之间找出能被 5 或 7 整除的数.
printf("能被 5 和 7 整除的数: ");
for (int i = 5; i <= 100; i++) {
    if (!(i % 5) || !(i % 7)) {
        printf("%d, ", i);
    }
}
// 编程统计全班同学成绩.要求每次从键盘输入一个学生 2 门分数, 计算输出每个学生的平均分, 如果平均分大于等于 85 为优秀、85 ~ 60 为通过, 统计出成绩优秀的学生和通过的学生人数.
int a, b, excellent = 0, pass = 0, i = 1;
while (1) {
    a = 0;
    b = 0;
    printf("输入学生 %d 成绩 A 和成绩 B (输入小于0的数结束): ", i);
    scanf("%d,%d", &a, &b);
    if (a < 0 || b < 0) {
        printf("成绩优秀的有 %d 人, 通过的有 %d 人", excellent, pass);
        break;
    }
    int ave = (a + b) / 2;
    printf("学生 %d 平均分为: %d \n", i, ave);
    if (ave >= 85) {
        excellent++;
    }
    else if (ave >= 60 && ave <= 84) {
        pass++;
    }
    printf("\n");
    i++;
}
// 输入 10 个数, 统计并输出正数、负数和 0 的个数.
int num, pos = 0, nega = 0, zero = 0;
for (int i = 1; i <= 10; i++) {
    printf("请输入第 %d 个数: ", i);
    scanf("%d", &num);
    if (num > 0) {
        pos++;
    }
    else if (num < 0) {
        nega++;
    }
    else {
        zero++;
    }
};
printf("正数有: %d 个, 负数有: %d 个, 0有: %d 个", pos, nega, zero);
// 打印输出所有的水仙花数, 所谓的水仙花数指的是一个三位数, 其各位数的立方和等于数本身.如 153 = 1^3 + 5^3 + 3^3, 所以 153 是一个水仙花数.
for (int i = 100; i <= 999; i++) {
    int b = i / 100;
    int s = i / 10 % 10;
    int g = i % 10;
    if (i == b * b * b + s * s * s + g * g * g) {
        printf("%d, ", i);
    }
}
// 一篮子鸡蛋, 拿走 2 个剩 1 个, 拿走 3 个剩 2 个, 拿走 5 个剩 4 个. 一个鸡蛋 0.4 元, 这一篮子鸡蛋能卖多少钱.
for (int i = 0; ;i++) {
    if (i % 2 == 1 && i % 3 == 2 && i % 5 == 4) {
        printf("要赔偿: %.2f", (float)i * 0.4);
        break;
    }
}
// 一辆卡车违反交通规则, 撞人逃逸. 现场三人目击事件, 但都没有记住车号,  只记下车的一些特征. 甲说: 牌照的前两位数字是相同的; 乙说: 牌照的后两位数字是相同的; 丙是位数学家, 他说: 四位的车号正好是一个整数的平方. 请根据以上线索求出车号.
for (int i = 1000; i <= 9999; i++) {
    int x = i / 100;
    int y = i % 100;

    int a = x / 10;
    int b = x % 10;

    int d = y / 10;
    int e = y % 10;
    if (a == b && d == e) {
        float n = sqrt(i);
        if (n - (int)n == 0) {
            printf("The number is %d", i);
        }
    }
}