8. 综合与真题

跨考点综合题 + 职教高考风格考点归纳。

学完前 7 章再看这里

这一章把前面学的顺序、选择、循环、数组、函数合在一起,用职教高考风格的例题来练。如果前面某一章还不熟,可以先回去再看一遍,再来做题。

下面例题会考:scanf 格式、=== 的区别、break 的作用、数组下标从 0 开始、函数声明等。每道题下面有参考答案和解析,做完再对照。

本节代码里的英文词 / 常用变量名

如果你平时就爱用 abcxy 写题,没问题;做下面的例题时看清题目里每个字母代表什么(比如“x 是三位数,a 是个位”),在草稿上标一下就不容易混。

职教高考风格例题

下面几道题是职教高考常见题型,做完可对照参考答案和解析。

例题 1(scanf 与格式字符)

如下程序定义了 x、y 两个变量和输入格式字符:

float x;
int y;
scanf("%f,%d", &x, &y);

程序运行时,如需输入数值 3.14 赋给 x,输入数值 8 赋给 y,键盘应当输入(<回车> 表示按回车键)

A. x=3.14,y=8<回车>
B. 3.14,8<回车>
C. 3.14<回车>8<回车>
D. x=3.14<回车>y=8<回车>

参考答案:B

解析:scanf("%f,%d", ...) 里的格式串中有逗号,所以输入时必须按数字、逗号、数字的顺序输入,不能带 x=y=,也不能用回车代替逗号。因此应输入 3.14,8 然后回车。

例题 2(break 语句)

判断:在循环结构中,当执行到 break 语句时,会结束本次循环,即跳过 break 之后所有尚未执行的语句,接着进入下一次循环的判定。

A. 正确   B. 错误

参考答案:B(错误)

解析:break 是直接跳出整个循环,不再进行下一次循环判定。题目里说的“结束本次循环、接着进入下一次循环的判定”是 continue 的作用,不是 break。可以记:break = 被击杀直接回泉水(循环结束),continue = 这波跳过、下一波再来(进入下一轮循环)。

例题 3(数组下标)

程序中有一个数组,声明如下:

int arr[6] = {8, 3, 1, 5, 9, 6};

arr[3] 的值为  ________ 。

参考答案:5

解析:数组下标从 0 开始。arr[0]=8,arr[1]=3,arr[2]=1,arr[3]=5,arr[4]=9,arr[5]=6。所以 arr[3] 是第 4 个元素,值为 5。

例题 4(水仙花数 · 程序填空)

“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身(例如:1³+5³+3³=153)。请在给出的程序中有序号的横线处依次填入适当的代码,使程序能在屏幕上显示所有水仙花数。

#include <stdio.h>
int main()
{
    int x;
    int a, b, c;
    (1)(x=100; x<1000; (2))
    {
        a = x % 10;
        (3) = (x/10) % 10;
        c = (x/100) % 10;
        if(x (4) a*a*a + b*b*b + c*c*c)
        {
            printf("%d\n", (5));
        }
    }
    return 0;
}

参考答案:

  • (1)for
  • (2)x++
  • (3)b
  • (4)==
  • (5)x

解析:三位数从 100 到 999 用 for 循环;(2) 是循环变量自增 x++;个位 a、十位 b、百位 c,所以 (3) 填 b;判断“等于”用 ==;输出该数即 x

综合小题思路

综合题一般会把顺序、选择、循环、数组、函数里的好几样合在一起。比如“简易战绩统计”:输入若干局的结果(1 表示胜 0 表示负),统计胜场数并输出。

步骤拆解:

  1. 定义变量:一个存“胜场数”的计数器(如 win_count),初值为 0;可能还要一个循环用的 i、以及每次输入的结果 x。
  2. 用循环:循环 n 次(或直到输入结束),每次用 scanf 读入一个结果。
  3. 在循环里用选择:如果读入的是 1,win_count 就加 1(win_count++)。
  4. 循环结束后用 printf 输出 win_count。

这样就把“顺序(先读再判断再加再输出)+ 循环(多次读入)+ 选择(是 1 才加)”串起来了。自己试着写一写,再对照答案改。

考点归纳(常考与易错)

结合游戏记:变量=血量金币、选择=回城还是团战、循环=普攻/CD、数组=多英雄数据、函数=技能封装。

本章总示例(含 main)

本章是综合与真题,下面是一段完整可运行的程序:在 main 里用循环和选择统计正数个数。

#include <stdio.h>
int main() {
    int i, n, count = 0;
    for (i = 0; i < 3; i++) {
        n = (i == 0) ? 5 : (i == 1 ? -1 : 8);
        if (n > 0) count++;
    }
    printf("正数个数:%d\n", count);
    return 0;
}

下面练习区已预填了这段代码,可修改后点击「运行」。

练习区域

提示:注释可以暂时不写。下面是一段综合了循环与选择的小程序(统计正数个数),可仿照修改或自己写一题,点击「运行」。

运行结果:

(点击「运行」后显示在这里)

易错知识(避免踩坑)

小结