专栏文章

20251124C语言

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min3h1cm
此快照首次捕获于
2025/12/01 19:57
3 个月前
此快照最后确认于
2025/12/01 19:57
3 个月前
查看原文

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

一、考查形式

  • 三份试卷均为闭卷考试,题型结构稳定,主要包含选择题、判断题、填空题、完善程序题、编程题五类题型,侧重对基础语法、程序逻辑、代码应用的分层考查

二、考查要点及对应题目

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

核心考查合法变量命名的语法要求,需遵循“首字符为字母或下划线,后续字符为字母、数字或下划线”的规则。
  • 来源:2017-2018-1试卷(文档2)选择题第1题
  • 题目:下列变量合法的是( )。
  • A.2a0
  • B._1a0
  • C.x>y
  • D.b-a

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

涵盖逗号运算符、算术运算符、逻辑运算符、赋值运算符等,考查表达式优先级与求值逻辑。
  1. 来源:2017-2018-1试卷(文档2)选择题第2题
  • 题目:假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是( )。
  • A.7
  • B.8
  • C.6
  • D.2
  1. 来源: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
  1. 来源: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正确的输出结果为( )。
CPP
#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.不确定值
  1. 来源:2017-2018-1试卷(文档2)选择题第13题
  • 题目:以下程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是( )。
CPP
   int main() {
       int *p, *q, a, b;
       p = &a;
       printf("input a: ");
       scanf("%d", *p);
       ……
   }
 
  • A.* p表示的是指针变量p的地址
  • B.* p表示的是变量a的值,而不是变量a的地址
  • C.* p表示的是指针变量p的值
  • D.* p只能用来说明p是一个指针变量
  1. 来源:2017-2018-1试卷(文档2)完善程序第1题
  • 题目:统计从键盘输入的字符中数字字符的个数,用换行符结束循环。请填空。
CPP
int n = 0, c;
c = getchar();
while (【1】) {
    if (【2】)
        n++;
    c = getchar();
}

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

考查循环条件设置、循环次数计算、循环嵌套及break/continue语句的使用。
  1. 来源:2017-2018-1试卷(文档2)选择题第7题
  • 题目:有以下程序:
CPP
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);
}
  • 程序执行后的输出结果是( )。
  • A.n=5
  • B.n=2
  • C.n=3
  • D.n=4
  1. 来源:2017-2018-1试卷(文档2)选择题第10题
  • 题目:C语言中while和do-while循环的主要区别是( )。
  • A.do-while循环是表达式不成立才进入循环体
  • B.do-while的循环控制条件至少无条件执行一次
  • C.do-while允许从外部转到循环体内,而while循环不允许
  • D.do-while的循环体不能是复合语句
  1. 来源:2018-2019-1试卷(文档3)选择题第12题
  • 题目:下面程序段的运行结果是( )。
CPP
int a = 1, b = 2, c = 2, t;
while (a < b < c) {
    t = a;
    a = b;
    b = t;
    c--;
}
printf("%d,%d,%d", a, b, c);
  • A. 1,2,0
  • B.2,1,0
  • C.1,2,1
  • D. 2,1,1

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

涵盖数组定义、初始化、元素访问、数组遍历、数组反转等核心操作。
  1. 来源:2017-2018-1试卷(文档2)选择题第6题
  • 题目:定义如下变量和数组:
CPP
int k;
int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
        则下面语句的输出结果为( )。
CPP
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
  1. 来源:2017-2018-1试卷(文档2)选择题第16题
  • 题目:下面的程序将输出:( )。
CPP
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]);
}
  • A.1 3 4 1 0
  • B.2 3 4 1 0
  • C.2 3 4 0 0
  • D.1 3 4 0 0
  1. 来源:2018-2019-1试卷(文档3)填空题第4题
  • 题目:以下程序中的功能是调用rowmax函数,实现在N行M列的矩阵中,找出每行上的最大值。
CPP
#define N 3
#define M 4
#include <stdio.h>

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
  1. 来源: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);
}
  • A. 13
  • B. 12
  • C. 11
  • D. 10
  1. 来源:2018-2019-1试卷(文档3)阅读程序第3题
  • 题目:下列程序的输出结果是________________。
CPP
#include <stdio.h>

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只能返回一个函数值。( )
  1. 来源:2017-2018-1试卷(文档2)选择题第17题
  • 题目:下面程序将输出:( )。
CPP
void add(int a) {
    a++;
    return;
}

void main() {
    int k;
    k = 3.4;
    add(k);
    printf("%d", k);
}
  • A.3 4
  • B.4 4
  • C.3
  • D.4
  1. 来源:2017-2018-1试卷(文档2)完善程序第4题
  • 题目:对下面的递归函数进行填空。递归公式为:
CPP
pn(x)=1(n=0)、x(n=1)、(2n-1)x-pn-1(x)(n>1)
float p(int n, float x) {
    float z;
    if (n == 0)
        z = 1;
    else if (【7】)
        z = x;
    else
        z =【8】;
    return (z);
}

(八)结构体与文件操作

考查结构体定义与成员访问、文件打开/关闭、读写操作(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都是结构体成员名
  1. 来源:2018-2019-1试卷(文档3)选择题第24题
  • 题目:以下对结构体变量stu1中成员age非法引用的是( )。
CPP
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);
  1. 来源:2017-2018-1试卷(文档2)选择题第20题
  • 题目:下面程序段的运行结果是( )。
CPP
char a[7] = "abcdef";
char b[4] = "ABC";
strcpy(a, b);
printf("%c", a[5]);
  • A. 空格
  • B. \0
  • C. e
  • D. f

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

考查经典排序算法的实现逻辑,要求能独立编写函数完成排序。
  • 来源:2017-2018-1试卷(文档2)编程题第2题
  • 题目:写一个函数,用“起泡法”对输入的10个整数按由小到大的顺序排列。

评论

0 条评论,欢迎与作者交流。

正在加载评论...