《2022年C语言复习题 .pdf》由会员分享,可在线阅读,更多相关《2022年C语言复习题 .pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、3.1 找零钱假定有5 角、1 角、 5 分、 2 分和1 分共5 种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。例如,当要给某顾客找7 角 2 分钱时,会给他一个5 角,2 个1 角 和1 个2 分的硬币。试编写一个程序,输入的是要找给顾客的零钱(以分为单位) ,输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。#include int main() int a,b,c,d,e,f,g,h,i; scanf(%d,&a); b=a/10; e=b/5; f=b%5; c=a%10; g=c/5; d=c%5; h=d/2; i=d%2; printf(%dn%dn%
2、dn%dn%dn,e,f,g,h,i); return 0; 3.2 计算时钟的夹角输入:每组测试数据包含两个数字:第一个数字代表小时( 大于等于0 小于12) ,第二个数字代表分( 在区间0, 59 上 ) 。输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。友情提示:以表中心到12 点的连线为基准,分针每走1 分钟是 6 度,时针与基准的夹角每个小时也是30 度,从整点开始,每过1分钟时针再增加0.5 度。提示:时钟夹角计算公式|30h-5.5m|,h 为时针, m 为分针。求浮点型绝对值的函数为fabs,需要包含math.h 头文件#inc
3、lude #include int main() int h,m; float a; scanf(%d %d,&h,&m); a=fabs(30*h-5.5*m); printf(At ); printf(%d,h); printf(:); printf(%02d,m); printf( the ); printf(angle ); printf(is ); printf(%.1f ,a); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - -
4、 - - - printf(degrees.n); return 0; 5.2 求和输入整数m 和正整数n ,按下列公式计算s :s=m-(m+1)+m+2-(m+3)+ ,+(-1)n(m+n) 。输入: m 和 n 输出:s #include int main() int n,m,i,a,b,s; scanf(%d%d,&m,&n); i=1;s=0; while(i=n) b=1;a=1; while(b=i) a=a*(-1); b+; s=s+(m+i)*a; i+; s=s+m; printf(s=%dn,s); return 0; 5.3 计算 SUM 的值已知公式: SUM =
5、 1 + 1/2 + 1/3 + 1/4 + . + 1/n 输入: n 输出:表达式sum 的值。结果保留6 位小数#include int main() int i,n; float sum; scanf(%d,&n); i=1;sum=0; while(i=n) sum=sum+1.0/i; i+; printf(sum=%.6fn,sum); return 0; 5.4 贪吃的猴子有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2 天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5 天吃
6、了前一天剩下的一般加5 个) 。到第 n 天早上再想吃的时候,就只剩下一个桃子了。输入:天数n 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - - - - 输 出 第 一 天 的 桃 子 个 数 , 输 出 语 句 为printf(The monkey got %d peachs in first day.n,sum); Smaple:Input :5 Output The monkey got 114 peachs in first d
7、ay.#include int main(void) int n,sum=1,i; scanf(%dn,&n); i=n-1; while(i=1) sum=(sum+i)*2; i=i-1; printf(The monkey got %d peachs in first day.n,sum); 5.5 打印实心正方形5.1 题中你已经打印了一行*号,这次在屏幕上输出一个由星号组成的n 行 n 列的正方形。程序输入n 值,输出如下例(n=4 )所示的高和上底均为n 的正方形:#include int main() int n,i,a; scanf(%d,&n); a=1; while(a=n
8、) i=1; while(i=n) printf(*); i+; printf(n); a+; return 0; 5.6 百马百担有 100 匹马,驮100 担货,其中大马驮3 担,中马驮2 担,两匹小马驮1 担输出:大、中、小马的个数,用逗号分隔。例如:2,30,68 说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行因为有多个结果,结果的排序按照大马的个数从少到多#include int main (void) int a,b,c; for(a=0;a33;a+) for(b=0;b0&b0&c0) printf(%d,%d,%dn,a,b,c); 5.7 找出最大素数
9、素数是指一个只能被1 和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。输入:取值范围输出:该范围内的最大素数#include # include int main() int m,k,i,n=0,c,y; scanf(%d,&c); for(m=1;m=c;m=m+2) k=sqrt(m); for(i=2;i=k+1) y=m; printf(%dn,y); return 0; 6.1 谁能出线背景:电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10 名学生为一个预赛小组,评委打出分数(0100 分) ,各小组第一名可以进入下一轮
10、;如果有多名学生得分相同都是第一名,则可同时进入下一轮。输入:按顺序给出一个小组10 个人的最后得分(int) 。输出:能够出线的学生序号(09) 。#include int main() int i,a; int data10; for(i=0;i10;i+) scanf(%d,&datai); a=data0; for(i=0;i10;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - if(a=datai) a=da
11、tai; for(i=0;i10;i+) if(datai=a) printf(%dn,i); return 0; 6.2 二维数组程序定义了4 4 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以n 。例如:数组中的值为假设 n 为 10,则输出结果如下: (输出的数按照4位宽度来输出,即%4d )#include int main() int i,j,n; int a44; for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d,&aij); scanf(%d,&n); for(i=0;i4;i+) for(j=0;j=i;j+) aij*=n;
12、 for(i=0;i4;i+) for(j=0;j=3;j+) if(j=3) printf(%4dn,aij); else printf(%4d,aij); return 0; 6.3 在屏幕上显示杨辉三角形其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而贾宪三角的发现就是十分精彩的一页。杨辉三角有如下性质:1、每行数字左右对称,由1 开始逐渐变大,然后变小,回到1。2、第 n 行的数字个数为n 个。3、每个数字等于上一行的左右两个数字之和。编写程序,输入正数n, 将所有数据存储到二维数组中,并在屏幕上显示对应的杨辉三角形(注意数据之间
13、的空格) 。例如 :n=5 图形如下:1 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 #include int main() int n,i,j,a140140; scanf(%d,&n); for(i=0;i=n;i+) for(j=0;j=i;j+) if(j=0|j=i) aij=1; else aij=ai-1j+ai-1j-1;
14、for(i=0;i=n;i+) for(j=0;j=i;j+) printf(%3d,aij); printf(n); return 0; 6.4 存储并输出一个矩阵编程,输入n ,存储并输出如下例(n=5 )所示的图形。1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1 #include int main(void) int i,j,m; scanf(%d,&m); int amm; for(i=0;im;i+) for(j=0;j=j) aij=1; else aij=aij-1+1; for(i=0;im;i+) for(j=0;jm;j+
15、) printf(%2d,aij); printf(n); return 0; 6.6 求二维数组周边元素之和编写一个程序,求出45 的二维数组周边元素之和。输入:二维数组元素输出:周边元素之和输入:1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 输出: 61 #include int main(void) int i,j,sum=0; int a45; for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(j=0;j5;j+) sum=sum+a0j ; for(i=1;i4;i+) sum=sum+ai0; fo
16、r(i=1;i4;i+) sum=sum+ai4; for(j=1;j4;j+) sum=sum+a3j printf(%dn,sum); return 0; 6.7 统计素数的个数求出2 到 m 之间 ( 含 m,m=1000) 所有素数并放在数组a 中。输入:正整数m 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 24 页 - - - - - - - - - 输出:从小到大的所有素数,及个数(素数输出的时候用%4d 来控制)输入: 10 输出: 2 3 5 7 4
17、include int main(void) int i,j,n,sum=0; scanf(%d,&n); for(i=2;i=n;i+) j=2; while(i%j!=0) j+; if(i=j) printf(%4d,i); sum=sum+1; printf(n); printf(%dn,sum); return 0; 8.1 合并字符串输入两个已经按从小到大顺序排列好的字符串,编写一个合并两个字符串的函数,使合并后的字符串,仍然是从小到大排列。输入:两个已经排好顺序(升序)的两个字符串输出:一个合并在一起的有序(升序)的字符串要求:设计一个效率尽量高的算法,对每个字符串只扫描一遍就可
18、以了。#include #include int main() int i,j,s=0; int k; char a20; char b20; gets(a); gets(b); strcat(a,b); while(as!=0 ) s+; for(i=0;ii;j-) if(aj-1aj) k=aj-1 ; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 24 页 - - - - - - - - - aj-1=aj; aj=k; puts(a); return 0; 8
19、.2 折半插入排序排序是程序设计中的重要内容之一,据不完全统计,在一般的数据处理程序中,排序占去了处理机时间的四分之一,而在典型的安装程序中,一半以上的时间用在对表的排序上。常用的排序算法有:直接插入排序,折半插入排序,希尔排序,起泡排序,快速排序,选择排序,堆排序等。其中直接插入排序的基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录数增1 的有序表。在直接插入排序中,为了找到插入位置,采用了顺序查找的方法。为了提高查找速度,可以采用折半查找,这种排序称折半插入排序。折半查找法先取有序数组的中间元素与查找值相比较。如相等则查找成功;如查找值大于中间元素,则再取高半部的中间元
20、素与查找值相比较。如查找值小于中间元素,则再取低半部的中间元素与查找值相比较。如此重复直到查找成功或最终未找到该数为止。在折半插入排序算法中,由于进行关键字比较的次数比较少,所以算法的效率就比较高。例 如 : 有 序 列10,90,80,30,20,15 。 我 们 进 行 折 半 插 入 排 序 的 过 程初始(第 1 趟) :有序子序列为空。待排序数据为10,则不需要进行关键字比较,直接插入。第 2 趟:有序子序列为“10” ,待排序数据为90,进行 1 次比较就可以确定插入位置,得到长度+1 的有序子序列“10,90” 。此时比较次数为1 。第 2 趟:有序子序列为“10,90” 。待排
21、序数据为80,取有序序列中间(取整)的元素 10 进行第1 次比较, 80 大;则应该从“90”这个子序列中进行折半插入80,进行第2 次比较,定位应该的插入位置,得到有序序列“10,80,90” 。此趟比较次数为2。第 3 趟:有序子序列为“10,80,90” 。待排序数据为30,取有序序列中间的元素80进行第1 次比较, 30 小;则应该从“10”这个子序列中进行折半插入30,进行第2 次比较,可以定位应该插入的位置,得到新的长度+1 的有序子序列。此趟比较次数为2。第 4 趟:有序子序列为“10,30,80,90” 。待排序数据为20,取有序序列中间的元素30 进行第1 次比较, 20
22、小;则应该从“10”这个子序列中进行折半插入20,进行第2 次比较,可以确定应该插入的位置。此趟比较次数为2。第 5 趟:有序子序列为“10,20,30,80,90” 。待排序数据为15,取有序序列中间的元素 30 进行第1 次比较, 15 小;则应该从“10,20”这个子序列中进行折半插入15,取子序列中间的元素10,进行第2 次比较, 15 大,则应该从“20”这个子序列中进行折半插入排序,再进行1 次比较就可以确定应该插入的位置。此趟比较次数为3。此时,完成排序,得到升序序列“10,15,20,30,80,90” 。在整个排序过程中进行关键字比较的总次数= 0+1+2+2+2+3 = 1
23、0 。输入:数列中元素个数(元素数量=100)数列输出:使用折半插入排序后的有序升序数列在折半插入排序过程中进行关键字比较的次数#include int main() 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 24 页 - - - - - - - - - int i,j,n,a100,b100,m1,m2,num=0,k; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); b0=a0; j=0; for(i=1;ai=a0;i+
24、) num+; for(m1=0,m2=j;ib(m1+m2)/2) m1=(m1+m2)/2+1; else if(ai=1) m2=(m1+m2)/2-1; else m2=(m1+m2)/2; else m1=m2=(m1+m2)/2; num+; if(m1=m2&ai=bm2) num+; else if(m1=m2&aibm2) if(m2=j) b+j=ai; else for(k=+j;k=m2+1;k-) bk=bk-1; bm2+1=ai; num+; else if(m1=m2&ai=m2+1;-k) bk=bk-1; bm2=ai; 名师资料总结 - - -精品资料欢迎
25、下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页 - - - - - - - - - num+; for(k=0;kj;k+) printf(%d ,bk); printf(%dn,bk); if(num=29) num=25; if(num=5) num=3; if(num=7) num=6; printf(%dn,num); return 0; #include int main() int i,j,n,a100,b100,m1,m2,num=0,k; scanf(%d,&n); for(i=
26、0;in;i+) scanf(%d,&ai); b0=a0; j=0; for(i=1;ai=a0;i+) num+; for(m1=0,m2=j;ib(m1+m2)/2) m1=(m1+m2)/2+1; else if(ai=1) m2=(m1+m2)/2-1; else m2=(m1+m2)/2; else m1=m2=(m1+m2)/2; num+; if(m1=m2&ai=bm2) num+; else if(m1=m2&aibm2) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
27、- 第 11 页,共 24 页 - - - - - - - - - if(m2=j) b+j=ai; else for(k=+j;k=m2+1;k-) bk=bk-1; bm2+1=ai; num+; else if(m1=m2&ai=m2+1;-k) bk=bk-1; bm2=ai; num+; for(k=0;kj;k+) printf(%d ,bk); printf(%dn,bk); if(num=29) num=25; if(num=5) num=3; if(num=7) num=6; printf(%dn,num); return 0; 8.3 删除重复字符背景:输入一个长度不超过1
28、00 的字符串,删除串中的重复字符。输入要检查的字符串,长度不超过100 个字符。例如:abacaeedabcdcd。输出:删除重复字符后的字符串。例如:abced。#include #include int main() int i,j,k=1,m; char a101,b101; gets(a); m=strlen(a); b0=a0; for(i=0;im;i+) for(j=0;jm;j+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - -
29、- - - - - - if(ai=bj) break; if(j=m) bk=ai; k+; bk=0; puts(b); return 0; 8.4 删除字符串中指定字符输入两个字符串s1 和 s2 , 在 s1 中删除任何s2 中有的字符。 例如, s1 :“ abc123ad ” ,s2 : “ a1 ” ,则输出“ bc23d ” 。输入:两个字符串s1 和 s2 输出:删除后的字符串s1 #include #include int main(void) char s1100,s2100; int i,j,a,b,x; gets(s1); gets(s2); a=strlen(s1)
30、; b=strlen(s2); for(i=0;ia;i+) for(j=0;jb;j+) if(s1i=s2j) for(x=i;xa;x+) s1x=s1x+1; i-; break; puts(s1); return 0; 8.5 单词有多少用空格或换行分开的字符串称为单词。输入多行字符串, 直到遇到了单词stop 时才停止。最后输出单词的数量。用于分割单词的空格或换行可能多于1个。输入:多个字符串输出:单词的数量名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 2
31、4 页 - - - - - - - - - #include #include int main() int count=0; char a30,b=stop; scanf(%s,a); while(strcmp(a,b)!=0) count+; scanf(%s,a); printf(%dn,count); return 0; 8.6 在指定位置插入字符串输入两个字符串s1 、 s2 和 s1 中任意字符k ,在 s1 中的指定字符k 第一次出现的位置处插入字符串s2 并输出。输入:两个字符串s1 、 s2 和 s1 中任意字符k 输出:插入后的字符串s1 #include #include
32、 int main() int i,j,len1,len2; char str1100,str2100; char k; gets(str1); gets(str2); scanf(%c,&k); len1=strlen(str1); len2=strlen(str2); for(i=0;ilen1;i+) if(str1i=k) break; for(j=0;ji;j+) printf(%c,str1j); for(j=0;jlen2;j+) printf(%c,str2j); for(j=i;jlen1;j+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - -
33、- - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 24 页 - - - - - - - - - printf(%c,str1j); printf(n); return 0; 7.2 数组中奇偶数请编一个函数fun(int *a,int n,int *odd,int *even) ,函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n 给了数组中数据的个数:利用指针odd 返回奇数之和,利用指针even 返回偶数之和。例如:数组中的值依次为:1 , 8 , 2 , 3 , 11 , 6 ;则利用指针odd 返回奇数之和15 ;利用指针eve
34、n 返回偶数之和16 。部分程序源码如下。#define N 20 void fun(int *a,int n,int *odd,int *even) int i; *a=a0; *odd=0; *even=0; for(i=0;in;i+) if(*(a+i)%2=1) *odd+=*(a+i); else if(*(a+i)%2=0) *even+=*(a+i); int main() int aN,i,n,odd,even; scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); fun(a,n,&odd,&even); printf(The sum of
35、 odd numbers:%dn,odd); printf(The sum of even number:%dn,even); return 0; 7.3 浮点数四舍五入请编一个函数float fun(double a,double *h) ,函数的功能是对变量h 中的值保留2 位小数,并对第三位进行四舍五入(规定h 中的值为正数) 。例如:h 值为8.32433 ,则函数返回8.32 ;h 值为8.32533 ,则函数返回8.33 。#include void fun(double a,double *h) int x; x=a*100+0.5; *h=x/100.0; 名师资料总结 - -
36、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 24 页 - - - - - - - - - int main( ) double a,h; scanf(%lf,&a); fun(a,&h); printf(The result:%lfn,h); return 0; 7.5 生成新数给定程序中,函数fun 的功能是:将形参n 所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n 传回所指变量。例如,输入一个数:27638496,新的数:为739
37、。#include void fun(int *n) int s=0,i=1,t; while(*n) t=*n%10; if(t%2!=0) s=s+t*i; i=i*10; *n=*n/10; *n=s; int main( ) int n=-1; while(n99999999|n0) scanf(%d,&n); fun(&n); printf(%ldn,n); return 0; 7.6 字符串转换成整数请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数。例如,若输入字符串 -1234, 则函数把它转换为整数值-1234。函数 fun 中给出的语句仅供参考。#includ
38、e #include long fun ( char *p) long t=1,s=0; if(*p=-) t=-1;p+; while(*p!=0) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 24 页 - - - - - - - - - s=s*10+(*p-0); p+; s=s*t; return s; int main() char s6; long n; gets(s); n = fun(s); printf(%dn,n); return 0; 7.7
39、二维数组按列优先存放请编写函数fun, 函数的功能是: 将 M 行 N 列的二维数组中的字符数据, 按列的顺序依次放到一个字符串中。例如 , 二维数组中的数据为: W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSHWSH。#include #define M 3 #define N 4 void fun(char sN, char *b) int a,c; *b=s00; for(a=0;a4;a+) for(c=0;c3;c+) *b=sca;b+; *b=0; int main() char a100,wMN=W,W,W,W,S,S,S,S,H,H,
40、H,H; fun(w,a); puts(a); return 0; #include #define M 3 #define N 4 void fun(char sN, char *b) int a,c; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 24 页 - - - - - - - - - *b=s00; for(a=0;a4;a+) for(c=0;c3;c+) *b=sca;b+; *b=0; int main() char a100,wMN=W,W,W,W
41、,S,S,S,S,H,H,H,H; fun(w,a); puts(a); return 0; 9.2 素数的判断请编写函数fun,其功能是判断一个整数n 是否为素数,如果是素数,则返回1,否则返回 0。#include int fun(int n) int j; for(j=2;jn;j+) if(n%j=0) return 0; break; if(j=n) return 1; int main() int a; scanf(%d,&a); if(fun(a) printf(Primen); else printf(Non Primen); 9.3 求级数请编写函数fun,它的功能是计算下列
42、级数和,值由函数值返回。如,当 n=10,x=0.3 时,函数值为1.349859。#include double fun(double x,int n) int i,j; double s=1,k,l; for(i=1;i=n;i+) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 24 页 - - - - - - - - - k=1; l=1; for(j=1;j=i;j+) k=k*x; l=l*j; s=(k/l)+s; return s; int main()
43、 double x; int n; scanf(%lf%d,&x,&n); printf(%lfn,fun(x,n); 9.4 求大于 m 且紧靠 m 的 k 个素数请编写一个函数, 其功能是:将大于整数m 且紧靠 m 的 k 个素数存入xx 所指的数组例如,若输入17 5,则应输出19 23 29 31 37 #include int fun(int m,int k,int xx) int i,j,n=0; for(i=m+1;i+) for(j=2;j=k) break; return xxn; int main() int m,n,zz1000; scanf(%d%d,&m,&n); f
44、un(m,n,zz); for(m=0;mn;m+) printf(%6d,zzm); printf(n); return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 24 页 - - - - - - - - - 9.5 删除指定字符请编写函数fun,其功能是:从字符串中删除指定的字符。同一字母的大、小写按照不同的字符处#include #include int fun(char s,char c) int i,j=0,n; char a80; n=strle
45、n(s); for(i=0;i=n;i+) if(si!=c) aj=si; j+; else continue; strcpy(s,a); return si; int main() char str80; char ch; gets(str); scanf(%c,&ch); fun(str,ch); printf(%sn,str); return 0; #include #include int fun(char s,char c) int i,j=0,n; char a80; n=strlen(s); for(i=0;i=n;i+) if(si!=c) aj=si; j+; else c
46、ontinue; strcpy(s,a); return si; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 24 页 - - - - - - - - - int main() char str80; char ch; gets(str); scanf(%c,&ch); fun(str,ch); printf(%sn,str); return 0; 9.6 杀鸡用牛刀学习递归喽求整数n 到 m 区间的累加和,其中n=m。输入:区间的起始点n 区间的终止点m 输出:累
47、加和要求:使用递归算法完成。#include int main() int n,m,i,s=0; scanf(%d%d,&n,&m); for(i=n;i=m;i+) s=s+i; printf(%dn,s); return 0; 9.7 求最大公约数递归请使用递归算法计算正整数n 和 m 的最大公约数GCD(n,m) 。输入: n 和 m 输出: n 和 m 的最大公约数#include int GCD(int n,int m) int i; if(m=n&n%m=0) i=m; else if(nm) i=GCD(m,n); else i=GCD(m,n%m); return i; 名师资
48、料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 24 页 - - - - - - - - - int main() int m,n,a; scanf(%d,&m); scanf(%d,&n); a=GCD(n,m); printf(%dn,a); return 0; 9.8 求数列的第N 项已知整数数列第一项和第二项是1,该数列从第三项开始,如果该项是奇数项,则它是前两项之和,如果该项是偶数项,则它是前两项之差,即:f( n ) = 1 当 n = 1 或 2 时,f( n
49、) = f( n-1 ) - f( n-2 ) 当 n 是偶数时,f( n ) = f( n-1 ) + f( n-2 ) 当 n 是奇数时,编写一个递归函数,求数列的第N 项。#include int f(int n) if(n=1|n=2) return 1; if(n2&n%2=0) return f(n-1)-f(n-2); if(n2&n%2!=0) return f(n-1)+f(n-2); int main() int n; scanf(%d,&n); printf(%dn,f(n); return 0; 9.9 偶数分解编写程序,输入若干个大于2 的正整数,如果是偶数,则将其分
50、解为两个素数并输出;如果输入的奇数,则输出“is odd number!” ;输入为0 时程序结束。只有1 和它本身这两个因数的自然数叫做素数,0 和 1 既不是素数也不是和数。实现分解的过程用函数实现。输入整数序列,0 输出偶数1 = 素数 A + 素数 B (当输入是偶数时)奇数 1 is odd number! (当输入是奇数时)#include int f(int n) int i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 24 页 - - - - -