技能一 程序设计(C 语言)(40%,≈32 分)

🟡 进阶 | 专业综合操作技能卷(80 分)· 判断/单选/填空/综合

阅卷提示:综合题程序填空的空由上下文锁定(如二分查找的 mid=(low+high)/2),填空考语法关键字/语句/输出结果——标准答案唯一,注意拼写与分号。

S1.1 程序结构 ★★★

  • C 程序由函数组成;有且仅有一个 main 函数,程序从 main 开始、在 main 结束;函数分库函数(printf 等)与自定义函数
  • 语句以分号 ; 结尾;注释:/* ... */(多行)与 //(单行,C99)——注释不参与编译执行
  • 源程序书写格式:自由格式——一行可写多条语句、一条语句可分多行;严格区分大小写(Main≠main);书写顺序:先定义/声明后使用;缩进只影响可读性不影响编译
  • C 程序开发流程:编辑→编译(.c→.obj 目标文件)→链接(+库→.exe 可执行文件)→运行
  • 头文件 #include <stdio.h>(标准输入输出)、#include <math.h>(数学函数)等

S1.2 数据类型、常量与变量 ★★★

基本数据类型(⚠ 16/32/64 位环境字节数可能不同,按经典教材口径):

类型 关键字 字节(典型) 备注
整型 int 4 修饰:short(2)/ long(4或8)/ signed / unsigned(无符号,无负数,范围平移)
字符型 char 1 存储 ASCII 码,可参与整数运算
单精度浮点 float 4 ~7 位有效数字,输入 %f
双精度浮点 double 8 ~15 位,输入 %lf
  • 标识符命名规则 ★★★:由字母、数字、下划线组成,第一个字符不能是数字;区分大小写;不能用关键字(32 个:int、if、for、while、return、void、static…)
  • 常量 ★★★:
    • 整型:十进制;八进制以 0 开头(012=10);十六进制以 0x 开头(0x1A=26)
    • 实型:小数形式 / 指数形式 3e2 或 3E2 = 300(e 前有数字、后为整数:合法 1.5e3,非法 e3、1e2.5)
    • 字符常量:单引号 'a'、'0'(占 1 字节);转义字符:\n 换行、\t 制表、\0 空字符、\\ 反斜杠、\'、\"、\101(八进制 ASCII→'A')、\x41(十六进制→'A')
    • 字符串常量:双引号 "abc"——系统自动补结束符 '\0',故 "abc" 占 4 字节(字符数+1)★★★
  • 变量:先定义后使用;初始化 int a=3;;多个变量可同型定义

S1.3 运算符与表达式 ★★★

类别 运算符 要点
算术 + − * / % 两个整型相除得整型(5/2=2);% 取余仅用于整型(5%2=1,符号同被除数)⚠
自增自减 ++ −− 前置 ++i:先加后用;后置 i++:先用后加(j=i++ 与 j=++i 结果不同)★★★
赋值 = 及复合 **+= −= = /= %=* 赋值表达式的值=左值;连续赋值 a=b=c=5
关系 > < >= <= == != 结果只有 1/0;⚠ = 是赋值、== 才是判等(高频陷阱)
逻辑 && 与 || 或 ! 非 短路特性:&& 左假则右不算,|| 左真则右不算;非 0 即真
条件 ? : max = a>b ? a : b; 唯一三目运算符
逗号 , 从左到右求值,整个表达式的值=最后一个 (a=3, a+5) 值为 8
求字节 sizeof sizeof(int)=4;sizeof("abc")=4(含\0)
位〔超纲但常混〕 & | ^ ~ << >> 考纲列于理论"比特位逻辑运算",技能卷偶考
  • 优先级主干(高→低):( ) → ! ++ -- sizeof(单目)→ 算术(* / % 高于 + −)→ 关系 → && → || → 赋值 → 逗号 ★★★
  • 结合性★:多数运算符自左向右(左结合);单目(! ++ --)、条件 ?:、赋值 = 为自右向左(右结合)(a=b=c 从右算起;-i++ 等价 -(i++))
  • 类型转换:自动转换(低→高:char,short→int→long→float→double);强制转换 (类型名)表达式:(int)3.14 = 3(截断不四舍五入)⚠;10/3 与 10/3.0 分别得 3 与 3.333
  • 经典求值题:5/2+5%2 = 2+1 = 3;int x=5; printf("%d",x++*2) 输出 10 后 x=6

S1.4 输入输出 ★★★

  • printf("格式串", 输出表):格式符 %d %f %lf %c %s %u %o(八进制) %x(十六进制) %e %p;%% 输出百分号;宽度与精度:%5d(右对齐占 5)、%-5d(左对齐)、%.2f(保留两位小数)、%6.2f
  • scanf("格式串", 地址表):变量前必须加 取地址符 &(scanf("%d",&a);数组名/字符数组本身是地址不加)⚠ 忘 & 是综合题高频挖空
    • 格式串中的普通字符(如逗号)必须原样输入:scanf("%d,%d",&a,&b) 输入 3,4 ★★(2024 真题考过)
    • %c 会接收空白字符;%s 遇空白结束
  • getchar()/putchar():单字符输入输出;gets/puts:字符串一行(gets 不安全,新版已弃用)
  • 常用数学库(math.h):sqrt 平方根、fabs 绝对值、pow 幂

S1.5 选择结构 ★★★

  • if(表达式) 语句1 [else 语句2]:表达式非 0 为真;else 总与它前面最近的、未配对的 if 配对(缩进不影响)⚠
  • if-else if-else 多分支;表达式嵌套
  • switch(表达式):表达式与 case 后须为整型或字符型常量(不可变量/实型);case 只起入口作用,需 break 跳出,无 break 会继续执行后续 case(穿透);default 兜底(2024 真题考点)★★★
  • 经典:成绩等级、判断闰年 ((y%4==0 && y%100!=0) || y%400==0)、三数排序

S1.6 循环结构 ★★★

  • for(表达式1; 表达式2; 表达式3):先 1(一次)→ 判 2 → 循环体 → 3 → 再判 2;三表达式皆可省但分号不能省(for(;;) 死循环)
  • while(条件):先判断后执行,可能 0 次;do{ }while(条件);:先执行后判断,至少执行 1 次 ★★★(末尾分号);对比高频
  • break:跳出本层循环/switch;continue:结束本次循环进入下一次(跳过其后语句)★★★(两者区别必考)
  • 循环嵌套;死循环条件
  • 经典程序 ★★★(综合题素材库):1~100 求和、求 n 的阶乘 n!、斐波那契数列、判断素数、九九乘法表、水仙花数、最大公约数(辗转相除 r=a%b)、位数拆分(%10 与 /10)

S1.7 数组 ★★★

  • 定义 int a[10];:下标从 0 开始,最大下标 = 长度−1;越界不报错但危险(C 不检查)
  • 初始化:int a[5]={1,2,3};(其余补 0);int a[]={1,2,3};(长度自动 3);⚠ int a[5]={1,2,3,4,5,6} 错
  • 二维数组 a[3][4]:3 行 4 列;按行优先存放;初始化可分行赋或整体赋;a[0] 表示第 0 行
  • 字符数组与字符串★★★:
    • char s[10]="abc"; 或 char s[]="abc";(4 字节含 \0);char s[]={'a','b','c'}(3 字节无 \0,是字符数组不是字符串)⚠
    • 输出 printf("%s",s) 遇 \0 停止({'m','n','\0','t'} 输出 "mn"——2024 真题)
    • 字符串函数(string.h):strlen(s) 求实际长度(不含 \0);strcpy(s1,s2) 复制;strcat(s1,s2) 连接;strcmp(s1,s2) 比较(相等返回 0;按字典序);strlwr/strupr 大小写 ⚠ strlen("abc")=3 而 sizeof("abc")=4
  • 批量数据处理 ★★★:排序(冒泡:相邻比较交换,n 个数 n−1 趟;选择:每趟找最小放前)与查找(顺序;折半/二分查找:要求数组有序,mid=(low+high)/2,2024 综合题原型)★★、求数组最大/最小值、逆置

S1.8 函数 ★★★

  • 定义:类型名 函数名(形参表){ ... return 表达式; };无返回值用 void;return 返回值并结束函数
  • 形参与实参:定义时形参(变量),调用时实参(常量/变量/表达式);参数传递是"值传递"、单向(实参→形参),形参改变不影响实参 ⚠(传数组名=传地址除外——数组元素可被改)
  • 函数原型声明:先声明后使用(或定义在前)
  • 嵌套调用(函数调用函数)与递归调用 ★★★:函数直接/间接调用自身;递归必须有终止(出口)条件;经典:n!(f(n)=n*f(n-1),f(1)=1)、斐波那契 f(n)=f(n-1)+f(n-2)
  • 局部变量(函数/复合语句内,auto 默认)与全局变量(函数外定义,整个文件可用);static 局部变量:只初始化一次、函数返回后保留值
  • 库函数:printf/scanf(stdio.h)、sqrt/pow/fabs(math.h)、字符串函数(string.h)