20251124C语言

· · 个人记录

C语言程序设计试卷考查形式与考查要点

一、考查形式

二、考查要点及对应题目

(一)变量定义与命名规则

核心考查合法变量命名的语法要求,需遵循“首字符为字母或下划线,后续字符为字母、数字或下划线”的规则。

(二)运算符与表达式求值

涵盖逗号运算符、算术运算符、逻辑运算符、赋值运算符等,考查表达式优先级与求值逻辑。

  1. 来源:2017-2018-1试卷(文档2)选择题第2题
    • 题目:假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )。
    • A.7
    • B.8
    • C.6
    • D.2
  2. 来源:2018-2019-1试卷(文档3)选择题第9题
    • 题目:设a=2,b=3,c=4,则表达式a+b>c&&b==c&&a|++a-b&&b+c的值为( )。
    • A.5
    • B.7
    • C.0
    • D.1
  3. 来源:2017-2018-1试卷(文档2)填空题第1题

    • 题目:执行a=4+6,a*5,a+10后,

    逗号表达式的值为【1】__

(三)输入输出函数应用

考查scanf、printf、getchar、putchar等函数的使用规范,包括格式控制符、参数传递要求。

  1. 来源:2017-2018-1试卷(文档2)选择题第5题
    • 题目:阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为( )。
      
      #include <stdio.h>

void main() { int x, y, z; scanf("%d%d%d", &x, &y, &z); printf("x+y+z=%d\n", x + y + z); }

- A.x+y+z=48
- B.x+y+z=35
- C.x+z=35
- D.不确定值

2. 来源:2017-2018-1试卷(文档2)选择题第13题
- 题目:以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )。
 ```cpp
    int main() {
        int *p, *q, a, b;
        p = &a;
        printf("input a: ");
        scanf("%d", *p);
        ……
    }

(四)循环结构(for、while、do-while)

考查循环条件设置、循环次数计算、循环嵌套及break/continue语句的使用。

  1. 来源:2017-2018-1试卷(文档2)选择题第7题
    • 题目:有以下程序:
      void main() {
      int i, n = 0;
      for (i = 2; i < 5; i++) {
      do {
          if (i % 3)
              continue;
          n++;
      } while (!i);
      n++;
      }
      printf("n=%d\n", n);
      }

(五)数组操作(一维、二维)

涵盖数组定义、初始化、元素访问、数组遍历、数组反转等核心操作。

  1. 来源:2017-2018-1试卷(文档2)选择题第6题

    • 题目:定义如下变量和数组:
      int k;
      int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};

            则下面语句的输出结果为( )。

    for(k=0;k<3;k++);
    printf("%d",a[k][2-k]);
    • A.3 5 7
    • B.3 6 9
    • C.1 5 9
    • D.1 4 7
  2. 来源:2017-2018-1试卷(文档2)选择题第16题
    • 题目:下面的程序将输出:( )。
      main() {
      int a[5] = {1, 2, 3};
      int k, j;
      for (k = 1; k < 4; k++)
      a[k]++;
      for (j = 0; j < 5; j++)
      printf("%d ", a[j]);
      }

void rowmax(int x[N][M]) { int i, j, p; for (i = 0; i < N; i++) { p = 0; for (j = 1; j < M; j++) if (【7】 < x[i][j]) p = j; printf("第%d行,最大的是第%d个。\n", i + 1, p + 1); } }

int main() { int a[N][M] = {1, 4, 7, 11, 0, 7, 9, 8, 2, 3, 1, 10}; 【8】; }


### (六)指针应用
考查指针定义、指针与数组的关系、指针作为函数参数的传递规则。
1. 来源:2017-2018-1试卷(文档2)选择题第15题
- 题目:若有定义“int a[]={1,2,3,4,5,6,7,8,9,10}, *p=a;”,则以下表达式值为4的是( )。
- A. p+=3, *p++
- B. p+=3, ++*p
- C. p+=4, *p++
- D. p+=4, ++*p

2. 来源:2018-2019-1试卷(文档3)选择题第21题
- 题目:执行以下程序后,y的值是( )。
```cpp
void main() {
    int a[] = {2, 4, 6, 8, 10}, y = 1, x, *p = a;
    for (x = 0; x < 3; x++)
        y += *(p + x);
    printf("%d\n", y);
}

void main() { int a[4] = {1, 2, 3, 4}, p; p = &a[2]; printf("%d ", ++p); printf("%d\n", *--p); }


### (七)函数定义与调用
包括函数参数传递(值传递、地址传递)、函数返回值、递归函数、函数嵌套调用。
1. 来源:2017-2018-1试卷(文档2)判断题第1题
- 题目:一个函数利用return只能返回一个函数值。( )
2. 来源:2017-2018-1试卷(文档2)选择题第17题
- 题目:下面程序将输出:( )。
```cpp
void add(int a) {
    a++;
    return;
}

void main() {
    int k;
    k = 3.4;
    add(k);
    printf("%d", k);
}

(八)结构体与文件操作

考查结构体定义与成员访问、文件打开/关闭、读写操作(fopen、fwrite、fread、fprintf、fscanf)。

  1. 来源:2017-2018-1试卷(文档2)选择题第14题
    • 题目:设有以下说明语句:struct stu{ int a;float b;} stutype ;则下面的叙述不正确的是( )。A.struct是结构体类型的关键字 B.struct stu是用户定义的结构体类型 C.stutype是用户定义的结构体类型名 D.a和b都是结构体成员名
  2. 来源:2018-2019-1试卷(文档3)选择题第24题
    • 题目:以下对结构体变量stu1中成员age非法引用的是( )。
      
      struct student {
      int age;
      int num;
      } stu1, *p;

p = &stu1;

A. stu1.age
B. *p.age
C. p->age
D. (*p).age

### (九)流程控制(if-else、switch-case)
考查分支条件判断、嵌套分支、switch-case的break使用规则。
1. 来源:2017-2018-1试卷(文档2)编程题第1题
- 题目:将以下程序段改用嵌套的if语句实现。
```cpp
int s, t, m;
t = (int)(s / 10);
switch (t) {
    case 10:
        m = 5;
        break;
    case 9:
        m = 4;
        break;
    case 8:
        m = 3;
        break;
    case 7:
        m = 2;
        break;
    case 6:
        m = 1;
        break;
    default:
        m = 0;
}
  1. 来源:2018-2019-1试卷(文档3)选择题第11题
    • 题目:设x, y 都为整型变量,下列if语句中不正确的是( )。
    • A.if(x>y);
    • B.if(x==y) x+=y;
    • C.if(x!=y) scanf("%d",&x) else x=1;
    • D.if(x);
  2. 来源:2017-2018-1试卷(文档2)选择题第20题
    • 题目:下面程序段的运行结果是( )。
      char a[7] = "abcdef";
      char b[4] = "ABC";
      strcpy(a, b);
      printf("%c", a[5]);

(十)排序算法(起泡法)

考查经典排序算法的实现逻辑,要求能独立编写函数完成排序。