C语言程序设计 第一章 · 习题与要点

喜欢这篇文章就点个赞吧

1. 计算机语言的发展经历了哪几个阶段?

机器语言→汇编语言→高级语言(c++,java等)→非过程化语言(vibe coding)

2. C语言的主要特点是什么?

  1. C语言简洁,紧凑,编写的程序短小精悍。(看人) C编译程序的代码量较小,便于在微型机上应用(嵌入式开发)
  2. 运算符丰富,数据结构丰富。(并非丰富) C语言的数据结构有整型(int,long),实型,字符型(char),数组类型(int[]),指针类型(*),结构体类型(struct)和共用体类型(union)等,能实现各种复杂的数据类型的数据运算,并引入了指针概念,使程序效率更高
  3. C语言是一种结构化程序设计语言,具有结构化语言所需要求的三种基本结构
  4. C语言允许直接访问物理地址(对内存操作)
  5. C语言具有预处理机制
  6. C语言可移植性好
  7. C语言的语法限制不太严格,程序设计自由度大
  8. C语言程序生成代码质量高,程序执行效率高

3. C语言程序由哪几部分组成?

一个C程序由若干函数组成,其中有且仅有一个 main 函数(主函数)

按层次看:

  1. 预处理命令:以 # 开头,如 #include <stdio.h>、#define、#ifdef 等,在正式编译前由预处理器处理
  2. 全局声明部分:函数外部的变量声明、类型声明(struct/union/enum)、函数声明(原型)
  3. 函数(核心部分):每个函数由「函数首部」+「函数体」组成
    • 函数首部:返回类型 + 函数名 + 形参表,例如 int main(void)
    • 函数体:由 { } 括起,内含「声明部分」(定义变量)+「执行部分」(若干语句)
  4. 注释与空白:// 与 / /,只为方便人阅读,编译时被忽略
  5. 其他源文件:一个C程序可以分布在多个 .c 文件中,分别编译后链接成一个可执行文件。

要点:程序总是从 main 函数开始执行,也最终在 main 中结束

4. C语言的标识符是怎样设计的

  1. 组成:只能由「字母、数字、下划线 _」三种字符构成
  2. 首字符:必须是字母或下划线,不能是数字。(3x 非法,_x、x3 合法)
  3. 大小写敏感:sum、Sum、SUM 是三个互不相同的标识符
  4. 关键字不能用:int、for、if、while、return 等已被语言占用
  5. 长度:ANSI C 规定至少前 31 个字符有效(老编译器只认前 8 个),实际能更长,但别写太长
  6. 命名习惯:变量/函数常用小写下划线(maxvalue)或驼峰(maxValue),常量常全大写(MAXSIZE)
  7. 用途:用来命名变量、常量、函数、数组、结构体类型、标号等

5. 简述C语言设计程序的一般过程

  1. 分析问题:明确已知条件、输入与输出,建立数学模型
  2. 设计算法:确定数据结构与解题步骤,可用流程图或伪代码描述
  3. 编辑源程序:按C语法写出 .c 文件
  4. 编译与链接:预处理→编译→汇编→链接(gcc 等一条命令即可完成),产出可执行文件
  5. 运行与测试:用典型数据、边界数据、特殊数据测试,检查结果是否符合预期
  6. 查错与调试:按报错信息定位语法错误;用断点、打印中间结果定位逻辑错误,回到第 3 步反复迭代
  7. 整理与维护:优化代码、补注释与文档,方便日后修改和他人阅读

6. 简述文档编写的重要性。为什么程序员不愿意写文档?

重要性:

  1. 便于理解:代码说明「怎么做」,文档说明「做什么、为什么这么做」,团队协作与交接离不开它
  2. 便于维护:否则过几天几个月连自己都不会
  3. 便于测试:需求与设计文档是编写测试用例、验收交付的依据

不愿意写的原因:

懒

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;
}
ruosha 一个热爱计算机的普通人。这里记录算法竞赛题解与学习笔记,顺带折腾服务器。

发表评论

评论需要经过审核后才会公开显示,请耐心等待。

冀ICP备2026040623号