天津理工大学C语言上机题库 .doc
1.键盘上输入n个数,输出最大值最小值#include<stdio.h>void main()int array50;int i,n;printf("please input numbers , input '0' to stopn");for(i=0;i<n;i+)scanf("%d",&arrayi);for(i=0;i<n;i+)if(array0>=arrayi+1)array0=arrayi+1;printf("the min number is %dn",array0);for(n=0;n<=i-2;n+)if(array0<=arrayi+1)array0=arrayi+1;printf("the max number is %dn",array0);2.求一个3位数abc使得a的阶乘+b的阶乘+c的阶乘=abc#include<stdio.h>void main()int jiecheng(int a);int a,b,c;for(a=1;a<=9;a+)for(b=1;b<=9;b+)for(c=1;c<=9;c+)if(jiecheng(a)+jiecheng(b)+jiecheng(c)=a*100+b*10+c)printf("a is %d,b is %d ,c is %d n",a,b,c);int jiecheng(int a)int i,s=1;for(i=1;i<=a;i+)s=s*i;return s;/输出145 3.题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。#include<stdio.h>void main() int i; float m=1,n=1,t,s=0; for(i=1;i<=20;i+) /*就是进行二十次循环,求个和*/ t=m+n; s=s+t/n; m=n; n=t; printf("%9.6fn",s); 4.输入整数N,求N的阶乘#include<stdio.h>void main()int i,j=1,n;scanf("%d",&n);for(i=1;i<=n;i+) j=j*i;printf("%dn",j);/*注意在实际打的时候,i,j要定义为float型,其初值比都是1*/5.输入一串正整数,倒序输出#include<stdio.h>void main()int a10,i;for(i=0;i<=9;i+)scanf("%d",&ai);for(i=9;i>=0;i-)printf("%dn",ai);6. 求101000之间所有数字之和为5的整数的个数 #include<stdio.h>int main() int i; int counter=0; for(i=100; i<1000; +i) if(i/100+(i/10)%10 + i%10 = 5) +counter; printf("%dn",counter); return 0;7. 输入字符串打印除小写,元音,字母之外的。用数组#include<stdio.h>void main()int i,j;char s20; /*字符串长度(实际上是字符总数)不超过20*/for(i=0;i<20;i+) /*从s0开始,逐个字符输*/scanf("%c",&si);for(j=0;j<20;j+)if(sj!='a'&&sj!='e'&&sj!='i'&&sj!='o'&&sj!='u')printf("%c",sj); /*不换行,各字符在一行输出*/8. 从键盘输入10个整数,计算其中偶数的和以及偶数平均数,(用小数表示)#include<stdio.h> void main() int a10; int i,s=0; float m; for(i=0;i<=9;i+) scanf("%d",&ai); if(ai%2=0)printf("%d%dn",ai,i);s=s+ai;m=(float)(s)/10;printf("%d%fn",s,m);9. 从键盘输入10个整数,计算其中奇数之和以及奇数的平均数,(用小数表示)#include<stdio.h>void main()int a10,i,sum=0;float m;for(i=0;i<=9;i+)scanf("%d",&ai); if(ai%2!=0) sum=sum+ai;m=(float)(sum)/10;printf("%fn",m);10. 循环语句求Sn=a+aa+aaa+aaaa(n个a)的值其中a是一个数字n由键盘输入#include <stdio.h>main() double n1,x,t,t1;int cx,i; scanf("%lf,%d",&n1,&cx); t=n1; t1=n1; for(i=1;i<cx;i+) t=t*10+n1; t1+=t; printf("%0.0lf",t1); 11.求1!+2!+3!+n!(当 n=10时 得)#include<stdio.h>void main()int i,j=1,n,sum=0;scanf("%d",&n);for(i=1;i<=n;i+)j=j*i; sum=sum+j;printf("%dn",sum);12.1*1+2*2+.+n*n<=1000的最大数n#include<stdio.h>#include<math.h>void main()int i,j=1,k,sum=0;for(i=1;sum<=1000;j+)i=j*j;sum=sum+i;k=sqrt(i)-1;printf("%dn",k);13. 01000同时被7和13整除的数#include<stdio.h>void main()int n;for(n=1;n<=1000;n+)if(n%7=0&&n%13=0)printf("%dn",n);14.1/1+1/2+1/3+1/20#include<stdio.h>void main()int i,j=1,n;float sum=0; n=1+2*(20-1);for(i=1;i<=n;)sum=sum+j/(float)(i); /*变i或变j都一样,运算后自然向高级靠拢,不能都变!*/i=i+2;printf("%fn",sum);15.sum=1-1/3+1/5-1/7+1/n (1/n<0.0001)#include<stdio.h>#include<math.h>void main()int i,j=1;float k=1,sum=0;for(i=1;fabs(float)(j)/i)>1e-4;)sum=sum+(float)(j)/i;if(i>0)i=i+2;i=-i;elsei=i-2;i=-i;printf("%fn",sum);16.求e用e=1+1/1!+1/2!+1/n!(1/n!<10的-6次方)#include<stdio.h>void main()int i,j=1,n=1;float sum=1;for(i=1;(float)(i)/n)>1e-6;j+)n=n*j;sum=sum+(float)(i)/n;printf("%fn",sum);17.用4约等于1-1/3+1/5-1/7+直到某一项的绝对值小于10的-6次方为止#include<stdio.h>#include<math.h>void main()float j=1,pi=0,n=1.0; /*pi就是*/int i=1;while(fabs(j)>1e-6) /*最后一项绝对值大于10的-6次方,用到了数学函数*/pi=pi+j;i=-i;n=n+2;j=i/n;pi=pi*4;printf("%10.6fn",pi); /*规定长为十位,有六位小数*/18输出110的阶乘,分行打出#include<stdio.h>void main()int i,j=1;for(i=1;i<=10;i+)j=j*i;printf("%dn",j); 19.输入正数,判断是否是素数#include<stdio.h>void main()int i,m;scanf("%d",&m);for(i=2;i<=m;i+)if(m%i=0)break; /*这句话很关键*/if(i<m)printf("%d不是一个素数",m);elseprintf("%d是一个素数",m);20.1+(1+2)+(1+2+3)+(1+2+n)输入n=20,得1540#include<stdio.h>void main()int i,n,temp=0,sum=0; scanf("%d",&n);for(i=1;i<=n;i+)temp=temp+i;sum=sum+temp;printf("%dn",sum);21.输入年月,输出该月有多少天。#include<stdio.h>void main() int a,c; scanf("%d,%d",&a,&c);if(a%4=0)&&(a%100!=0)|(a%400=0)if(c=2)printf("29n");elseif(c=2)printf("28n"); switch(c) case 1: case 3: case 5: case 7: case 8: case 10: case 12:printf("%dn",31);break; case 4: case 6: case 9: case 11:printf("%dn",30);break;22. 编一个计算器,可以计算“+”“-”“*”“/”#include <stdio.h>void main() float a,b; char f; scanf("%f",&a); f=getchar(); scanf("%f",&b); switch(f) case'+':printf("a+b=%f",a+b);break;case'-':printf("a-b=%f",a-b);break;case'*':printf("a*b=%f",a*b);break;case'/':printf("a/b=%f",a/b);break;default:printf("input error!n"); 23.求555555的约数中最大的3位数:777#include<stdio.h>void main()long j=555555;int i;for(i=999;i>=100;i-)if(j%i=0)printf("%dn",i);break;24. 韩信点兵:士兵5人一行,末行一人;6人一行,末行5人;7人一行,末行4人,11人一行,末行10人。求士兵人数11:2111#include<stdio.h>void main()int i;for(i=11;i<=3000;i+)if(i%5=1&&i%6=5&&i%7=4&&i%11=10)printf("%dn",i);25. 爱因斯坦阶梯问题(119)#include<stdio.h>void main()int i;for(i=1;i<=200;i+)if(i%2=1&&i%3=2&&i%5=4&&i%6=5&&i%7=0)printf("%dn",i);26.输入m,n求其最小公倍数#include<stdio.h>void main()int m,n,max,min,i;printf("请输入两个数(逗号隔开):");scanf("%d,%d",&m,&n);if(m>n)i=m;m=n;n=i;for(i=m;i>0;i-)if(m%i=0 && n%i=0)max=i;min=m*n/max;break;printf("这两个数的最小公倍数是%dn",min); 27输入m,n求其最大公约数#include<stdio.h>void main()int m,n,max,i;printf("请输入两个数(逗号隔开):");scanf("%d,%d",&m,&n);if(m>n)i=m;m=n;n=i;for(i=m;i>0;i-)if(m%i=0 && n%i=0)max=i;break;printf("这两个数的最大公约数是%dn",max); 1.输入两个正整数,m和n,求其最大公约数和最小公倍数。#include<stdio.h>void main()int m,n,max,min,i;printf("请输入两个数(逗号隔开):");scanf("%d,%d",&m,&n);if(m>n)i=m;m=n;n=i;for(i=m;i>0;i-)if(m%i=0 && n%i=0)max=i;min=m*n/max;break;printf("这两个数的最大公约数是%d,最小公倍数是%dn",max,min); 28输入一行字符,分别统计出其中字母、空格、数字和其他字符的个数。#include<stdio.h>void main()char c;int letters=0,space=0,digit=0,other=0;printf("请输入一行字符:n");while(c=getchar()!='n')if(c>='a'&&c<='z'|c>='A'&&c<='Z')letters+;else if(c=' ')space+;else if(c>='0'&&c<='9')digit+;elseother+;printf("字母数:%dn 空格数:%dn 数字数:%dn 其他字符数:%dn",letters,space,digit,other);29. 输入十个数,将其排序#include<stdio.h>void main() int i,j,k,a10; printf("Please input 10 numbers:"); for(i=0;i<10;i+) scanf("%d",&ai); for(j=0;j<9;j+) for(i=0;i<9-j;i+) if(ai>ai+1) k=ai; ai=ai+1; ai+1=k; for(i=0;i<10;i+) printf("%dn",ai);30. 输出100200之间的素数#include<stdio.h>int judge(int a) int j=1,i; for(i=2;i<=a-1;i+) if(a%i=0) j=0; return(j);void main() int b,c; printf("The prime numbers in 100200 are:n"); for(b=0;b<10;b+) for(c=0;c<10;c+) if(judge(100+10*b+c) printf("%d ",100+10*b+c); 31.由36块砖,男人一次可以搬4块,女人一次可以搬3块,2个小孩一次可以搬一块,问男人女人小孩各需多少人可以一次性将砖搬完。(key :man3 woman 3 child 30)#include<stdio.h>void main() int a,b,c,d; for(a=0;a<=9;a+) for(b=0;b<=12;b+) for(c=0;c<=72;c+) if(4*a+3*b+0.5*c=36&&a+b+c=36) printf("It need %d mennIt need %d womennIt need %d childrenn",a,b,c); 计算100元可以分成几个一元,两元,五元相加的总和(可以只由一种面值组成)#include<stdio.h>void main() int a,b,c,d=0; for(a=0;a<=100;a+) for(b=0;b<=50;b+) for(c=0;c<=20;c+) if(a+2*b+5*c=100) d+; printf("There are %d kinds of possible",d);