编程题
1.编写程序,求两个整数的最大公约数。(1级)
#include<stdio.h>
main()
{
int a,b,temp,r;
scanf("%d,%d",&a,&b);
if(a<b)
{
temp= a;
a= b;
b= temp;
}
r=a%b;
while(r>0)
{
b=r;
a=b;
r=a%b;
}
printf("最大公约数为%d\n",b);
return 0;
}
2.把输入的整数(最多不超过5位)按输入顺序的反方向输出,例如,输入数是12345,要求输出结果是54321,编程实现此功能。(1级)
#include<stdio.h>
main()
{
long int x,z,m;
inty,i=0;
scanf("%ld",&x);
m=x;
while(m>0)
{
y=m%10;
m=m/10;
i=i+1;
}
if(i==1)
{
z=x;
printf("%d",z);
}
if(i==2)
{
z=10*(x%10)+x/10;
printf("%d",z);
}
if(i==3)
{
z=100*(x%10)+10*(x%100/10)+x/100;
printf("%d",z);
}
if(i==4)
{
z=1000*(x%10)+100*(x%1000%100/10)+10*(x%1000/100)+x/1000; printf("%d",z);
}
if(i==5)
{
z=10000*(x%10)+1000*(x%10000%1000%100/10)+100*(x%10000%1000/100)+10*(x%10000/1000)+x/10000;
printf("%d",z);
}
return 0;
}
或者
#include<stdio.h>
main()
{
longa,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出万位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出个位*/
if(a!=0)
printf("%ld%ld%ld%ld%ld\n",e,d,c,b,a);
elseif (b!=0)
printf("%ld%ld%ld%ld\n",e,d,c,b);
elseif (c!=0)
printf("%ld%ld%ld\n",e,d,c);
elseif (d!=0)
printf("%ld%ld\n",e,d);
elseif (e!=0)
printf("%ld\n",e);
return0;
}
3.中国古代数学家张丘建提出的“百鸡问题”:一只大公鸡值五个钱,一只母鸡值三个钱,三个小鸡值一个钱。现在有100个钱,要买100只鸡,是否可以?若可以,给出一个解,要求三种鸡都有。请写出求解该问题的程序。(1级)
#include<stdio.h>
main()
{
intx,y,z;
for(x=1;x<20;x++)
{
for(y=1;y<33;y++)
{
for(z=1;z<300;z++)
{
if((x+y+z==100)&&(5*x+3*y+z/3==100)&&(z%3==0)) printf("x=%d,y=%d,z=%d\n",x,y,z);
}
}
}
return0;
}
4.求100~200 间的全部素数。(1 级) |
#include<stdio.h>
main()
{
inti,j;
for(i=100;i<=200;i++)
{
for(j=2;j<i;j++)
{
if(i%j!=0)
printf("%d\t",i);
break;
}
}
return0;
}
5.整元换零钱问题。把1元兑换成1分,2分,5分的硬币,共有多少种不同换法,请编写求解此问题的程序。(1级)
#include<stdio.h>
main()
{
inti,j,k;
for(i=0;i<=100;i++)
{
for(j=0;j<=50;j++)
{
for(k=0;k<=20;k++)
{
if(i+2*j+5*k==100)
printf("一分%d,两分%d,五分%d\n",i,j,k);
}
}
}
return0;
}
6.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,...,编写程序求这个数列的前20项之和。(1级)
#include<stdio.h>
main()
{
inti,j,t;
float term1,term2,term,sum;
sum=0;
term1=2;
term2=1;
for(i=1;i<=20;i++)
{
sum=sum+term1/term2;
t=term1;
term1=term1+term2;
term2=t;
}
printf("%f\n",sum);
return0;
}
7.编写程序,利用公式e=1+1/1!+1/2!+1/3!+....+1/n!求出e的近似值,其中n的值由用户输入(用于控制精确度)。(1级)
#include<stdio.h>
main()
{
inti;
floate,term1,term;
e=0;
term=1;
for(i=1;i<=10;i++)
{
term1=1/term;
e=e+term1;
term=term*i;
}
printf("e=%f",e);
return0;
}
8..一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6就是完全数,请编写一程序,求出1000以内的整数中的所有完全数。其中1000(2级)由用户输入。
#include<stdio.h>
main()
{
inti,j,x,sum;
for(i=2;i<1000;i++)
{
sum=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
sum=sum+j;
}
}
if(sum==i)
printf("%d\t",i);
}
return0;
}
9.编一程序,将2000年到3000年中的所有闰年份输出并统计出闰年的总年数,要求每10个闰年放在一行输出。(1级)
#include<stdio.h>
main()
{
inti,counter=0;
for(i=2000;i<=3000;i++)
{
if((i%400==0)||(i%4==0&&i%100!=0))
{
counter++;
printf("%d\t",i);
}
}
printf("\n%d\n",counter);
return0;
}
10.请编写一程序,打印出九九乘法口诀表(例:1*1=1)。(1级)#include<stdio.h>
main()
{
inti,j,k;
for(i=1;i<=9;i++)
{
for(j=1;j<=9;j++)
{
k=i*j;
printf("%4d",k);
}
printf("\n");
}
return0;
}
11.请编写一程序,将所有“水仙花数”打印出来,并打印出其总数。“水仙花数”是一个其各位数的立方和等于该整数的三位数。(04~05第二学期试题)
#include<stdio.h>
#include<math.h>
int main()
{
int i,x,y,z,counter=0;
for(i=100;i<=999;i++)
{
x=i/100;
y=i%100/10;
z=i%10;
if(x*x*x+y*y*y+z*z*z==i)
{
printf("%d\t",i);
counter++;
}
}
printf("\n%d\n",counter);
return0;
}
12.编写一程序,求1-3+5-7+.........-99+101的值。(1级)
#include<stdio.h>
#include<math.h>
int main()
{
int i,sum=0;
for(i=1;i<=51;i++)
{
sum=sum+(pow(-1,i-1))*(2*i-1);
}
printf("%d\n",sum);
return0;
}
13.编写程序,计算1!+2!+3!+.......+n!的值,其中n的值由用户输入。(1级)#include<stdio.h>
main()
{
int i,n,sum=0,term=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+term;
term=term*(i+1);
}
printf("%d\n",sum);
return0;
}
14.求sn=a+aa+aaa+aaaa+......+aa.....a的值,其中a是一个数字,例如:2+22+222+2222+22222(此时n=5)。n和a的值由键盘输入,请编程实现以上和过程。(1级) #include<stdio.h>
main()
{
int n,i,a,term=0,sum=0;
scanf("%d,%d",&n,&a);
for(i=1;i<=5;i++)
{
sum=sum+(10*term+a);
term=10*term+a;
}
printf("%d\n",sum);
return0;
}
15.编写程序,用迭代法求x=√a的近似根。求平方根的迭代公式为:Xn+1=(Xn+a/Xn)/2。要求前后两次求出的x的差的绝对值小于0.00001。(1级)
16.一个求从100米高度自由落下,每次落地后又反弹回原来高度的一半,再落下,求它在第10次落地时共经过多少米?第10次反弹多高?编写程序求解该问题。(1级)
#include<stdio.h>
main()
{
float sn=100.0,hn=sn/2;
int n;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;
hn=hn/2;
}
printf("thetotal of road is %f\n",sn);
printf("thetenth is %f meter\n",hn);
return0;
}
17.若有如下公式:
2 | | 1 | | 1 | | | 1 | | | 1 | |
6 | | 1 2 | + | 2 | 2 | + | 3 | 2 | +。。。。。。。+ | n | 2 |
试根据上述公式编程计算 | 的近似值 |
(精确到10-6)。(03 试题) |
#include<stdio.h>
#include<math.h>
main()
{
int i,n;
float pi,term1,term,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
term=i*i;
term1=(float)1/term;
sum=sum+term1;
}
pi=sqrt(6*sum);
printf("%f",pi);
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容