1. 课程概述与考试定位
《程序设计基础》是吉林大学计算机科学与技术、软件工程等专业的核心基础课程,通常在大一学年开设。该课程以 C 语言为主要教学语言,旨在培养学生的程序设计思维、算法实现能力与代码调试能力。历年期末考试题型稳定,注重基础与实战结合,既考查语法细节,也考查综合编程能力。
2. 考试题型与分值分布
根据历年试题统计,吉林大学《程序设计基础》期末考试通常包含以下题型:
| 题型 | 题量 | 分值占比 | 考查重点 |
|---|---|---|---|
| 单项选择题 | 10-15 题 | 20%-30% | 语法细节、概念辨析 |
| 填空题 | 5-10 题 | 10%-15% | 程序输出、表达式求值 |
| 程序阅读题 | 3-5 题 | 15%-20% | 代码执行结果、逻辑分析 |
| 程序改错题 | 2-3 题 | 10%-15% | 常见语法与逻辑错误 |
| 编程题 | 3-4 题 | 30%-40% | 综合算法实现 |
注:具体分值比例因年份略有浮动,但编程题始终占据最大比重,是拉开分数的关键。
3. 核心考点详解
3.1 C 语言基础语法
这是选择题和填空题的主要出题范围,历年反复考查的内容包括:
- 数据类型与变量:int、float、char、double 的存储大小与取值范围;类型转换规则(隐式与显式转换)。
- 运算符与表达式:算术运算符、关系运算符、逻辑运算符的优先级与结合性;自增自减运算符(
++、--)的前置与后置区别;逗号表达式、条件表达式。 - 输入输出:
printf与scanf的格式控制符(%d、%f、%c、%s等);格式修饰符(宽度、精度、左对齐)。 - 选择结构:
if-else嵌套、switch-case语句的穿透特性与 break 的作用。 - 循环结构:
for、while、do-while的区别与适用场景;循环嵌套;break 与 continue 的区别。
典型例题:
intx=5;printf("%d %d\n",x++,++x);// 输出结果是什么?3.2 数组与字符串
数组是编程题的高频载体,常与循环、函数结合考查:
- 一维数组:定义、初始化、遍历、求最值、求和、逆序、查找(顺序查找)。
- 二维数组:矩阵运算(转置、加减、乘法)、行列求和、对角线元素处理。
- 字符数组与字符串:
gets/puts与scanf/printf处理字符串的区别;字符串常用操作(求长度、复制、拼接、比较)的手写实现;strlen、strcpy、strcat、strcmp等库函数的使用。
高频编程题:输入 n 个整数存入数组,统计其中正数、负数、零的个数;或对数组进行冒泡排序/选择排序。
3.3 函数
函数是《程序设计基础》的核心内容,几乎每年必考:
- 函数定义与调用:形参与实参的传递方式(值传递与地址传递)。
- 递归函数:递归的终止条件与递归体设计;典型递归问题(阶乘、斐波那契数列、汉诺塔、最大公约数)。
- 变量的作用域与存储类别:局部变量与全局变量;
static静态变量的特性(只初始化一次,值保持)。 - 数组作为函数参数:一维数组传参退化为指针;二维数组传参的写法。
典型例题:
intf(intn){if(n<=1)return1;returnn*f(n-1);}// f(5) 的结果是多少?3.4 指针
指针是课程难点,也是考试区分度最高的部分:
- 指针基础:指针变量的定义与初始化;
&取地址与*解引用。 - 指针与数组:数组名作为首地址;指针算术运算(
p++、p+1的步长)。 - 指针与函数:指针作为函数参数实现"传引用"效果;函数指针的基本概念。
- 指针与字符串:字符指针与字符数组的区别。
高频考点:通过指针交换两个变量的值;用指针遍历数组;指针作为函数参数修改实参。
3.5 结构体与共用体
结构体通常在编程题或程序阅读题中出现:
- 结构体定义与使用:结构体类型的声明、变量定义、成员访问(
.与->)。 - 结构体数组:学生信息管理、成绩统计等典型应用。
- 结构体指针:指向结构体的指针变量;通过指针访问成员。
- typedef 的使用:为结构体类型起别名。
典型编程题:定义学生结构体(学号、姓名、成绩),输入若干学生信息,按成绩排序输出。
3.6 文件操作
文件操作在近年试题中出现频率上升,常以编程题或填空题形式考查:
- 文件打开与关闭:
fopen的打开模式(r、w、a、rb、wb等);fclose的使用。 - 文件读写函数:
fprintf/fscanf、fgets/fputs、fgetc/fputc、fread/fwrite。 - 文件结束判断:
feof函数的使用。
典型编程题:从文本文件中读取若干整数,求和后写入另一个文件。
4. 历年高频编程题汇总
以下是从历年试题中归纳的高频编程题类型,建议逐一动手实现:
- 求最大公约数与最小公倍数(辗转相除法)。
- 判断素数:输入一个整数,判断是否为素数并输出。
- 斐波那契数列:输出前 n 项(递归与非递归两种实现)。
- 冒泡排序/选择排序:对数组排序并输出。
- 字符串逆序:将输入的字符串逆序输出(不调用库函数)。
- 矩阵转置:将 3×3 矩阵转置输出。
- 统计字符:输入一行字符,统计其中字母、数字、空格和其他字符的个数。
- 水仙花数:输出所有三位水仙花数。
- 学生成绩管理:用结构体数组实现成绩录入、排序与查询。
- 文件复制:将一个文件的内容复制到另一个文件。
5. 备考建议
5.1 重视基础语法
选择题和填空题考查的多是语法细节,如运算符优先级、类型转换、printf格式控制等。建议把教材中的每个语法点吃透,尤其注意容易混淆的细节(如++i与i++的区别、break与continue的区别)。
5.2 动手写代码
编程题占分最高,只看不练很难拿分。建议:
- 每天手写 2-3 道编程题,先自己思考,再对照参考答案。
- 重点练习数组、字符串、指针、结构体相关的综合题。
- 注意代码规范:变量命名清晰、缩进整齐、注释到位,这些会影响卷面分。
5.3 研究历年真题
通过历年真题可以把握出题规律和难度。建议:
- 把近 3-5 年的真题完整做一遍,限时模拟考试环境。
- 总结每道题考查的知识点,建立考点清单。
- 对做错的题目重点复盘,找出知识盲区。
5.4 掌握调试技巧
考试中程序阅读题和改错题需要较强的代码阅读能力。平时练习时,建议:
- 学会"人肉执行":在纸上逐步模拟程序执行过程,记录变量变化。
- 对典型代码段(循环、递归、指针操作)做到能准确推演输出结果。
- 熟悉常见错误类型:数组越界、指针未初始化、忘记 break、循环条件错误等。
6. 总结
吉林大学《程序设计基础》期末考试以 C 语言为核心,题型稳定、重点突出。基础语法、数组与字符串、函数、指针、结构体是五大核心考点,编程题是拉开差距的关键。备考时既要扎实掌握语法细节,也要通过大量动手练习提升编程能力,同时结合历年真题把握出题规律。只要系统复习、勤于练习,取得理想成绩并不困难。