poj上交题.docx
《poj上交题.docx》由会员分享,可在线阅读,更多相关《poj上交题.docx(85页珍藏版)》请在冰豆网上搜索。
poj上交题
CH0408、请编写程序,用scanf输入圆半径r,圆柱高h,输出圆周长l,圆面积s,圆球表面积sq,圆球体积vq,圆柱体积vz。
#definePI3.141592
#include"stdio.h"
voidmain()
{
doubler,h,l,s,sq,vq,vz;
scanf("%lf%lf",&r,&h);
l=PI*r*2;
s=PI*r*r;
sq=4*PI*r*r;
vq=4.0/3*PI*r*r*r;
vz=PI*r*r*h;
printf("l=%.2f\n",l);
printf("s=%.2f\n",s);
printf("sq=%.2f\n",sq);
printf("vq=%.2f\n",vq);
printf("vz=%.2f\n",vz);
}
T0401、编写程序输入学生的数学,英语,和C语言的成绩,输出该学生这三门课的总成绩和平均成绩。
#include
voidmain()
{
doublemath,english,C,sum,aver;
scanf("%lf%lf%lf",&math,&english,&C);
sum=math+english+C;
aver=sum/3;
printf("sum=%f,aver=%f\n",sum,aver);
}
T0402、假设m是一个三位数,编写程序输出由m的个位,十位,百位反序而成的三位数。
#include
#include
voidmain()
{intnum,indiv,ten,hundred;
scanf("%d",&num);
hundred=num/100;
ten=(num-hundred*100)/10;
indiv=(num-hundred*100-ten*10);
printf("k=%d%d%d",indiv,ten,hundred);
}
T0403、输入两个数的正整数a,b,编写程序将a,b合并成一个整数放在c中,合并的方式是:
将a的十位和个位数依次放在c数的百位和个位上,b的十位和个位数依次放在c数的十位和千位上,输出c的结果。
#include
#include
voidmain()
{inta,b,indiv,ten,hundred,thousand;
scanf("%d%d",&a,&b);
hundred=a/10;
indiv=a-hundred*10;
ten=b/10;
thousand=b-ten*10;
printf("c=%d%d%d%d",thousand,hundred,ten,indiv);
}
T0405、编写按“时:
分:
秒”格式输入时间,将这个时间转换成以秒为单位的时间值输出。
#include
voidmain()
{
longa,b,c,d;
scanf("%ld:
%ld:
%ld",&a,&b,&c);
d=a*3600+b*60+c;
printf("%02d:
%02d:
%02d=%ds",a,b,c,d);
}
T0408、编写程序求下图所示的正五边形的面积(输入整型边长,输出实型面积保留六位小数)。
#include
#include
voidmain()
{
doubles,q=3.1415926;inta;
scanf("%d",&a);
s=(5.0/4)*(a*a)/(tan(1.0/5*q));
printf("%lf",s);
}
SXC01、对函数要求输入x值,求y值。
#include
#include
voidmain()
{
doublex,y;
scanf("%lf",&x);
if(x<0)y=-x;
if(x>=0&&x<10)y=x*x;
if(x>=10)y=sqrt(x);
printf("y=%lf",y);
}
SXC03、某单位要加工资,增加金额取决于工龄和现工资两个因素:
工龄不少于20年的,如果现工资高于2000,加200,否则加180;对于工龄小于20年的,如果现工资高于1500,加150,否则加120。
工龄和现工资从键盘输入,输入加工资后的员工工资。
#include
voidmain()
{
doublex,y;
scanf("%lf%lf",&x,&y);
if(x>=20&&y>2000)y=y+200;
if(x>=20&&y<=2000)y=y+180;
if(x<20&&y>1500)y=y+150;
if(x<20&&y<=1500)y=y+120;
printf("%lf",y);
}
SXC04、钟表的时针和分针任何时刻都有一定的夹角,现已知某时刻,编程求该时刻时针和分针的夹角c(<=180,输入格式“小时:
分”)
#include"stdio.h"
voidmain()
{
inta,b,c1,c2,c;
scanf("%d:
%d",&a,&b);
c1=a*30+b/2;
c2=b*6;
c=c1-c2;
if(c>-360&&c<-180)c=c+360;
elseif(c>=-180&&c<0)c=-c;
elseif(c>=0&&c<=180);
elsec=360-c;
printf("c=%d\n",c);
}
SXC05、比较两个分数的大小,不能用计算这两个分数的值的方式来求解。
(输入分数形式X/Y)
#include"stdio.h"
voidmain()
{
inta,b,c,d,m,n;
scanf("%d/%d%d/%d",&a,&b,&c,&d);
m=a*d;
n=c*b;
if(m>n)
printf("%d/%d>%d/%d\n",a,b,c,d);
elseif(mprintf("%d/%d<%d/%d\n",a,b,c,d);
else
printf("%d/%d=%d/%d\n",a,b,c,d);
}
CH0505、有一函数:
编写程序,输入X值,输出Y值。
#include"stdio.h"
voidmain()
{
intx,y;
scanf("%d",&x);
if(x<1)
printf("y=%d\n",x);
elseif(x>=1&&x<10)
printf("y=%d\n",2*x-1);
else
printf("y=%d\n",3*x-11);
}
CH0510、有4个圆塔,圆心分别为(2,2)、(-2,2)、(2,-2)、(-2,-2),圆半径为1。
这4个塔的高度为10M,塔以外无建筑物。
编写程序,输入任一点的坐标,求该点的建筑高度。
#include"stdio.h"
voidmain()
{
doublex,y;inth;
scanf("%lf%lf",&x,&y);
if((x-2)*(x-2)+(y-2)*(y-2)<=1||(x-2)*(x-2)+(y+2)*(y+2)<=1||(x+2)*(x+2)+(y+2)*(y+2)<=1||(x+2)*(x+2)+(y-2)*(y-2)<=1)
h=10;
else
h=0;
printf("h=%d\n",h);
}
T0501、编写程序任意输入三角形三条边(a、b、c为实型),若能构成三角形,则计算三角形面积,否则输出标志“NO”。
(计算公式:
)
#include
#include
voidmain()
{
doublea,b,c,t,s;
scanf("%lf%lf%lf",&a,&b,&c);
if(a>0&&b>0&&c>0&&a+b>c&&a+c>b&&b+c>a)
{t=(a+b+c)/2;
s=sqrt(t*(t-a)*(t-b)*(t-c));
printf("s=%f\n",s);
}
elseprintf("NO\n");
}
T0502、编写程序输入月份和日期,给出对应的星座。
3.21—4.20白羊
4.21—5.20金牛
5.21—6.20双子
6.21—7.22巨蟹
7.23—8.22狮子
8.23—9.22处女
9.23—10.22天秤
10.23—11.22天蝎
11.23—12.22人马
12.23—1.20摩蟹
1.21—2.20宝瓶
2.21—3.20双鱼
#include
voidmain()
{
inta,b,x;
scanf("%d%d",&a,&b);
x=a*100+b;
if(321<=x&&x<=420)printf("%d月%d日为白羊座",a,b);
elseif(421<=x&&x<=520)printf("%d月%d日为金牛座",a,b);
elseif(521<=x&&x<=620)printf("%d月%d日为双子座",a,b);
elseif(621<=x&&x<=722)printf("%d月%d日为巨蟹座",a,b);
elseif(723<=x&&x<=822)printf("%d月%d日为狮子座",a,b);
elseif(823<=x&&x<=922)printf("%d月%d日为处女座",a,b);
elseif(923<=x&&x<=1022)printf("%d月%d日为天秤座",a,b);
elseif(1023<=x&&x<=1122)printf("%d月%d日为天蝎座",a,b);
elseif(1123<=x&&x<=1222)printf("%d月%d日为人马座",a,b);
elseif((0elseif(121<=x&&x<=220)printf("%d月%d日为宝瓶座",a,b);
elseif(221<=x&&x<=320)printf("%d月%d日为双鱼座",a,b);
}
SXD02、有一堆零件(100-200之间),如果以4个一组进行分组,多出2个零件;如果7个一组则多出3个;9个一组分组多出5个。
编写程序求零件总数。
#include
voidmain()
{
inti;
for(i=100;i<=200;i++)
{if(i%4==2&&i%7==3&&i%9==5)
printf("%d",i);
}
}
SXD03、编写程序求任意两个整数之间的所有素数。
(输入的两整数大小任意)
#include
voidmain()
{
inta,b,t,i,j,len;
scanf("%d%d",&a,&b);
if(a>b){a=a;b=b;}
if(b>a){t=a;a=b;b=t;}
for(i=b;i<=a;i++)
{for(len=0,j=2;j<=i-1;j++)
if(i%j==0)len++;
if(len==0)printf("%d",i);
}
}
SXD04、分数列2/1,3/2,5/3,8/5,13/8,21/13,。
。
。
。
。
。
求出数列前20项和。
#include"stdio.h"
voidmain()
{
inti;
doublef1,f2,sum;
f1=f2=1.0;sum=0;
for(i=1;i<=10;i++)
{
f2=f1+f2;
sum=sum+f2/f1;
f1=f1+f2;
sum=sum+f1/f2;
}
printf("%.6lf\n",sum);
}
SXD06、假设银行整存整取不同期限月息利率分别为:
0.63%1年0。
66%2年0。
69%3年0。
75%5年0。
84%8年
利息=本金*月息利率*12*存款年限
现某人手中有2000元,请计算选择一种存款方案,使钱存入银行20年后得到的利息最多。
#include"stdio.h"
voidmain()
{
inti1,i2,i3,i5,i8,a1,a2,a3,a5,a8,i;
doublep,max=2000;
for(i8=0;i8<=2;i8++)
for(i5=0;i5<=(20-i8*8)/5;i5++)
for(i3=0;i3<=(20-i8*8-i5*5)/3;i3++)
for(i2=0;i2<=(20-i8*8-i5*5-i3*3)/2;i2++)
for(i1=0;i1<=(20-i8*8-i5*5-i3*3-i2*2);i1++)
{
if(i8*8+i5*5+i3*3+i2*2+i1==20)
{
p=2000;
for(i=1;i<=i8;i++)
p=p+p*0.0084*12*8;
for(i=1;i<=i5;i++)
p=p+p*0.0075*12*5;
for(i=1;i<=i3;i++)
p=p+p*0.0069*12*3;
for(i=1;i<=i2;i++)
p=p+p*0.0066*12*2;
for(i=1;i<=i1;i++)
p=p+p*0.0063*12;
}
if(p>max)
{
max=p;
a8=i8;a5=i5;a3=i3;a2=i2;a1=i1;
}
}
printf("8年=%d5年=%d3年=%d2年=%d1年=%d\n",a8,a5,a3,a2,a1);
printf("最大收益=%.2lf\n",max);
}
CH0603、编程求Sn=a+aa+aaa+……的值,其中a是一个数字(a,n由键盘输入)
#include
voidmain()
{
inta,n,i,j,k=1;longs=0,sum;
scanf("%d%d",&a,&n);
for(i=1;i<=n;i++)
{sum=0;for(j=1;j<=i;k=k*10)
{sum=sum+a*k;j++;}
s=s+sum;k=1;
}
printf("a+aa+aaa+...=%ld",s);
}
CH0607、一个数如果恰好等于他的因子之和,这个数就称为完数。
如6的因子为1、2、3,而6=1+2+3,所以6是完数。
编程找出1000以内的所有完数。
#include
voidmain()
{
ints=0,i,j;
for(i=2;i<1001;i++)
{
s=0;
for(j=1;j
{if((i%j)==0)s=s+j;}
if(s==i){printf("%d=1",i);
for(j=2;j
{if((i%j)==0)printf("+%d",j);
}
printf("\n");
}
}
}
CH0611、编程,用迭代法求x=
#include
#definen1000
voidmain()
{
doublex,a,h;inti;
scanf("%lf",&a);
x=a/2;
for(i=0;i<=n;i++)
{h=x;
x=(x+a/x)/2;
if((x-h)>=1e-5&&(x-h)<=-1e-5)break;
}
printf("x=%.5lf",x);
}
CH0613、编程用二分法求下面方程在(-10,10)之间的根:
#include
#include
voidmain()
{doublex0,x1,x2,fx0,fx1,fx2;
do
{scanf("%lf%lf",&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);
do
{x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if((fx0*fx1)<0)
{x2=x0;
fx2=fx0;
}
else
{x1=x0;
fx1=fx0;
}
}
while(fabs(fx0)>=1e-5);
printf("x=%.2f\n",x0);
}
CH0615、两乒乓球队比赛,各出三人,甲队为A,B,C;乙队为X、Y、Z。
已抽签决定比赛名单,A说不和X比,C说不和Z,X比,编程找出3对比赛选手的对手名单。
#include
voidmain()
{chari,j,k;
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
if(i!
=j)
for(k='x';k<='z';k++)
if(k!
=i&&k!
=j)
if(i!
='x'&&k!
='x'&&k!
='z')
printf("a--%cb--%cc--%c\n",i,j,k);
}
T0603、编程输入一个数后,输出七整数部分的为数。
#include
#include
voidmain()
{
doublea;
longb;
intn=0;
scanf("%lf",&a);
if(a<0)a=-a;
b=floor(a);
while(b!
=0)
{
b=b/10;
n++;
}
printf("%d\n",n);
}
T0607、编程计算的近似值:
=4(1—1/3+1/5—1/7+1/9……)(直到最后一项小于为止)
#include
#include
voidmain()
{
ints;
doublen,t,PI;
t=1;PI=0;n=1.0;s=1;
while(fabs(t)>1e-6)
{
PI=PI+t;
n=n+2;
s=-s;
t=s/n;
}
PI=PI*4;
printf("PI=%f\n",PI);
}
T0608、编程求下面级数的前N项和,N从键盘输入。
∑——————
#include
voidmain()
{
intt,j,n;
longm;
doubles,a,b,c;
scanf("%d",&n);
t=1;m=1;s=0;
for(j=1;j<=n;j++)
{
t=t*(-1);
m=m*2;
a=t/(-1)*m;
b=m+t;
c=2*m+t*(-1);
s=s+a/b/c;
}
printf("s=%f\n",s);
}
T0611、编程求500-800内的素数的个数cnt,并按所求的素数的从大到小的顺序,计算其间隔减、加之和,即第一个素数—第2个素数+第三个素数….的和sum
#include
#include
voidmain()
{
intcnt,s,m,n,a,j;
cnt=0;s=0;a=1;
for(n=799;n>=501;n--)
{
m=(int)sqrt(n);
for(j=2;j<=m;j++)
if(n%j==0)break;
if(j>m)
{
cnt++;
s=s+a*n;
a=a*(-1);
}
}
printf("cnt=%d,s=%d\n",cnt,s);
}
T0615、编程验证下列结论:
任何一个自然数N的立方都等仪N个连续奇数之和。
要求程序对每个输入的自然数计算并输出相应的连续奇数。
#include
voidmain()
{longm,i,n,a;
scanf("%ld",&n);
if(n!
=0)
{m=n*n*n;
printf("%d*%d*%d=%ld=",n,n,n,m);
a=n*n-n+1;
for(i=0;i{if(ielseprintf("%d\n",a+2*i);}
}
printf("Yes");
}
T0617、编程求一个整数的任意次方的最后三位数。
#include
voidmain()
{
longx,a,b,i;
scanf("%ld%ld",&x,&a);
b=1;
for(i=1;i<=a;i++)
{
b=b*x;
b=b%1000;
}
printf("%d\n",b);
}
T0619、分子为1的分数称为埃及分数,现输入一个真分数,编程将该分数分解为埃及分数。
#include
voidmain(void)
{longinta,b,c;
scanf("%ld%ld",&a,&b);
printf("%d/%d=",a,b);
while
(1)
{
if(b%a!
=0)
c=b/a+1;
else{c=b/a;a=1;}
if(a==1)
{
printf("1/%ld\n",c);
break;
}
elseprintf("1/%ld+",c);
a=a*c-b;
b=b*c;
if(a==3)
{printf("1/%ld+1/%ld\n",b/2,b);
break;
}
}
}
T0621、某级数前两项A1=1,A2=1,以后各项有如下关系:
An=An-2+2An-1;
编程要求依次对M=100,1000,10000求出相对应的n值。
(使其满足SnM,这里S