




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言上机编程题总结 石寅斌 第一部分 前十次上机题汇总1. 一个较大的偶数可分解为两个质数之和。编程要求:(1)编写函数int guess(int a3,int m,int n),其功能是将m,n内任一偶数i分解成两个质数k和j之和(得到验证即可,如果有多个答案,只取一个),将i,j,k依次写到a指向的二维数组一行中的三个元素中,函数返回实际写入二维数组中的行数;(2)编写main函数,定义一个行数为100列数为3的二维数组a,用a作为实在参数,调用guess函数求出6,20内偶数的分解情况,并按行的形式输出a数组中的元素。#include#includeint prime(int p)int g,h; h=sqrt(p);for(g=2;gh) return 1;int guess(int a3,int m,int n) int i,k,j,p=0; for(i=m;i=n;i+=2) for(k=3;k=i/2;k+=2) if(prime(k) j=i-k;if(prime(j) ap0=i; ap1=k; ap2=j;p+;break; void main() int i,j,a1003; guess(a,6,20); for(i=0;i8;i+) for(j=0;j3;j+) printf(%3d,aij); printf(n); getch();2.请按下列要求编程:(1)请编写函数int fun(int a),其功能是:在三位数(100至999)中寻找符合下列条件的整数并按从小到大的顺序存入a指向的数组中,条件为:它是一个完全平方数,且有两位数字相同(例如144、676是满足条件的数),函数返回满足条件的该类数的个数。(2)编写main函数,定义一个长度为100的整型数组a,用a作为实在参数调用函数fun,将满足条件的依次存入a数组中,输出在给定范围内满足条件的数及这类数的个数#include#includeint fun(int a) int i,d,b,c,m,sum=0,p=0;for(i=101;i=1&i=m*m)sum+;ap=i;p+;return sum;main()int a100,t,i;t=fun(a);printf(%dn,t);for(i=0;ai!=0;i+)printf(%3dn,ai);getch();3.设n0是一个给定的正整数。对于i=0,1,2,定义:若ni是偶数,则ni+1=ni/2;若ni是奇数,则ni+1=3ni+1;若ni是1,则序列结束。用这种方法产生的数称为冰雹数。请按下列要求编程:(1)编写一个函数int hailstones(int n,int a),其功能是将按公式生成的从n到1为止的序列中的数依次存放到a指向的数组中,函数返回符合条件的序列中数据的个数;(2) 编写main函数,定义一个长度为100的一维数组a,从键盘上输入任一种子n,用n和a作为实在参数调用函数hailstones,最后按每行6个数输出数组中的数。#includeint hailstones(int n,int a) int p=0,sum=0;while(n!=1) ap=n;if(n%2=0)n=n/2;else n=3*n+1;sum+;p+; ap=1;return sum+1;void main()int a100,n,t,i,m=0;scanf(%d,&n);t=hailstones(n,a);printf(%dn,t);for(i=0;ai!=0;i+)printf(%5d,ai);m+;if(m%6=0) printf(n);getch();4.找出满足如下条件的整数m:(1)该数在11,999之内;(2) m、m2、m3均为回文数。例如m=11,m2=121,m3=1331,11、121、1331皆为回文数,故m=11是满足条件的一个数。请按下列要求编程:(1)请编写函数int plalindrome (long a3,int m,int n),其功能是将m,n内符合条件的数i,i2,i3依次写到a指向的二维数组的一行中,函数返回满足条件数的个数(即为所写二维数组的有效行数);(2) 编写main函数,声明一个行数为100列数为3的二维数组a,从键盘上输入区间m,n的端点值,用a、m和n作为实在参数调用函数plalindrome,并按行的形式输出所有满足条件的数及其平方数和立方数。#includeint value(long m) long t=0,b;int a;b=m;while(m)a=m%10;m=m/10;t=t*10+a;if(t=b)return 1;elsereturn 0;int plalindrome(long a3,int m,int n)long i,sum=0;for(i=m;i=n;i+)if(value(i)+value(i*i)+value(i*i*i)=3)asum0=i;asum1=i*i;asum2=i*i*i;sum+; return sum;main()int t,i,j;long a1003;t=plalindrome(a,11,999);printf(%d,t);for(i=0;it;i+)for(j=0;j3;j+)printf(%8ld,aij);printf(n);getch();5.请按下列要求编程:(1)编写函数int primecount(int a,int m,int n),其功能是:找出m,n内的所有质数并依次将它们存储到a指向的数组中,函数返回m,n内质数的个数。(2)编写main函数,声明一个长度为100的一维数组a,从键盘上输入m和n,用a、m、n作为实在参数调用函数primecount,将结果数组输出到屏幕,并输出m,n内质数的个数。调试程序时可在main函数中输入m、n的值分别为100和200。#include#includeint primecount(int a,int m,int n)int i,g,sum=0,p=0;for(i=m;i=n;i+)for(g=2;gsqrt(i)sum+;ap=i;p+;return sum;main()int m,n,t,i,a100;scanf(%d %d,&m,&n);t=primecount(a,m,n);printf(%dn,t);for(i=0;ai!=0;i+)printf(%5d,ai);getch();6. 已知整型数组中的元素值在09范围内,编程统计每个整数的个数。#include#includevoid getdata(int *s) int i;for(i=0;i50;i+)si=rand()%10;void stat(int *a,int *c) int i;for(i=0;i50;i+)cai+=1;main()int i,a50,c10=0;getdata(a);stat(a,c);for(i=0;i10;i+)printf( c%d=%2dn,i,ci);getch(); 7.下列程序的功能是将字符串中的数字字符删除后输出。#includevoid delnum(char s80)int i,j;for(i=0,j=0;si!=0;i+)if(si9) sj=si,j+;sj=0;void main()char item80;gets(item);delnum(item);puts(item);getch(); 8将一字符串做压缩处理。函数int compress(char s)的功能是将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数,返回被删除的字符个数。#includeint compress(char s)int i,j,sum=0,n=0; for(i=j=0;si;i+) while(si=si+1) i+;n+; sum+=n;n=0; sj+=si; sj=0; return sum; main()int n;char str100;gets(str);n=compress(str);printf(%d %sn,n,str);getch();9.编写函数void fun(char x),其功能是在x指向的字符串中所有的数字字符之前分别插入一个字符$。#includevoid fun(char x)int i,j;char b40;for(i=0,j=0;xi!=0;i+,j+)if(xi=0&xi=9) bj=$;j+;bj=xi;bj+1=0;puts(b);main()char a100;gets(a);fun(a);getch();10.在m行n列的二维数组找出最小的元素,然后将该元素所在行与最后一行交换,将该元素所在列与最后一列交换。#include#define M 3#define N 4main()int x,k,j,com,col,t;int aMN=12,1,56,34,10,2,45,3,9,7,4,65;for(k=0;kM;k+) for(j=0;jN;j+) printf(%3d,akj); printf(n);printf(n);x=a00;com=0;col=0;for(k=0;kM;k+)for(j=0;jakj)com=k;col=j;x=akj;for(k=0;kM;k+) t=akcol;akcol=akN-1;akN-1=t;for(k=0;kN;k+) t=acomk;acomk=aM-1k;aM-1k=t;for(k=0;kM;k+) for(j=0;jN;j+) printf(%3d,akj); printf(n); getch();11.打印杨辉三角形。#includevoid main()int i,j;int a66;for(i=0;i6;i+)ai0=1 ;aii=1;for(i=2;i6;i+) for(j=1;j=i-1;j+) aij=(ai-1j-1+ai-1j);for(i=0;i6;i+)for(j=0;j=i;j+)printf(%3d,aij);printf(n);getch();12.编写函数void find odd(int odd,int n),其功能是找到n个连续奇数,满足n的立方等于这些连续奇数之和。并将这些奇数存放到数组odd中。#includestdio.hvoid find_odd(int odd,int n) int b; odd0=n*n-n+1; for (b=1;bn;b+) oddb=oddb-1+2; main() int n,i; int a100; scanf(%d,&n); find_odd(a,n); printf(%d,n); printf(3=); for (i=0;i n-1;i+) printf(%d,ai ); printf(+); printf(%d,an-1); getch(); 13.调用selsort函数实现将数组中的38个元素案升序排列。#includevoid selsort(int a,int n)int i,j,k,t;for(i=2;in-3;i+) k=i; for(j=i+1;jaj) k=j; t=ai; ai=ak; ak=t; void main()int a10=6,8,9,12,16,-3,90,-9,10,1,i;selsort(a,10);for(i=0;i10;i+)printf(%5d,ai);getch();14.归并排序。#includevoid main() int a10=1,2,5,8,9,10,an=5;int b10=1,3,4,8,12,18,bn=5;int i,j,k,c20,max=9999;aan+1=bbn+1=max;i=j=k=0;while(ai!=max)|(bj!=max)if(aibj) ck=ai;k+;i+;elseck=aj;k+;j+;for(i=0;ik;i+)printf(%4d,ci);printf(n);getch();15.用二分法求f(x)=lnx+x2在(1/e,1)内的近似根。#include #include float f(float x) return (log(x)+x*x); void main() float m=1/2.72,n=1,r; r=(m+n)/2.0; while(1) if(fabs(f(r)1e-5) break; if(f(m)*f(r)0) n=r; else m=r; r=(m+n)/2.0; printf(The result is %6.3fn,r); getch();16.如1,1,2,3,5,8,13,21、的数列,设计程序输出大于n的最小的数,如n=9,应输出13.#includeint Fibonacci(int n) int f1=1,f2=1,f3,m; f3=f1+f2;while(f3n)f1=f2;f2=f3;f3=f2+f1;m=f3;return(m);void main () int t,m; scanf(%d,&t); m=Fibonacci(t); printf(%d,m); getch();17,利用公式求pai的值。#include double fun(double e) int i,k; double s, t, x; s=0; k=1; i=2; x=3.0/4; while(xe ) s=s+k*x; k=-k; t=2*i; x=(2*i+1)/(t*t); i+; return (s);main() double e=(1e-3); printf(nThe result is: %lfn,fun(e); getch(); 第二部分 改编题1. 编写函数,统计给定字符串中各个字母出现的次数,不区分大小写。比如对hello,Tom 进行统计。void count_chars(char s,int cnt) int i; for(i=0;si!=0;i+) if(si=a&si=A&si=Z) cntsi-A+; main() char s=hello,Tom; int cnts26=0; int i; count_chars(s,cnts); for(i=0;i26;i+) printf(字母%c(或者%c)的出现次数为%dn,a+i,i+a-32,cntsi); 注:类似的问题还有统计09每个数字出现的次数;50个人对食堂饭菜的打分,如1,2,3,4分,统计四种分数出现的次数。以上三种问题都是一种类型的 都要用到a表达式+这个重要式子。请同学们复习时把上面两道也编程出来。2.删除类题目 删除字符串中的所有空格。 int i=0;char *p=str; while(*p) if(*p!= ) stri+=*p;p+; stri=0 从字符串中删除指定的字符。 Int i=0;char *p=s; while(*p)if(*p!=c) si+=*p;p+; si=0; 删除一个字符串中指定下标的字符。 Int I,j=0; for(i=0;iLEN;i+) if(i!=n) bj+=ai;bj=0; 将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。 Int I,j=0,n=strlen(s); for(i=0;in;i+) if(si%2!=0) tj+=si; tj=0注:这类题目大同小异,希望同学们对比着学习。编程的时候只是穿插着其他几个函数,只要做到条理清晰,就会“战无不胜”。3.在1到2000000寻找如145这样每位数字的阶乘之和等于本身的数。#includefac(int m) long t=1; int i;for(i=0,i=m;i+)t=t*i; return t; facsum(long n) long x,t=0;while(n) t=fac(n%10)+t;n/=10; if(x=t) return 1;else return 0;main()long i;for(i=1;i2000000;i+)if(facsum(i)printf(%12ld,i)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年锅炉操作工(高级)职业技能培训考试题库(附答案)
- 2025年广西自然资源职业技术学院单招职业技能测试题库有答案
- 2025年广西玉林市公安辅警招聘知识考试题(含答案)
- 大学生液压考试题及答案
- 媒体广告投放合同协议说明
- 商业咨询服务与咨询合同协议
- 幼师职格考试题型及答案
- 智能柜台考试题库及答案
- 新安全法考试题库及答案
- 人际交往能力笔试题目及答案
- 职业健康检查质量管理工作手册
- 2025年网络安全检查整改报告
- 《透视画法基础:艺术绘画基础课程教案》
- 社会治安综合治理中心规范化建设推进会
- 全套设备安装施工记录表
- 闪电仓管理制度
- 2025-2030中国AI芯片行业研发创新与未来发展预测分析研究报告
- 湖南信息职业技术学院2025年单独招生考试文化素质测试考试大纲
- 胃癌精准治疗
- T-CPI 11037-2024 石油天然气钻采设备水力振荡器技术与应用规范
- 中级审计理论与实务知识导图
评论
0/150
提交评论