1. 计算机语言的发展经历了哪几个阶段?
机器语言→汇编语言→高级语言(c++,java等)→非过程化语言(vibe coding)
2. C语言的主要特点是什么?
- C语言简洁,紧凑,编写的程序短小精悍。(看人) C编译程序的代码量较小,便于在微型机上应用(嵌入式开发)
- 运算符丰富,数据结构丰富。(并非丰富) C语言的数据结构有整型(int,long),实型,字符型(char),数组类型(int[]),指针类型(*),结构体类型(struct)和共用体类型(union)等,能实现各种复杂的数据类型的数据运算,并引入了指针概念,使程序效率更高
- C语言是一种结构化程序设计语言,具有结构化语言所需要求的三种基本结构
- C语言允许直接访问物理地址(对内存操作)
- C语言具有预处理机制
- C语言可移植性好
- C语言的语法限制不太严格,程序设计自由度大
- C语言程序生成代码质量高,程序执行效率高
3. C语言程序由哪几部分组成?
一个C程序由若干函数组成,其中有且仅有一个 main 函数(主函数)
按层次看:
- 预处理命令:以 # 开头,如 #include <stdio.h>、#define、#ifdef 等,在正式编译前由预处理器处理
- 全局声明部分:函数外部的变量声明、类型声明(struct/union/enum)、函数声明(原型)
- 函数(核心部分):每个函数由「函数首部」+「函数体」组成
- 函数首部:返回类型 + 函数名 + 形参表,例如 int main(void)
- 函数体:由 { } 括起,内含「声明部分」(定义变量)+「执行部分」(若干语句)
- 注释与空白:// 与 / /,只为方便人阅读,编译时被忽略
- 其他源文件:一个C程序可以分布在多个 .c 文件中,分别编译后链接成一个可执行文件。
要点:程序总是从 main 函数开始执行,也最终在 main 中结束
4. C语言的标识符是怎样设计的
- 组成:只能由「字母、数字、下划线 _」三种字符构成
- 首字符:必须是字母或下划线,不能是数字。(3x 非法,_x、x3 合法)
- 大小写敏感:sum、Sum、SUM 是三个互不相同的标识符
- 关键字不能用:int、for、if、while、return 等已被语言占用
- 长度:ANSI C 规定至少前 31 个字符有效(老编译器只认前 8 个),实际能更长,但别写太长
- 命名习惯:变量/函数常用小写下划线(maxvalue)或驼峰(maxValue),常量常全大写(MAXSIZE)
- 用途:用来命名变量、常量、函数、数组、结构体类型、标号等
5. 简述C语言设计程序的一般过程
- 分析问题:明确已知条件、输入与输出,建立数学模型
- 设计算法:确定数据结构与解题步骤,可用流程图或伪代码描述
- 编辑源程序:按C语法写出 .c 文件
- 编译与链接:预处理→编译→汇编→链接(gcc 等一条命令即可完成),产出可执行文件
- 运行与测试:用典型数据、边界数据、特殊数据测试,检查结果是否符合预期
- 查错与调试:按报错信息定位语法错误;用断点、打印中间结果定位逻辑错误,回到第 3 步反复迭代
- 整理与维护:优化代码、补注释与文档,方便日后修改和他人阅读
6. 简述文档编写的重要性。为什么程序员不愿意写文档?
重要性:
- 便于理解:代码说明「怎么做」,文档说明「做什么、为什么这么做」,团队协作与交接离不开它
- 便于维护:否则过几天几个月连自己都不会
- 便于测试:需求与设计文档是编写测试用例、验收交付的依据
不愿意写的原因:
懒
7. 一个C语言程序是由若干个函数构成的,其中有且只能有一个()函数
主函数(即main函数)
8. 指出以下标识符那些是合法的,哪些是不合法的
CD12 sum_3 a*b2 7stu D.K.Jon ab3_3 _2count Pas if for XYZ32L6 abc#xy _78 #_f5 c.d
判断依据:只由字母、数字、下划线组成;首字符必须是字母或下划线;区分大小写;不能是关键字。
合法:
CD12 字母开头,其余是字母数字
sum_3 下划线可用,且不在开头
ab3_3 字母开头,数字不在首位即可
_2count 下划线开头,合法
Pas 普通标识符
XYZ32L6 纯字母数字组合
_78 下划线开头,合法
非法:
ab2 出现 号,非法字符
7stu 数字开头
D.K.Jon 出现 . 号,非法字符
if 关键字
for 关键字
abc#xy 出现 # 号,非法字符
#_f5 出现 # 号,且 # 不能作首字符
c.d 出现 . 号,非法字符
9. 编写一个C语言程序,要求输出以下信息
—
***************
How are you!
***************
—
参考程序:
#include <stdio.h>
int main()
{
printf("\n");
printf("How are you!\n");
printf("\n");
return 0;
}
也可以只用一条 printf 完成:
printf("\nHow are you!\n\n");
10. 编写一个C语言程序,从键盘输入x,y,z三个整型变量,并输出其中的最小值
分析:用 scanf 读入三个整数,先假设 x 最小,再分别与 y、z 比较,谁小就换成谁。
#include <stdio.h>
int main()
{
int x, y, z, min;
printf("Please input x, y, z: "); /* 提示信息 */
scanf("%d%d%d", &x, &y, &z); /* 读入三个整数 */
min = x; /* 先假设 x 最小 */
if (y < min) min = y; /* 与 y 比较,更小就更新 */
if (z < min) min = z; /* 与 z 比较,更小就更新 */
printf("min = %d\n", min);
return 0;
}
运行示例:
Please input x, y, z: 3 8 -2
min = -2
也可以不用 if,用条件运算符(三目运算符)一行求出最小值:
min = x < y ? (x < z ? x : z) : (y < z ? y : z); // 炫技这一块
11. 编写一个C语言程序,实现例1.6,根据游客年龄(age)和普通票价(price),确定并输出每个人的门票价格(ticket)。若年龄在0~12岁,为儿童票
#include <stdio.h>
int main()
{
int age,price,stu;
float ticket;
printf("请输入年龄: "); fflush(stdout); scanf("%d",&age);
printf("请输入票价: "); fflush(stdout); scanf("%d",&price);
printf("是否为学生(输入0表示不是): "); fflush(stdout); scanf("%d",&stu);
if(age<=12)
{
ticket=10;
}else if(age>=60)
{
ticket=price*0.3;
}else if(stu)
{
ticket=price*0.5;
}else
{
ticket=price;
}
printf("票价: %.2f\n",ticket);
return 0;
}