在二级 C 语言考试里,操作题总共占 60 分(程序填空 18 分、程序修改 18 分、程序设计 24 分)。很多同学选择题能拿 30 分左右,只要操作题能稳拿 40 分以上,过考就完全没有悬念。
这里把我在 c.code2ji.cn 上练到的几道典型操作题真题和常用算法模板整理出来。
1. 程序填空题实战:结构体指针

题目代码:
#include <stdio.h>
#include <string.h>
struct student {
long sno;
char name[10];
float score[3];
};
void fun(struct student *b) {
/**********FOUND**********/
b__________ = 10004;
/**********FOUND**********/
strcpy(b__________, "LiJie");
}
int main(void) {
struct student t = {10002, "ZhangQi", 93, 85, 87};
/**********FOUND**********/
fun(__________);
return 0;
}
填空解析:
2. 程序修改题常见错误类型
修改题一般会在代码中用 /**********FOUND**********/ 标出错误位置。注意:只能修改标有 FOUND 的下一行代码,千万不要增加或者删除行数。
常见错误总结:
错误类型 1:指针未解引用
// 错误写法
while (s != '\\0')
// 正确修改
while (*s != '\\0')
错误类型 2:赋值符号写错
// 错误写法
if (i = 0)
// 正确修改
if (i == 0)
错误类型 3:循环边界写多一次
// 错误写法(数组大小为 n,下标应为 0 到 n-1)
for (i = 0; i <= n; i++)
// 正确修改
for (i = 0; i < n; i++)
3. 程序设计大题常用模板
模板 1:字符串删除指定字符
void fun(char *s, char c) {
char *p = s;
while (*s != '\\0') {
if (*s != c) {
*p++ = *s;
}
s++;
}
*p = '\\0'; // 必须加上字符串结束符
}
模板 2:素数判断
int isPrime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) return 0;
}
return 1;
}
模板 3:一维数组求平均值并找出低于平均值的数
int fun(int score[], int m, int below[]) {
int sum = 0, count = 0;
for (int i = 0; i < m; i++) {
sum += score[i];
}
double avg = (double)sum / m;
for (int i = 0; i < m; i++) {
if (score[i] < avg) {
below[count++] = score[i];
}
}
return count; // 返回低于平均值的人数
}
操作题练习入口
操作题建议一定要亲手敲一遍代码并看评测结果。
在线题库:c.code2ji.cn
里面有 85 套历年原题,电脑和手机都能在线写代码调试,点提交就能直接看评分和错误分析。




