资源描述
(完整版)天津理工大学C语言上机题库
1.键盘上输入n个数,输出最大值最小值
#include〈stdio.h〉
void main()
{
int array[50];
int i,n;
printf(”please input numbers , input '0' to stop\n");
for(i=0;i<n;i++)
{
scanf(”%d”,&array[i]);
}
for(i=0;i〈n;i++)
if(array[0]>=array[i+1])
array[0]=array[i+1];
printf("the min number is %d\n",array[0]);
for(n=0;n<=i-2;n++)
if(array[0]〈=array[i+1])
array[0]=array[i+1];
printf("the max number is %d\n”,array[0]);
}
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。6f\n",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("%d\n”,j);
}
/*注意在实际打的时候,i,j要定义为float型,其初值比都是1*/
5。输入一串正整数,倒序输出
#include〈stdio。h〉
void main()
{
int a[10],i;
for(i=0;i〈=9;i++)
scanf("%d",&a[i]);
for(i=9;i>=0;i——)
printf(”%d\n”,a[i]);
}
6. 求10~1000之间所有数字之和为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("%d\n”,counter);
return 0;
}
7。 输入字符串打印除小写,元音,字母之外的。用数组
#include<stdio.h>
void main()
{
int i,j;
char s[20]; /*字符串长度(实际上是字符总数)不超过20*/
for(i=0;i〈20;i++) /*从s[0]开始,逐个字符输*/
scanf(”%c",&s[i]);
for(j=0;j〈20;j++)
{
if(s[j]!='a’&&s[j]!='e’&&s[j]!=’i'&&s[j]!='o'&&s[j]!=’u’)
printf("%c”,s[j]); /*不换行,各字符在一行输出*/
}
}
8. 从键盘输入10个整数,计算其中偶数的和以及偶数平均数,(用小数表示)
#include<stdio。h>
void main()
{
int a[10];
int i,s=0;
float m;
for(i=0;i〈=9;i++)
{
scanf("%d”,&a[i]);
if(a[i]%2==0)
{
printf("%d%d\n",a[i],i);
s=s+a[i];
m=(float)(s)/10;
}
}
printf("%d%f\n",s,m);
}
9。 从键盘输入10个整数,计算其中奇数之和以及奇数的平均数,(用小数表示)
#include<stdio.h〉
void main()
{
int a[10],i,sum=0;
float m;
for(i=0;i〈=9;i++)
{
scanf(”%d”,&a[i]);
if(a[i]%2!=0)
{
sum=sum+a[i];
m=(float)(sum)/10;
}
}
printf(”%f\n",m);
}
10。 循环语句求Sn=a+aa+aaa+…+aaa…a(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时 得4037913)
#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(”%d\n",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("%d\n",k);
}
13。 0~1000同时被7和13整除的数
#include〈stdio。h>
void main()
{
int n;
for(n=1;n〈=1000;n++)
{
if(n%7==0&&n%13==0)
printf(”%d\n”,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("%f\n",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;
}
else
{
i=i—2;
i=-i;
}
}
printf("%f\n”,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(”%f\n”,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.6f\n”,pi); /*规定长为十位,有六位小数*/
}
18.输出1~10的阶乘,分行打出
#include〈stdio。h〉
void main()
{
int i,j=1;
for(i=1;i〈=10;i++)
{
j=j*i;
printf(”%d\n”,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);
else
printf(”%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("%d\n”,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(”29\n");
}
else
{
if(c==2)
printf("28\n”);
}
switch(c)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:printf(”%d\n”,31);break;
case 4:
case 6:
case 9:
case 11:printf(”%d\n",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("%d\n",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("%d\n",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(”%d\n",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("这两个数的最小公倍数是%d\n",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(”这两个数的最大公约数是%d\n",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,最小公倍数是%d\n",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++;
else
other++;
}
printf(”字母数:%d\n 空格数:%d\n 数字数:%d\n 其他字符数:%d\n”,letters,space,digit,other);
}
29. 输入十个数,将其排序
#include〈stdio。h〉
void main()
{
int i,j,k,a[10];
printf("Please input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d”,&a[i]);
for(j=0;j〈9;j++)
for(i=0;i〈9—j;i++)
{
if(a[i]〉a[i+1])
{
k=a[i];
a[i]=a[i+1];
a[i+1]=k;
}
}
for(i=0;i〈10;i++)
printf(”%d\n",a[i]);
}
30。 输出100~200之间的素数
#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 100~200 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 men\nIt need %d women\nIt need %d children\n",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);
}
Word 资料
展开阅读全文