版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、.1. 编写函数long fun(long x),它的功能是:将长整型参数x中每一位上为偶数的数依次取出,构成一个新数返回。高位仍在高位,低位仍在低位。例如:下面程序运行时输入:124578902,程序输出:24802. #include<stdio.h>long fun(long x)long i,m,sum=0; int j=0,n; for(i=x;i>0;)m=i%10; i=i/10; if(m%2=0)j+; for(n=1;n<j;n+) m=m*10; sum+=m; return sum;void main()long a,b; printf(&quo
2、t;Enter a number:");scanf("%ld",&a);b=fun(a);printf("b=%ldn",b);2. 编写函数void fun(int k,int *p),功能是:将参数k(2k32767)所有的不相同质因子升序写入p所指的一维数组中,以-1作为所有质因子的结束标志。例如:下面程序运行时若输入200,输出:2 5;若输入27720,输出:2 3 5 7 11;若输入101,输出101。#include<stdio.h>#include<math.h>void fun(int k,i
3、nt *p)int i,j,t=0;double b; for(i=2;i<=k;i+) 先判断是不是质数,在判断是不是因子。b=sqrt(i); for(j=2;j<=b;j+) if(i%j=0)break; if(j>b&&k%i=0) pt=i; t+; pt=-1; void main()int x,a17=0,i;do printf("Enter a number(2-32767):");scanf("%d",&x);while(x<2);fun(x,a);for(i=0;ai!=-1;i+)p
4、rintf("%d ",ai);printf("n");3. 编写函数void fun(int *x,int n),功能是:求出长度为n的数组x中的最大数与次最大数,并把最大数和a0对调,次最大数与a1对调,其余的数保持不变。下面程序运行时若输入:2 4 6 1 3 9 7 0 5 8,则输出:9 8 6 1 3 2 7 0 5 4。#include<stdio.h>#define N 10void fun(int *x,int n)int i,j,k,t; for(i=0;i<2;i+) k=i; for(j=i+1;j<n;j
5、+) 采用打擂台法,找到最大数的下标。 if(xj>xk)k=j; t=xk; xk=xi; xi=t; void main()int aN,i;for(i=0;i<N;i+)scanf("%d",a+i);fun(a,N);for(i=0;i<N;i+)printf("%d ",ai);printf("n");4. 数组x中保存有n个整数, 编写函数int fun(int *x,int n,float *w),对数组x进行如下操作:从第0个元素起对每5个元素求一个平均埴,并将这些均值依次存放在w所指的数组中。函数返
6、回平均值的个数。例如:若输入n为14,14个数据为:11 21 35 24 55 16 27 58 18 0 11 12 13 14,则只为前10个求均值,输出结果为:29.20 23.80#include<stdio.h>int fun(int *x,int n,float *w)int num=n/5; 注意每个数的类型, int temp=0;int i;for(i=0;i<num;+i)temp=5*i;wi=(float)(xtemp+xtemp+1+xtemp+2+xtemp+3+xtemp+4)/5;return num;void main()int a30,i
7、,n,m;float b6;printf("Input a number: ");scanf("%d ",&n);for(i=0;i<n;i+)scanf("%d",&ai); m=fun(a,n,b); for(i=0;i<m;i+)printf("%0.2f ",bi); printf("n");5. 编写函数int fun(int x,long int y),功能:计算满足表达式x0+x1+x2+.+xn<y的最大的n并作为函数返回值带回。例如,当x=2,
8、y=1000时,程序输出8。#include<stdio.h>int fun(int x,long int y)int i; long sum=0,k=1; for(i=0;sum<y;i+) 注意每次执行完程序其指数为多少。即i与指数的关系。 sum+=k; k=k*x; return i-2;void main()int x;long y;scanf("%d%ld",&x,&y);printf("n=%dn",fun(x,y);6. 编写函数int fun(char (*ss)N,int m,char *s),功能是
9、:形参ss指向一个m行N列的二维字符数组,每行存放一个字符串。求出最长的字符串,复制到s所指的字符数组中,然后返回此最长字符串的长度。#include<stdio.h>#include<string.h>#define N 30int fun(char (*ss)N,int m,char *s) int i,j,t=0,x; for(j=0;j<m;j+)for(i=0;ssji!=0;i+);if(i>t) x=j;t=i;for(i=0;i<t;i+)si=ssxi;si='0'return(t);void main()char a
10、8N,bN;int i,len;for(i=0;i<8;i+)gets(ai);len=fun(a,8,b);printf("len=%d,str=%sn",len,b);7. 编写函数int countw(char *str),统计字符串str中单词的个数。单词之间以空格,逗号,句号作分隔,数字也看做单词。单词之间可能不止一个分隔符。如输入: It's 10:10 o'clock ,I am late.屏幕上输出"There are 6 words." #include<stdio.h>int countw(char
11、*str) int w=0,i,k=0; for(i=0;stri!='0'i+) if(stri=' '|stri=','|stri='.') w=0; 前面一个是 或,或。且后面一个为 字母或数字就可以说明有一个单词。Else if(w=0) w=1; k+; return k;void main()char s200;gets(s);printf("There are %d words.n",countw(s);8. 编写函数void fun(char *str),功能:字符串str中单词以空格作分隔,如
12、果单词之间不止一个空格,则删除多余的空格,使单词之间只保留一个空格。字符串开始的空格也只保留一个。例如,程序运行时若输入: It's 10:10 o'clock , I am late. 输出: It's 10:10 o'clock , I am late.#include<stdio.h>void fun(char *str)int i,t; for(i=0;stri!='0'i+) if(stri=' '&&stri+1=' ') for(t=i+1;strt!='0'
13、;t+) 发现两个空格则将后面的前移,前移后注意i后退一strt=strt+1; 位。strt+1='0' i-; void main()char s100;puts("Enter a string:");gets(s);fun(s);puts(s);9. 函数void fun(int x,int k,int *p)的功能是:求出比x大的最初k(k<1000)个素数,放入p所指数组中。例如:程序运行时输入:10 10,输出:11 13 17 19 23 29 31 37 41 43 #include<stdio.h>#include<
14、math.h>void fun(int x,int k,int *p) int t=0; long i,j; double m;if(x>=1) for(i=x+1;t<k;i+) m=sqrt(i); for(j=2;j<=m;j+) if(i%j=0)break; if(j>m) pt=i; t+; else for(i=2;t<k;i+) m=sqrt(i); for(j=2;j<=m;j+) if(i%j=0)break; if(j>m) pt=i;t+; void main()int a,b,n1000,i;scanf("%d
15、%d",&a,&b);fun(a,b,n);for(i=0;i<b;i+)printf("%d ",ni);puts("");10. 编写函数int fun(int a,int b),在a,b范围内统计满足下面条件的数的个数。条件:该数是素数,且该数逆序后形成的数也是素数。例如,在100,150范围内101 107 113 131 149 满足条件,则下面程序运行时输入100 150,输出:num=5。#include<math.h>#include<stdio.h>int fun(int a,in
16、t b)int i,j,c,k=0,w,n,sum;double m,d;for(i=a;i<=b;i+) m=sqrt(i); 判断原数是不是质数for(j=2;j<=m;j+) if(i%j=0)break; if(j>m) for(w=i,sum=0;w>0;) 倒序c=w%10; sum=10*sum+c; w=w/10; d=sqrt(sum); 倒序后是不是质数for(n=2;n<=d;n+) if(sum%n=0)break; if(n>d)k+; return k; void main()int num,a,b;scanf("%d%
17、d",&a,&b);num=fun(a,b);printf("num=%dn",num);11. 编写函数void fun(char *s),功能:在s所指字符串中每两个字母之间加一个*,其余字符保持不变。例如,下面程序运行时,若输入:I had 123_book. 输出:I h*a*d 123_b*o*o*k.#include<stdio.h>#include<string.h>void fun(char *s)int i,j,L;L=strlen(s);for(i=1;i<L;i+)if ( (si >=
18、39;a' && si <='z' | si >='A' && si <='Z' ) &&(si-1 >='a' && si-1 <='z' | si-1 >='A' && si-1 <='Z' ) for(j=L;j>=i;j-)sj+1=sj; si='*'L+; void main()char x80;gets(x);fun(x
19、);puts(x);12. 编写函数int fun(int k),功能:从5个红球, 6个白球,7个黑球中任意取出k(2k18)个球作为一组进行组合。在每组中,可以没有红球和白球,但必须要有黑球。不同组合的数目作为函数值返回。例如,若k为8时,正确的组合数是31;若k为2时,正确的组合数是3;或k为3时,正确的组合数是6 。#include<stdio.h>int fun(int k)int red,white,black; int sum=0,temp;for(black=1;black<=7;black+) for(white=0;white<=6;white+)
20、for(red=0;red<=5;red+) temp=black+white+red; if(temp=k)sum+; return sum;void main()int x,n; scanf("%d",&x); n=fun(x); printf("n=%dn",n);13. 编写函数void fun(char *str),功能:对形参str所指字符串中的字符按ASCII码升序排序。例如,下面程序运行时输入:The C Programming Language<回车> 输出: CLPTaaaeegggghimmnnorru#i
21、nclude<stdio.h>void fun(char *str) int i,j,k=0; char c; 也可以采用冒泡法进行排序。 for(i=0;stri!='0'i+) k=i; 这里用的是换位法排序。 for(j=i+1;strj!='0'j+) if(strj<strk)k=j; if(k!=i) c=stri; stri=strk; strk=c; void main()char s100;gets(s);fun(s);puts(s);14. 请编写函数void fun(int *a, int n, int y),它的功能是:
22、把y值插入到有n个数的a数组中,a数组中的数已按由大到小的次序排好,y的值从键盘读入。 插入后,数组中的数仍然有序。对照下面三种情况运行程序: 1) 插在最前2) 插在最后 3) 插在中间 若输入数11, 输出 20 18 16 14 12 11 10 8 6 4 2 输入数1, 输出 20 18 16 14 12 10 8 6 4 2 1 输入数33, 输出 33 20 18 16 14 12 10 8 6 4 2 #include <stdio.h>void fun(int *a,int n,int y) int i,j,t; an=y; 将要插入的数放到最后,然后整体用冒泡法
23、排序。 for(i=0;i<n+1;i+) for(j=0;j<n-i;j+) if(aj<aj+1) t=aj;aj=aj+1;aj+1=t; void main()int i,a11=20,18,16,14,12,10,8,6,4,2,x;void fun(int *,int n,int y);scanf("%d",&x);fun(a,10,x);for(i=0;i<11;i+)printf("%d ",*(a+i);15. 编写函数int fun(char *s1,char *s2),在字符串s1中统计字符串s2出现
24、的次数并返回。若s2在s1中未出现,则返回0。例如:若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find#include<string.h>#include<stdio.h>int fun(char *s1,char *s2) int i,j,m=0,n=0; for(i=0;i<strlen(s1);i+) for(j=0;j<strlen(s2);j+) if(s1i+j!=s2j) m=1; i+j是为了再
25、返回原来的起点。 if(m=0) n+; m=0; 每使用完一次m要将其归0. return n;void main() char a80,b40; int n; printf("Please input the first string:"); gets(a); printf("Please input the second string:"); gets(b); n=fun(a,b); if(n=0)printf("No find %sn",b); else printf("%s,n=%dn",b,n); 16
26、. 编写函数int fun(char *str),功能是:统计字符串str中不同字符的个数并做为函数值返回。例如,下面程序运行时若输入:One world,One dream! 输出:n=13#include<stdio.h>int fun(char *str)int i,j,k=0; for(i=0;stri;i+) for(j=0;j<i;j+) 采用嵌套循环,将每一个数和它前面的if(stri=strj)break; 进行比较,如果没有重复则加一。if(j>=i)k+; return k;void main()char s80;int n;gets(s);n=fu
27、n(s);printf("n=%dn",n);17. 编写函数int fun(int m,int n,int *p),要求将范围m,n之间所有的fibonacci数写入p所指的一维数组中,fibonacci数的个数通过函数返回值带回。例如,0,30之间的fibonacci数有7个,它们是:1 2 3 5 8 13 21 ;1000,32767之间有7个,它们是:1597 2584 6765 10946 17711 28657 。#include<stdio.h>int fun(int m,int n,int *p) int t,num=0; long f,f1=
28、1,f2=1; if(m>n)t=m;m=n;n=t; for(f=1,t=0;f<=n;) if(f>=m) pt=f;t+;num+; f1=f2; f2=f ; f=f1+f2; return num; void main()int a,b,n,c22,i;scanf("%d%d",&a,&b);n=fun(a,b,c);for(i=0;i<n;i+)printf("%6d",ci);printf("nn=%dn",n);18. 编写函数char *fun(char *s1,char *s
29、2,int n),将字符串s1中后面的n个字符复制到s2所指数组中,若s1不足n个字符,则用*在前端补齐至n个字符,写入s2中。函数返回字符串s2的指针。例如,下面程序运行时,若输入:“abcd1234”和6,则输出“cd1234” 若输入:“abcd1234”和10,则输出“*abcd1234”#include<stdio.h>#include<string.h>char *fun(char *s1,char *s2,int n) int i,k; k=strlen(s1); if(n<k) for(i=0;i<k;i+) s1i=s1i+k-n; if(
30、i>=n)s1i='0' strcpy(s2,s1); if(n=k)strcpy(s2,s1); if(n>k) for(i=n-1;i>=0;i-) s1i=s1i-n+k; if(i<=n-k-1) s1i='*' s1n='0' strcpy(s2,s1); return s2;void main()char c180,c280;int n;gets(c1);scanf("%d",&n);fun(c1,c2,n);puts(c2);19. 编写函数void fun(char *s,cha
31、r *b,char *c),逐个比较a、b两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存放到c数组中,形成一个新的字符串。例如,若a中的字符串为aBCDeFgH,b中的字符串为:ABcd,则c中的字符串应为:aBcdeFgH。#include<stdio.h>#include<string.h>void fun(char *a,char *b,char *c)int i,l,m,k=0; if(strlen(a)>strlen(b) l=strlen(a);m=strlen(b);else m=strlen(a);l=strlen(b);k=1;f
32、or(i=0;i<m;i+) if(ai>=bi) ci=ai;elseci=bi;if(k=0) for(;i<l;i+) ci=ai;else for(;i<l;i+) ci=bi;ci='0'void main()char s180,s280,s380;gets(s1);gets(s2);fun(s1,s2,s3);puts(s3);20. 编写函数void fun(char *s),将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符原有的前后次序。例如,若输入:num is 0532-66ouc78,OK. 执行结果
33、为:num is -ouc,OK.05326678#include<stdio.h>#include<string.h>void swap(char *a,char *b)char temp;temp=*a;*a=*b;*b=temp;void fun(char *s) char i; int n;int num,m=0,o=0;num=strlen(s);for (i=0;si!='0'i+) if (si>='0') && (si<='9') m+; for (i=0;si!='0&
34、#39;i+) if (si>='0') && (si<='9') o+; if(o>m) break; for (n=i;n+1<num;n+) swap(&sn,&sn+1); i-; void main()char a80;gets(a);fun(a);puts(a);选做1:编写函数int fun(char *str,char ch),统计字符串str中指定字符ch的个数,统计结果作为函数返回值带回。#include<stdio.h>#include<string.h>int
35、 fun(char *str,char ch)int i=0,k,j; k=strlen(str); for(j=0;j<k;j+) if(ch=strj)i+; return(i);void main()char a100,b;puts("Please input a string:");gets(a);puts("Please input a character:");b=getchar();printf("n=%dn",fun(a,b);选做2 编写函数float fun(int m),功能是:根据正整型形参m,计算如下公
36、式的值:y=1-1/2+1/3-1/4+1/5.+(-)1/m ,该值作为函数返回值。 #include <stdio.h> #include<math.h> float fun(int m) float s=0; int i=1; for(i=1;i<m+1;i+) s+=1.0/i*pow(-1,i+1);if(i = 1)printf("1");continue;if (i%2 = 0)printf("-1/%d",i);elseprintf("+1/%d",i); printf("=%f
37、n",s); void main() int x; scanf("%d",&x); fun(x); 选做3. 编写函数 int fun(int (*p)N,int m),功能:计算m行N列的二维数组外 围各数据之和。例如,下面程序输出:57 #include<stdio.h> #define N 5 int fun(int (*p)N,int m) int s=0,i; for(i=0;i<m;i+) s=s+p0i; s=s+pm-1i; for(i=1;i<m-1;i+) s=s+pi0; s=s+pm-1i; return(s
38、); void main() int a4N=3,2,5,4,2,6,2,3,9,1,4,6,1,8,6,7,6,5,4,2;printf("sum=%dn",fun(a,4); 选做4. 编写函数 int fun(float *p,int n) ,功能:统计有n个数据的一维数组p中大于平均值的数组元素个数。例如,若输入:3 5 6 1 2 8 9 6 输出:n=4 #include<stdio.h> int fun(float *p,int n) int i,s=0,j=0; float a; for(i=0;i<n;i+) s=s+pi; a=s/n;
39、 for(i=0;i<n;i+) if(pi>a) j+; return(j); void main() float a8;int n,i; for(i=0;i<8;i+)scanf("%f",&ai); n=fun(a,8); printf("n=%dn",n); 选做5.编写函数 float fun(float *p,int n) ,功能:计算有n个数据的一维数组p 的平均值并返回。例如,若输入:3 5 6 1 2 8 9 6 输出: average=5.00 注:部分程序代码在 d:学号T2.C 文件中,请启动TC程序完成本题。#include <stdio.h>float fun(float *p, int n)int i;float sum = 0;for (i = 0;i < n;i+)sum+=pi;r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026葡萄干行业技术工人流失问题与技能培训体系重构报告
- 2026葡萄产业碳排放测算及低碳转型路径研究报告
- 2026痛风生物制药市场发展趋势及投资风险评估报告
- 2026中国光刻胶专利壁垒突破与自主知识产权战略
- 2026低轨卫星通信发展动态与全球市场布局研究报告
- 2026钙钛矿光伏组件户外耐久性测试与实际发电衰减报告
- 2026金属矿产行业市场深度调研及发展趋势和前景预测研究报告
- 2026-2030冰鞋行业市场深度分析及发展策略研究报告
- 2026航空航天领域特种电缆技术要求与国产化突破
- 2026中国血液制品供需缺口与产能扩张规划研究报告
- 20265G毫米波频段商业化应用场景与基站建设成本测算
- 小学三年级劳动素养融合课《立体贺卡》教案
- 员工调动管理制度
- 护理教师教学资源整合课件下载
- 广西金之宝年产5万吨环保提金剂建设项目环境影响报告书
- 建筑工程技术课程
- 周围神经调控技术治疗慢性疼痛的专家共识
- 农业田间试验协议书
- 《油气管道无人机智能巡检系统技术管理规范》
- 2026版《三维设计》高三一轮复习物理课时跟踪检测部分参考答案
- 《公路运营领域重大事故隐患判定标准》知识培训
评论
0/150
提交评论