本文所列习题答案均不含解释说明类题目。
第6章 利用数组处理批量数据
- 用筛选法求100之内的素数。
①先把1挖掉;
②把2标记为素数,将2的其他倍数挖掉;
③把3标记为素数,将3的其他倍数挖掉;
④4被挖掉,跳过;
⑤……
1 |
|
- 用选择法对10个整数排序。
1 |
|
- 求一个 $3 \times 3$ 的整型矩阵对角线元素之和。
1 |
|
- 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。
1 |
|
- 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。
1 |
|
- 输出以下的杨辉三角形(要求输出10行)。
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 $\vdots$ $\vdots$ $\vdots$ $\vdots$ $\vdots$ $\vdots$
1 |
|
- 输出“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。例如,三阶魔方阵为
8 1 6
3 5 7
4 9 2
要求输出 1 ~ $n^2$ 的自然数构成的魔方阵。
奇数阶魔方阵的生成规律如下:
① $1$ 位于第 $1$ 行第 $\frac{n+1}{2}$ 列;
② $2$ 到 $n^2$ 的各数,每一个数存放的行比前一个数少 $1$ ,若前一个数已放在第 $1$ 行,则这一个放在第 $n$ 行;
③ $2$ 到 $n^2$ 的各数,每一个数存放的列比前一个数多 $1$ ,若前一个数已放在第 $n$ 列,则这一个放在第 $1$ 列;
④ 若当前数要放的位置已经有数,则存放到前一个数同一列的下一行的位置,若前一个数已放在第 $n$ 行,则这一个放在第 $1$ 行。
1 |
|
- 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。
1 |
|
- 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
1 |
|
- 有一篇文章,共有3行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格以及其它字符的个数。
1 |
|
- 输出以下图案:
1
2
3
4
5* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
1 |
|
- 有一行电文,已按下面规律译成密码:
A→Z a→z
B→Y b→y
C→X C→x
$\; \; \vdots \; \; \; \; \; \vdots$
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。
1 |
|
- 编一程序,将两个字符串连接起来,不要用strcat函数。
1 |
|
- 编一个程序,将两个字符串s1和s2比较,若s1>s2,输出一个正数;若s1=s2,输出0;若s1<s2,输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。例如,”A”与”C”相比,由于”A”<”C”,应输出负数,同时由于’A’与’C’的ASCII码差值为2,因此应输出“-2”。同理:”And”和”Aid”比较,根据第2个字符比较结果,”n”比”i”大5,因此应输出“5”。
1 |
|
- 编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。不用strcpy函数。复制时,’\0’也要复制过去。’\0’后面的字符不复制。
1 |
|
第7章 用函数实现模块化程序设计
- 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
非递归版。
1 |
|
递归版
1 |
|
- 求方程 $a^2+bx+c=0$ 的根,用3个函数分别求当:$b^2-4ac$ 大于0、等于0和小于0时的根并输出结果。从主函数输入 $a,b,c$ 的值。
1 |
|
- 写一个判素数的函数,在主函数输入一个整数,输出是否为素数的信息。
1 |
|
- 写一个函数,使给定的一个 $3 \times 3$ 的二维整型数组转置,即行列互换。
1 |
|
- 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。
1 |
|
- 写一个函数,将两个字符串连接。
1 |
|
- 写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出。
1 |
|
- 写一个数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一空格。如输入1990,应输出“1 9 9 0”。
1 |
|
- 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。
1 |
|
- 写一个函数,输入一行字符,将此字符串中最长的单词输出。
1 |
|
- 写一个函数,用“起泡法”对输入的10个字符按由小到大顺序排列。
1 |
|
- 用牛顿迭代法求根。方程为 $ax^3+bx^2+cx+d=0$ ,系数 $a,b,c,d$ 的值依次为1,2,3,4,由主函数输入。求在1附近的一个实根。求出根后由主函数输出。
1 |
|
- 用递归方法求 $n$ 阶勒让德多项式的值,递归公式为
1 |
|
- 输入10个学生5门课的成绩,分别用函数实现下列功能:
①计算每个学生的平均分;
②计算每门课的平均分;
③找出所有50个分数中最高的分数所对应的学生和课程;
④计算平均分方差:
$\sigma = \frac{1}{n} \sum x_{i}^{2} - (\frac{\sum x_i}{n})^2$
其中, $x_i$ 为某一学生的平均分。
1 |
|
- 写几个函数:
①输入10个职工的姓名和职工号;
②按职工号由小到大顺序排序,姓名顺序也随之调整;
③要求输入一个职工号,用折半查找法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
1 |
|
- 写一个函数,输入一个十六进制数,输出相应的十进制数。
1 |
|
- 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
1 |
|
- 给出年、月、日,计算该日是该年的第几天。
1 |
|
第8章 善于利用指针
本章习题均要求用指针方法处理。
- 输入3个整数,按由小到大的顺序输出。
1 |
|
- 输入3个字符串,按由小到大的顺序输出。
1 |
|
- 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。
1 |
|
- 有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图。写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。
1 |
|
- 有n个人围成一圈,顺序排号。从第1个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
1 |
|
- 写一函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度。
1 |
|
- 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。
1 |
|
- 输入一行文字,找出其中大写字母、小写字母、空格、数字以及其他字符各有多少。
1 |
|
- 写一函数,将一个 $3 \times 3$ 的整型矩阵转置。
1 |
|
- 将一个 $5 \times 5$ 的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用。
1 |
|
- 在主函数中输入等长的字符串。用另一函数对它们排序。然后在主函数输出这10个已排好序的字符串。
1 |
|
- 用指针数组处理上一题目,字符串不等长。
1 |
|
- 写一个用矩形法求定积分的通用函数,分别求
$\int_{0}^{1} \sin{x}\mathrm{d}x$ , $\int_{-1}^{1} \cos{x}\mathrm{d}x$ , $\int_{0}^{2} \mathrm{e}^x\mathrm{d}x$
说明: sin,cos,exp函数已在系统的数学函数库中,程序开头要用 #include <math.h>
。
1 |
|
- 将n个数按输入时顺序的逆序排列,用函数实现。
1 |
|
- 有一个班4个学生,5 门课程。①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编3个函数实现以上3个要求。
1 |
|
- 输入一个字符串,内有数字和非数字字符,例如:
1
A123x456 17960? 302tab5876
将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。
1 |
|
- 写一函数,实现两个字符串的比较。即自己写一个strcmp函数,函数原型为
1
int strcmp(char * p1,char * p2);
设p1指向字符串s1,p2指向字符串s2。要求当s1 $=$ s2时,返回值为0;若 s1 $\neq$ s2,返回它们二者第1个不同字符的ASCII码差值(如”BOY与”BAD”,第2个字母不同,O与A之差为79-65=14)。如果s1>s2,则输出正值;如果s1<s2,则输出负值。
1 |
|
- 编一程序,输入月份号,输出该月的英文月名。例如,输入3,则输出”March”,要求用指针数组处理。
1 |
|
- (1)编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。
(2)写一函数free,将前面用new函数占用的空间释放。free(p)表示将p(地址)指向的单元以后的内存段释放。
1 |
|
- 用指向指针的指针的方法对5个字符串排序并输出。
1 |
|
- 用指向指针的指针的方法对n个整数排序并输出。要求将排序单独写成一个函数。n个整数在主函数中输入,最后在主函数中输出。
1 |
|
第9章 用户自己建立数据类型
- 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。
1 |
|
- 写一个函数days,实现第1题的计算。由主函数将年、月、日传递给days函数,计算后将日子数传回主函数输出。
1 |
|
- 编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,用print函数输出这些记录。
1 |
|
- 在第3题的基础上,编写一个函数input,用来输入5个学生的数据记录。
1 |
|
- 有10个学生,每个学生的数据包括学号、姓名、3门课程的成绩,从键盘输入10个学生数据,要求输出3门课程总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课程成绩、平均分数)。
1 |
|
- 13个人围成一圈,从第1个人开始顺序报号1,2,3。凡报到3者退出圈子。找出最后留在圈子中的人原来的序号。要求用链表实现。
1 |
|
1 |
|
- 写一个函数insert,用来向一个动态链表插入结点。
1 |
|
- 综合本章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)本章习题第7题(除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。用以上5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插入的结点的数据。
1 |
|
- 已有a,b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。
调用已有函数版本
1 |
|
单独函数版本
1 |
|
- 有两个链表a和 b,设结点中包含学号、姓名。从a链表中删去与b链表中有相同学号的那些结点。
调用已有函数版本
1 |
|
单独函数版本
1 |
|
- 建立一个链表,每个结点包括:学号、姓名、性别、年龄。输入一个年龄,如果链表中的结点所包含的年龄等于此年龄,则将此结点删去。
1 |
|
第10章 对文件的输入输出
什么是文件型指针?通过文件指针访问文件有什么好处?
对文件的打开与关闭的含义是什么?为什么要打开和关闭文件?
从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存,输入的字符串以“!”结束。
1 |
|
- 有两个磁盘文件A和B,各存放一行字母,今要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中去。
1 |
|
- 有5个学生,每个学生有3门课程的成绩,从键盘输入学生数据(包括学号,姓名,3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分数存放在磁盘文件stud中。
1 |
|
- 将第5题stud文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一个新文件stu_sort中。
1 |
|
- 将第6题已排序的学生成绩文件进行插入处理。插入一个学生的3门课程成绩,程序先计算新插入学生的平均成绩,然后将它按成绩高低顺序插入,插入后建立一个新文件。
1 |
|
- 将第7题结果仍存入原有的stu_sort文件而不另建立新文件。
1 |
|
- 有一磁盘文件employee,内存放职工的数据。每个职工的数据包括职工姓名、职工号、性别、年龄、住址、工资、健康状况、文化程度。今要求将职工名、工资的信息单独抽出来另建一个简明的职工工资文件。
1 |
|
- 从第9题的“职工工资文件”中删去一个职工的数据,再存回原文件。
1 |
|
- 从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。
1 |
|
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏