ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:21.49KB ,
资源ID:26979518      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/26979518.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言上机考试题.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言上机考试题.docx

1、C语言上机考试题1、从键盘输入10个整数,用冒泡法对这10个数排序(由小到大)后输出.p172 2、从键盘输入10个整数,用选择法对这10个数排序(由大到小)后输出.p1553、对于一个自然数,如果该数的所有因子之和正好等于该数,则该数称为完数。统计1000以内的完数个数。#include int m,s,i; for(m=2;m1000;m+) s=0; for(i=1;im;i+) if(m%i)= =0)s=s+i; /*计算所有因子之和*/ if(s= =m) /*所有因子之和正好等于该数,则为完数*/ printf(%d,factors are,m); for(i=1;im;i+)

2、if(m%i= =0) printf(%d,i); printf(n); 4、编写主函数和一个函数int diff(int year, int m1, int d1, int m2, int d2)。(1)函数diff计算year年的m1月d1日至m2月d2日之间相隔的天数(假设m1=m2);(2)主函数中输入某年的两个日期,调用diff函数计算它们之间相隔的天数,并输出。#includeint days13=0,31,28,31,30,31,30,31,31,30,31,30,31;int diff(int year,int m1,int d1,int m2,int d2) int i,d=

3、0; if(year%4=0&year%100!=0|year%400=0) days2=29; else days2=28; if(m1=m2) d=d2-d1; else for(i=m1+1;im2;i+) d+=daysi+daysm1-d1+d2; return(d);void main() int year,m1,d1,m2,d2,ds; printf(please input two date:n); scanf(%d%d%d%d%d,&year,&m1,&d1,&m2,&d2); ds=diff(year,m1,d1,m2,d2); printf(The days of the

4、 year is %d!n ,ds); 5、编写主函数和一个函数void merge(int *a, int *b, int c)。要求是:(1)函数merge对两个已是升序的数组a、b进行归并,归并后的结果仍然是升序的,并通过形参c返回;(2)主函数:定义长度为5的数组a,并升序初始化;定义长度为8的数组b,并升序初始化;调用merge函数对数组a、b进行归并,输出归并结果。#include#define M 5#define N 8void mergesort(int x,int *y,int *z) int i=0,j=0,k=0; while(iM&jN) if(xiyj) zk+=x

5、i+; else zk+=yj+; while(iM) zk+=xi+; while(jN) zk+=yj+;void main() int aM=0,1,3,6,8,bN=2,9,7,12,15,21,22,25; int i,cM+N,*p=a; printf(The original array a:nt); for(i=0;iM;i+) printf(%d ,ai); printf(n); printf(The original array b:nt); for(i=0;iN;i+) printf(%d ,bi); printf(n); mergesort(p,&b0,c); prin

6、tf(The sorted array c:nt); for(i=0;iM+N;i+) printf(%d ,ci); printf(n);6、从键盘输入一个099999之间的整数。 判断它是一个几位数; 将该数的各位数字按逆序输出。#includevoid main() int count=0; long num; printf(please input a integer between 0 and 99999:n); scanf(%ld,&num); do printf(%d, ,num%10); num=num/10; count+; while(num%10!=0); printf(

7、n%dn,count);7、输入一行字符,统计其中有多少个单词并输出,单词之间用空格符分隔开。#includevoid main() int i=0,count=0; char string80; printf(please input a string:n); gets(string); while(stringi+!=0) if(stringi+= ) for(i+;stringi= ;i+); else count+; for(i+;stringi!=0&stringi!= ;i+); printf(there are %d words!n,count);8、输入10个整数,判断它们是否

8、为素数。要求:编写一个函数int prime(int m)来判断形参变量m是否为素数,如果是素数则返回1,否则返回0。#include#includeint prime(int m) int i,t,p; t=sqrt(m); for(i=2;it) p=1; return(p);void main() int a10,i,p; printf(please input 10 integers:n); for(i=0;i10;i+) scanf(%d,&ai); for(i=0;i10;i+) p=prime(ai); printf(%d ,p); 9、输入10个学生的成绩,求平均成绩。要求控制

9、成绩输入的正确性,即控制输入的成绩必须为0100分。#includevoid main() int score,i,sum=0,loop; for(i=1;i=0&score=100) loop=0; else printf(score error,please reinput ); sum+=score; printf(The average score is %.2f.n,(float)sum/10);10、编写主函数和一个函数int monthDay(int year, int month)。(1)函数monthDay计算year年month月的天数,并返回;(2)在主函数中输入一个日期

10、(年、月、日),计算该日是当年的第几天(说明:需要调用monthDay函数)。#includeint days13=0,31,28,31,30,31,30,31,31,30,31,30,31;int monthDay(int year,int month) int i,d=0; if(year%4=0&year%100!=0|year%400=0) days2=29; else days2=28; for(i=1;imonth;i+) d+=daysi; return(d);void main() int year,month,day,ds; printf(please input a dat

11、e:n); scanf(%d%d%d,&year,&month,&day); ds=monthDay(year,month); ds+=day; printf(The days of the year is %d!n ,ds); 11、写两个函数int gcd(int m, int n)和int lcm(int m, int n),分别求两个正整数m和n的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个正整数的值在主函数中从键盘输入。#include int maxfun(int m, int n) /求m和n的最大公约数的函数int t;do t=m%n; m=n; n=t;

12、 while (t!=0); return m;int minfun(int m, int n) /求m和n的最小公倍数的函数 int t; t=maxfun(m, n); return m*n/t;void main() int m, n; printf(please input two positive integers to m and n:n); scanf(%d%d, &m, &n); printf(%d和%d的最大公约数是%d, 最小公倍数是%dn, m, n, maxfun(m, n), minfun(m, n);12、有0、1、2、3、4五个数字,能组成多少个互不相同且无重复数

13、字的三位数?并计算这些三位数之和。#includevoid main() int i,j,k,count=0; for(i=1;i=4;i+) for(j=0;j5;j+) for(k=0;k5;k+) if(i!=j&i!=k&j!=k) printf(%dn,i*100+j*10+k); count+; if(count%5=0) printf(n); printf(nCount=%dn,count);13、输出2至1000之间的所有同构数,所谓同构数是指它出现在它的平方数的右端。例如,5、6、25的平方分别等于25、36、625,所以5、6和25都是同构数。#include void m

14、ain() long i, j, k; k=10; for (i=2; i=1000; i+) if (i=k) k*=10; j=i*i; if (j%k=i) printf(%ldt%ldn, i, j); 14、编写一个函数,将一个数插入到已是升序的数组中,且插入后该数组仍是升序数组。已是升序数组的内容由主函数给出,待插入的数在主函数中输入。#include#define N 10void insert(float a,float m) int i,j; for(i=0;iN-1;i+) if(mi;j-) aj=aj-1; ai=m;break;if(mai-1) ai=m; /*m比

15、数组中所有数据都大的话,插入到数据尾部*/for(i=0;iN;i+)printf( %f,ai);void main() float k,aN; int i; printf(请输入9个升序排好的数据:); for(i=0;i9;i+) scanf(%f,&ai); printf(请输入插入数据:); scanf(%f,&k); insert(a,k);15、编写一个程序,用折半法查找某数是否在给定的升序数组中,如果在则输出“Find success!”并输出它是第几个数,否则输出“No find!”。#include #define LEN 15int binarysearch(float

16、a,float number) int mid, start = 0, end = LEN - 1; while (start = end) mid = (start + end) / 2; if (amid number) /*往左继续折半查找 */ end = mid - 1; else /*找到了要查找的数,则返回其位置 */ return mid; return -1; /*查找失败,返回-1 */ void main(void) int i; float k; float aLEN ; printf(请输入15个以升序排好的数据:); for(i=0;i=0) printf(Find

17、 success! 位置为:%dn, binarysearch(a,k)+1); else printf(No find! );16、编写一函数int substr(char *str, int begin, int len, char *p),将字符串str的第begin个字符开始的len个字符复制到另一个字符串p中,并返回成功复制字符的个数。要求在主函数中输入原始字符串及截取字符串的起始位置和长度,并输出被截取的字符串及其长度。(这只是被调函数)int fun3(char substr, char str, int loc, int len) int k, n;if (locstrlen(

18、str) | len=0) substr0=0;return 0;for (k=0, n=loc-1; klen & strn!=0;)substrk+=strn+;substrk=0;return 1;17、有4个学生,每个学生有5门课程的成绩,编写一个程序计算每一个学生5门课程的平均成绩。#include void main() int a45,i,j; float aver,sum=0; printf(请输入四个学生五门课的成绩:n); for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(i=0;i4;i+) for(j=0;j5;j+)

19、sum+=aij; aver=sum/5; printf(t%.2fn,aver); 18、有4个学生,每个学生有5门课程的成绩,编写一个程序统计每一个学生有几门不及格的课程。#includevoid main() int a45,i,j, count; printf(请输入四个学生五门课的成绩:n); for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(i=0;i4;i+) count=0; for(j=0;j5;j+) if(aij60) count+; printf(第%d个学生的不及格数是%dn,i+1,count); 19、有4个学生,

20、每个学生有5门课程的成绩,编写一个程序计算每一门课程4个学生的平均成绩。#includevoid main() int a45,i,j; float sum,aver; printf(请输入四个学生五门课的成绩:n); for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(j=0;j5;j+) aver=0; sum=0; for(i=0;i4;i+) sum+=aij; aver=sum/4; printf(第%d门课的平均成绩是%.2fn,j+1,aver); 20、有4个学生,每个学生有5门课程的成绩,编写一个程序统计每一门课程有几个不及格的

21、学生。#includevoid main() int a45,i,j; int count; printf(请输入四个学生五门课的成绩:n); for(i=0;i4;i+) for(j=0;j5;j+) scanf(%d,&aij); for(j=0;j5;j+) count=0; for(i=0;i4;i+) if(aij60) count+; printf(第%d门课的不及格人数是%dn,j+1,count); 21、编写主函数和一个递归函数int sum(int a, int n)。要求是:(1)函数sum求数组a中前n个元素之和,并返回该和值。(2)主函数中输入10个正整数给数组,调用

22、sum函数求数组中的10个元素之和,并输出该和值。#includeint sum(int a,int n) int s; if(n=0) s=a0; else s=an+sum(a, n-1); return s; void main() int a10=3,1,2,4,5,7,6,8,12,24; int s=0; int i;/ for(i=0;i10;i+) s=sum(a, 9); printf(sum=%dn,s);22、编写主函数和一个递归函数int max(int a, int n)。要求是:(1)函数max求数组a中前n个元素中的最大值,并返回该最大值;(2)主函数中输入10个

23、正整数给数组,调用max函数求数组中10个元素的最大值,并输出该最大值。#includeint max(int a,int n) int p; if(n=1) return a0; else p=max(a,n-1); if(an-1=p) return an-1; else return p; void main() int a10,m,i; printf(please input 10 integers:n); for(i=0;i10;i+) scanf(%d,&ai); m=max(a,10); printf(The max number is %d.n,m);23、编写主函数和一个递归

24、函数int decomp(int n)。要求是:(1)函数decomp顺序输出n的各位数,并返回它是一个几位数;(2)主函数中输入一个不超过8位的正整数,调用decomp函数,并输出函数返回结果。如输入:851439;则输出: 8,5,1,4,3,96#includeint count=1;int decomp(int n) if(n=10) decomp(n/10); count+; printf(%d, ,n%10); return(count);void main() long num; int t; printf(请输入不超过八位的正整数:n); scanf(%ld,&num); t=

25、decomp(num); printf(n这是一个%d位数.n,t);24、搬砖问题:36块砖,36人搬,男人每人搬4块,女人每人搬3块,小孩两人抬一块,要求一次搬完,问男、女、小孩各需多少人。#includevoid main() int child, girl; for (child=0; child=36; child=child+2) / child表示小孩的数量 for (girl=0; girl=12; girl+) / girl表示女人的数量 if (child/2+3*girl+(36-child-girl)*4=36) / 36人共搬36块 printf(boy: %d, girl: %d, child: %dn, 36-child-girl, girl, child);某班有6名学生,期末考试有4门课程。请编写程序,对这6名学生的学号、姓名、4门课程的考试成绩和平均成绩进行管理。具体要求有:(1) 编写一个程序,输入这6名学生的学号(长度为5位字符)、姓名(长度不超过15位字符)及4门课程的考试成绩(整数),并计算该学生的平均成绩(实数),最后将这6名学生的成绩记录存入文件stud?.rec中,其中“?”为你的学号最后4位,例如,如果你的学号为0102586,则你建立的文件名为stud2586.rec。要求按下表中给定的数据输入!(2) 编写一个程序,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1