历年C语言上机真题_第1页
历年C语言上机真题_第2页
历年C语言上机真题_第3页
历年C语言上机真题_第4页
历年C语言上机真题_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、改错题1、下列程序功能是,从键盘输入一个字符串,统计其中大写字母个数m和小写字母个数n,并且输出m,n中的较大者。#include stdio.h#include string.hmain( )char s80; int i,k,m=0,n=0; gets(s); i=1; /*$ERROR1$*/ k=strlen(s); while(i=A&si=a&sim) /*$ERROR3$*/ printf(max=%dn, m); else printf(max=%dn, n);2、以下程序的功能是求两个整数的最大公约数。main()int m,n,r,t; printf(Input two

2、 number, please!n); scanf(%d,%d,&m,&n); if(mn) /*$ERROR1$*/ t=m;m=n;n=t; r=m%n; while(r= =0) /*$ERROR2$*/ m=n; n=r; r=m%n; printf(gcd=%Dn,n); /*$ERROR3$*/ 3、以下程序的功能:输出数组中的最大元素及其下标值。main()int a10=(0,-3,9,2,5,4,8,7,6,1); /*$ERROR1$*/int t,max,i;max=a0;t=1; /*$ERROR2$*/i=1;while(i=10) /*$ERROR3$*/ if (

3、maxai) max=ai; t=i; i+;printf(MAX=%d,ADDRESS=%d,max,t);4、以下程序通过指针操作,输入整数给数组并对数组进行逆序输出。#include main()int a10,*p; for(p=a;pa;p-) /*$ERROR2$*/ printf(%d,p); /*$ERROR3$*/5、随机输入10个数,选出其中的最大数。main()int i,max,a10; printf(input 10 number:n); i=0; while(i=10) /*$ERROR1$*/ scanf(%d,ai); /*$ERROR2$*/ i+; max=

4、a0; for(i=1;ia0) /*$ERROR3$*/ max=ai; printf(max num=%dn,max); 6、输出以下图形(*之间没有空格,每行第一个*前也没有空格)*main()int i,j; i=1; /*$ERROR1$*/ while(i4) j=0; while(j0) j=1; while(j=i) printf(*);j+; printf(n); i+; /*$ERROR3$*/ 7、利用循环语句求:1/3-2/5+3/7-4/9+n/(2n-1)d的值。(本题求前50项之和)main()int i=1; float s; s=0; while(i50) /

5、*$ERROR1$*/ if(i%2=0) /*$ERROR2$*/ s=s+1.0*i/(2*i+1); else s=s-1.0*i/(2*i+1); i+; printf(S=%d,s); /*$ERROR3$*/8、输出以下图形(输出数字之间无空格,每行第一个数字前也没有空格)123345456756789main() int i,j; i=1; while(i5) /*$ERROR1$*/ for(j=i;j2*i;j+) printf(%f,j); /*$ERROR2$*/ printf(n); i-; /*$ERROR3$*/ 9、利用循环语句求:(本题求前20项的和)S=1/(

6、1*2*3)-1/(2*3*4)+1/(3*4*5)-.+1/(19*20*21)-1/(20*21*22)main()int i;float s; /*$ERROR1$*/i=1;while(i20) /*$ERROR2$*/ if(i%2=0) /*$ERROR3$*/ s=s+1.0/(i*(i+1)*(i+2); else s=s-1.0/(i*(i+1)*(i+2); i+; printf(%fn,s);10、以下程序的功能是:定义mean函数求num个数的平均值,在主函数中调用mean函数求15个数的平均值,并输出结果。#includefloat mean(int x,int nu

7、m) /*$ERROR1$*/int i; float avg; for(avg=0,i=0;inum;i+) avg+=xi; avg%=num; /*$ERROR2$*/ return(avg); main() int i,a15;float avg; for(i=0;i15;i+) ai=i+3; avg=mean(a0,15); /*$ERROR3$*/ printf(average:%6.2fn, avg); 11、以下程序是定义长度为81的数组用于存放字符串,判断输入的字符串是否是“回文”(即顺读和倒读都一样,例如:ABCBA,首部和尾部的空格不参与比较。)#include#inc

8、ludemain()char s81;/*$ERROR1$*/ int i,j,n; scanf(%s,s); n=strlen(s); i=0; j=n-1; /*$ERROR2$*/ while(si= ) i+; while(sj= ) j-; while(ij & si=sj) /*$ERROR3$*/ i+;j-; if(ij) printf(Non); else printf(Yesn); 12、下面程序的功能是从主函数中输入一个正整数n,并通过调用fac函数,求得n的阶乘,在主函数中输出n!的值,请修改程序中的错误。#includelong fac(int n) int i;lo

9、ng s; s=1; /*$ERROR1$*/ i=1; while(i=n) /*$ERROR2$*/ s=s*i; i+; return s; main()int n;printf(Enter n:);scanf(%d,&n); /*$ERROR3$*/printf(s=%ldn,fac(n);13、将数组中的数按从大到小排序后输出(输出时每个数占5列)main()int a10=23,90,-45,60,100,62,78,-89,-50,0; int i,j,temp; for (i=0;i9;i+) for(j=0;j9-i;j+) if (ajaj+1) /*$ERROR1$*/

10、temp= aj; aj= aj+1; aj+1=temp; /*$ERROR2$*/ for(i=0;i=9;i+) printf(%5d,ai); /*$ERROR3$*/14、不用strcat函数,将键盘输入的两个字符串连接起来形成一个新串(将第二个串连接到第一个串的后面)#includemain()char s160,s230; int i=0,j=0; printf(Enter two string :n); scanf(%s%s,s1,s2); /*$ERROR1$*/ for(i=0;s1i!=0;i+); /*$ERROR2$*/ while(s2j=0) /*$ERROR3$

11、*/ s1i=s2j; i+;j+; s1i=0; printf(n New string:%sn,s1);15、以下程序判断输入的字符串是否是“回文”(即顺读和倒读都一样。例如:ABCBA,字符串首部和尾部的空格不参与比较)。#include#includemain()char s81; int i,j,n; gets(s); n=strlen(s); i=0; /*$ERROR1$*/ j=n-1; while(si= ) i+; while(sj= ) j-; while(ij&si=sj) /*$ERROR2$*/ i+;j-; if(Ij) /*$ERROR3$*/ printf(N

12、on); else printf(Yesn); 二、填空题1、下列程序输出200-300之间的全部素数的和,请填空。 #include main()int i,j,f,s; s=0; /*$BLANK1$*/ for(i=201;i300;i+=2) f=1; for(j=2;j=I-1)s+=i; /*$BLANK3$*/ printf(s=%dn,s);2、 从键盘输入10个数存入数组a中,统计数组下标是奇数且数组元素值为偶数的元素个数。#include main()int a10,i,s; s=0; /*$BLANK1$*/ for(i=0;I10;i+) /*$BLANK2$*/ sc

13、anf(%d,&ai); if(i%2=1&ai%2=0) /*$BLANK3$*/ s+; printf(%dn,s);3、 完善程序,使5*5数组的主对角线元素为1,其它元素为0。main()int j,k,a55; for(j=0;j5;j+) for(k=0;k5;k+) if( k=j ) /*$BLANK1$*/ ajk=1; /*$BLANK2$*/ else ajk=0; /*$BLANK3$*/ for (j=0;j5;j+) for(k=0;k=0&ch=9) /*$BLANK2$*/ s+; ch=getchar();/*$BLANK3$*/ printf(%dn, s)

14、;5、以下程序中,主函数中调用colummin函数,实现在N行M列的二维数组中找出每一列上的最小值。#define N 3#define M 4void colummin(int xNM)int i,j,p;for (j=0;jM;j+)p=0;for(i=1;ixij) p=i; /*$BLANK1$*/printf(The min in colum %d is %dn,j,xpj); /*$BLANK2$*/main()int xNM=1,5,7,4,2,6,4,3,8,2,3,1;colummin(x);/*$BLANK3$*/6、下列程序实现从键盘接受3个数,输出最大数和最小数,完善程

15、序。程序如下:#includemain()int a,b,c,*pmax,*pmin;printf(input three numbers:n);scanf(%d%d%d,&a,&b,&c);if(ab) pmax=&a;pmin=&b;else pmax=&b;pmin=&a;if(c*pmax) pmax=&c; /*$BLANK1$*/else if(c*pmin) pmin=&c; /*$BLANK2$*/printf(max=%d,min=%dn,*pmax,*pmin); /*$BLANK3$*/7、以下程序的功能是:统计用0-9之间不同的三个数字构成一个三位数有多少种方法,如:1

16、23,345,182等,请填空main()int i,j,k,count;count=0; /*$BLANK1$*/for(i=1;i=9;i+) for(j=0;j=9;j+) if(I=j) continue; /*$BLANK2$*/ else for (k=0;k=9;k+) if(k!=I&k!=j) count+; /*$BLANK3$*/printf(%d,count);8、求级数s=1*1+2*2+3*3+4*4+n*n,求前n项之和小于50000时的最大的n的值#include main()int i,n,s;s=0; /*$BLANK1$*/i=1;while(s=5000

17、0) s+=I*i; /*$BLANK2$*/ i=i+1; n=I-1; /*$BLANK3$*/printf(n=%d,n);9、输出以下图形(数字之间没有空格,每行第一个数字前也没有空格)#include main()int i,j; for(i=-3;i=3;i+) j=1; while(j=abs(i) /*$BLANK1$*/ printf(0);j+; j=1; while(j=7-2*abs(i) /*$BLANK2$*/ printf(1);j+; j=1; while(j=abs(i) /*$BLANK3$*/ printf(0);j+; printf(n); 10、以下程

18、序的功能是求两个整数的最大公约数,在主函数中输入2个数。main() int m,n,r,t; printf(Input two number, please!n); scanf(%d,%d,&m,&n); if(m0) r=m%n; m=n; n=r; /*$BLANK2$*/ printf(gcd=%dn,m); /*$BLANK3$*/11、以下程序输入一行字符(以回车结束输入),然后将其中所有字符b换成字符f。#include#includemain( )char s80; int i; gets(s); I=0; /*$BLANK1$*/ while(si!=0) /*$BLANK2

19、$*/ if(si= b) si=f; I+; /*$BLANK3$*/ printf(%sn, s);12、下列程序实现从键盘接收3个数,输出最大数和最小数,完善程序。#includemain()int a,b,c,*pmax,*pmin;printf(input three numbers:n);scanf(%d%d%d,&a,&b,&c);if(ab) pmax=&a;pmin=&b;else pmax=&b;pmin=&a;if(c*pmax) pmax=_; /*$BLANK1$*/else if(c*pmin) pmin=_; /*$BLANK2$*/printf(max=%d,m

20、in=%dn,_); /*$BLANK3$*/13、从键盘接收20个整数,统计其中正数的个数以及所有正数之和。#include main()int i,a20,count; long sun=0; for(i=0;i20;i+) scanf(%d,&ai); /*$BLANK1$*/ count=0; /*$BLANK2$*/ for(i=0;i0) sun+=ai; count+; /*$BLANK3$*/ printf(%d,%ld,count,sun);14、以下程序对学生的记录数据统计不及格的人数并输出不及格学生的信息,请填空。(num域代表学号,name域代表姓名,scroe域代表成

21、绩)struct stu int num; char name12; float score;main( )struct stu stud5= 101,Li ping,45, /*$BLANK1$*/ 102,Zhang ping,62.5, 103,He fang,92.5, 104,Cheng ling,87, 105,Wang ming,58 ; int i,n=0; printf(numtnametscoren); i=0; while(i5) if(studi.score60) /*$BLANK2$*/ printf(%dt%st%.2fn,studi.num,,

22、studi.score); n+; /*$BLANK3$*/ i+; printf(n=%dn,n);三、编程题 1、程序设计:利用下面公式求S的值;s=1/(1*2*3)-1/(2*3*4)+1/(3*4*5)-1/(4*5*6)+1/(19*20*21)-1/(20*21*21)#include PRINT(float s)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,s=%f,s); fclose(out);main()float s;PRINT(s);2、一个自然数除以2余1,除以3余2,除以4余3,除以5余4,

23、除以7余5,求满足这个条件的最小的自然数。输出格式:n=23#include PRINT(int n)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,n=%d,n); fclose(out);main()int n;PRINT(n);3、编写程序,计算500到1300之间所有既能被7整除又能被13整除的自然数之和。输出格式:26。#include PRINT(int s)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,%d,s); fclose(out

24、);main()PRINT(s);4、 输出100-300之间的全部素数的和。#include PRINT(int s)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,s=%d,s); fclose(out);main()PRINT(s);5、编写程序,计算s=1+1/(1*2)+1/(1*2*3)+1/(1*2*3*4)+.+1/(1*2*3*n)的值。说明:本题以n=10为例。输出格式:s =1.#include PRINT(float s)FILE *out; if(out=fopen(C:RESULT.TXT,w+

25、)!=NULL) fprintf(out,s=%f,s); fclose(out);main()float s;PRINT(s);6、求所有的“水仙花数”之和。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。例如“153”是一个“水仙花数”,因为153=1*1*1+5*5*5+3*3*3。输出格式23456#include PRINT(int s)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,%d,s); fclose(out);main()PRINT(s);7、在大于500的素数中,输出前5个素数的和输

26、出格式:s=23516#include PRINT(int s)FILE *out; if(out=fopen(K:RESULT.TXT,w+)!=NULL) fprintf(out,s=%d,s); fclose(out);main()int s=0; PRINT(s);8、有两个小于40的正整数a和b,a的平方与b的和是1053,b的平方与a的和是873,请编程求满足条件的a和b的值。(提示:满足条件的a,b的值唯一)输出格式:a=3,b=4#include PRINT(int a,int b)FILE *out; if(out=fopen(K:RESULT.TXT,w+)!=NULL)

27、fprintf(out,a=%d,b=%d,a,b); fclose(out);main()int a,b;PRINT(a,b);9、根据下列公式,计算A30的值。(必需使用循环)A1=1,A2=1,A3=3/(A2+A1),A4=4/(A3+A2),.A30=30/(A29+A28)输出格式:A30=7.#include PRINT(float f)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,A30=%f,f); fclose(out);main()PRINT(s);10、计算200到700之间所有能被11整除的奇数之和。#include PRINT(int s)FILE *out; if(out=fopen(C:RESULT.TXT,w+)!=NULL) fprintf(out,%d,s); fclose(out);main()PRINT(s);11、搬砖总题。36人搬家6块砖,男人1 人搬3块砖,女人1人搬2块,小孩3人搬1块。男人、女人、小孩都必须有,问各有几人?(男人、女人、小孩数量均不得为0,答案是唯一的。)输入格式:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论