1
C语言程序设计
1.7.12 习 题 六

习 题 六

6.1 写一个函数,使其能将一个二维数组(5×3)中的数据进行行列互换。(参考函数原型:void tran(int array[5][3]))

6.2 写一个函数,使其能统计主调函数通过实参传送来的字符串,对其中的字母、数字、空格分别计数。(要求在主函数中输入字符串及输出统计结果)(参考函数原型:void count(char* str))

6.3 写一个函数,使其能处理字符串中除字母(大小写)、数字外的其他ASCII字符,对多于一个连在一起的相同字符,将其缩减至仅保留一个。(参考函数原型:void del(char* str))

6.4 设有一个3位数,将它的百、十、个位3个单一数,各自求立方,然后加起来,正好等于这个3位数,如153=1+125+27。写一个函数,找出所有满足该条件的数。(参考函数原型:int find(int n))

6.5 写一个函数,使其能求出一元二次方程的解。(参考函数原型:void s(int a,int b,int c),a、b、c分别代表一元二次方程的系数)

6.6 写一个程序,从键盘输入5个正整数,然后求出它们的最小公倍数,并显示输出。(通过调用对两个正整数求最小公倍数的函数实现)(参考函数原型:int find(int i,int j))

6.7 如果一个数正好是它的所有约数(除了它本身以外)的和,此数称完备数,如:6,它的约数有1,2,3,并且1+2+3=6。求出30 000以内所有的完备数,并显示输出。(求完备数用函数实现)(参考函数原型:void find(int j),直接在子函数中输出完备数及其所有约数)

6.8 如果有两个数,每一个数它的所有约数(除了它本身以外)的和正好等于对方,则称这两个数为互满数。求出30 000以内所有的互满数,并显示输出,求一个数它的所有约数(除了它本身以外)的和用函数实现。(参考函数原型:int factor(int j))

6.9 函数实现将输入的一组数据逆序输出的功能。(参考函数原型:void isort(int a[]))

6.10 一个数组,内放10个整数,要求编写一函数找出最小的数和它的下标的功能。(参考函数原型:void min(int a[])和void m inlocat(int a[]))

6.11 编写一函数,实现将两个字符串比较大小。(不用标准库函数)(参考函数原型:int cmp(char s1[],char s2[]))

6.12 编写一函数,实现两个字符串的复制。(不用标准库函数)(参考函数原型:void copy(char s1[],char s2[]))

6.13 从键盘输入10名学生的成绩,显示其中的最低分、最高分及平均成绩。求最低分、最高分及平均成绩利用子函数实现。(参考函数原型:void minmax(int s[]))

6.14 在总数为n的对象中,任意取p个不同组合,可用C(p,n)来表示,其中p〈=n。写一个程序,在给出n和p的情况下,计算并输出结果。(能输出具体的组合情况则更好)(参考函数原型:float f(int n))

6.15 定义函数判断一个点与坐标原点的距离是否小于1,是否在单位圆内。写一个通过蒙特卡罗方法计算圆周率值的程序:每次计算随机生成两个0与1之间的实数(利用标准库随机数生成函数产生这种实数),看这两个值形成的点是否在单位圆内。生成一系列随机点,统计单位圆内的点数与总点数,看它们之比的4倍是否趋向π值。生成100,200,…,1000个数据点做试验。(参考函数原型:float pi(int n))

6.16 请实现一积分函数,使它能求出一个定义好的数学函数在某区间的数值积分值。试采用矩形方法、梯形方法,考察它们在不同分割情况下的表现,加细分割对积分值的影响。用不同的数学函数试验程序。如果函数在积分区间出现奇点,程序将出现什么问题?考虑有什么处理办法(参考函数原型:float jf(int n),n为划分的积分区间个数,用宏定义计算函数值)。

6.17 定义比较两个身份证(假设身份证均为18位,从第7到第14位代表出生年月日)大小的函数:以出生年月日作为标准;以身份证号作为标准。考虑应该使用结构参数,还是使用结构指针参数(以出生年月日比较两个身份证参考函数原型:int cmpyyyymmdd(char* s1,char* s2))。

6.18 完成正文中基于结构的学生成绩处理程序,提供按照成绩排序输出的功能。其中结构定义如下:

img575

参考函数原型:void sort(struct stu*ps)