c语言实验习题 下载本文

8. 指针和函数

a. b. c. d. e. f. g. h. i. j.

编写函数实现void func(int a,int b,int c,int *pmax,int *pmin,float *pavg) ,求出a,b,c的最大值和最小值、平均值通过指针返回;

编写函数void swap(int *x , int *y) 交换想x和y指向变量的值; 编写函数int aSum(int *a ,int n) 求出a所指向数组的前n项的和;

编写函数void cpyStr(char *stra,char *strb),将字符串strb复制给stra所指向的空间; 编写函数void catStr(char *stra,char *strb),将字符串strb连接到stra所指向的字符串的后面;

编写函数int cmpStr(char *stra,char *strb),将字符串strb和stra进行比较;

编写函数void insert(char *stra,char ch,int n),将将字符ch插入到字符串stra中第n个位置;

编写函数int lenStr(char s[]),求字符串的长度;

编写函数int findCh(char *str , char ch),找出字符ch在字符串str中出现的第一个位置;编写函数 void func(char *str),将str所指向字符串中的所有大写字母全变成小写字母;

编写函数int func(char *str),将字符串中所有的数字字符删除掉,并将新生成的字符串的长度作为返回值;比如 “abc123xyz” 过滤后 “abcxyz”返回值为6

k. 编写函数void findCh(char *str , char ch),判断字符ch是否与str所指串中的某个字符相

同; 若存在相同,什么也不做,若不同,则将其插在串的最后。 l. 编写函数 int func(int n),函数返回值为 sum=1+1+2+1+2+3+1+2+3+4+...+1+2+3+4+...+n

m. 编写函数 int func(int a[],int n,int b),将b插入到一个已按降序排好的数组a中,a

中现在有n个元素,要求插入后的数组仍然是降序的;

n. 请编写函数void fun(char *str),对字符串,按降序排列。例如:原来的字符串为CEAedcab,

排序后输出为edcbaECA。

o. 请编写函数void fun(char *s,char *t),将s所指字符串的正序和反序进行连接,形成

一个新串放在t所指的数组中。例如:当s串为\时,则t串的内容应为\。 p.

9. 算法补充

a. 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到4报数),凡报到4的人退出

圈子,问最后留下的是原来第几号的那位。(建议用链表实现)

b. 读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行 (这里

的“单词”是指由空格隔开的字符串)。

例如:若输入:“i am a student to take the examination.”,则应输出:“I Am A Student To Take The Examination.”。

c. 有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。 d. 给定n个实数,输出平均值,并统计在平均值以下(含平均值)的实数个数。 e. 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5 f. 打印出杨辉三角形(要求打印出10行)

g. 求广义菲玻那契级数的第n项。广义菲玻那契级数的前n项为: 1,1,1,3,5,9,17,

31,??

h. 例如:若 n = 15,则应输出:The value is: 2209。

i. 在字符串str中找出ASCii码值最大的字符,将其放在第一个位置上,并将该字符的原字

符向后顺序移动。例如:调用fun函数之前给字符串输入:ABCDeFGH,调用后字符串中的内容为:eABCDFGH。

j. 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,

第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。 k. 一个自然数被 8 除余 1 ,所得的商被 8 除也余 1 ,再将第二次的商被8 除后余7 ,最

后得到一个商为a。又知这个自然数被17除余4 ,所得的商被17除余15,最后得到一个商是a的2倍。编写程序求这个自然数。

l. 用二分法求方程2X^3+4X^2+3X-6=0在(-10,10)之间的根 ,其中 X^n代表X的n次方。 m. 已知X、Y、Z分别表示0~9中不同的数字,编程求出使算式XXXX+YYYY+ZZZZ=YXXXZ成立时

X、Y、Z的值,并要求打印该算式。

n. 输出1到100之间每位数的乘积大于每位数的和的数。例如:数字26,数位上数字的乘积

12大于数字之和8。

o. 求100-999之间的水仙花数说明:水仙花数是指一个三位数的各位数字的立方和是这个数

本身。

p. 编写一个函数求任意给两个日期(Y0年M0月DO日和Y1年M1月D1日)相差的天数。