C语言平台答案.docx
《C语言平台答案.docx》由会员分享,可在线阅读,更多相关《C语言平台答案.docx(51页珍藏版)》请在冰豆网上搜索。
C语言平台答案
1:
求1到n的累加和(10分)
输入一个整数n,求1+2+3+……+n的累加和。
输入格式:
输入一个整数。
输出格式:
输出1~n的累加和。
输入样例:
在这里给出一组输入。
例如:
5
输出样例:
在这里给出相应的输出。
例如:
15
#include"stdio.h"
main()
{
inti,n,t;
scanf("%d",&n);
t=0;
for(i=1;i<=n;i++)
t=t+i;
printf("%d",t);
}
2:
求三角形面积(10分)
输入三角形的三边长,求其面积。
输入格式:
在一行中输入能够构成三角形的3个实数,3个数之间用逗号间隔。
输出格式:
对每一组输入,在一行中输出面积值,结果保留两位小数,没有附加字符。
输入样例:
3,3,3
输出样例:
3.90
#include"stdio.h"
#include"math.h"
main()
{
floata,b,c,s,w;
scanf("%f,%f,%f",&a,&b,&c);
w=(a+b+c)/2;
s=sqrt(w*(w-a)*(w-b)*(w-c));
printf("%.2f\n",s);
}
3:
分段函数1(12分)
计算分段函数,测试数据分别是-2、3、7。
输入格式:
输入一个数
输出格式:
输出x=多少,y=多少,输出的x和y值均保留两位小数
输入样例:
-3
输出样例:
x=-3.00,y=2.00
#include"stdio.h"
#include"math.h"
main()
{
floatx,y;
scanf("%f",&x);
if(x<0)y=fabs(x+1);
elseif(x>5)y=sin(x)+5;
elsey=2*x+1;
printf("x=%.2f,y=%.2f",x,y);
}
4:
斐波那契(Fibonacci)数列前20项。
#include"stdio.h"
main()
{
longinta[20]={1,1};
inti;
for(i=2;i<20;i++)
a[i]=a[i-1]+a[i-2];
for(i=0;i<20;i++)
printf("%8d",a[i]);
}
5:
求1-3+5……-99+101的值。
#include"stdio.h"
#include"math.h"
main()
{
inti,n,s;
i=1;
s=1;
for(n=1;n<=100;n=n+2)
s=s+pow(-1,i++)*n;
i++;
printf("s=%d",s);
}
6:
求1*2+2*3+…+20*21的值。
#include"stdio.h"
main()
{
inti,n,t;
n=0;
for(i=1;i<=20;i++)
{
t=i*(i+1);
n=n+t;
}
printf("%d",n);
}
7:
各位数字之和(10分)
求任一正整数的各位数字之和。
输入格式:
输入一个正整数。
输出格式:
输出整数的各个位数字之和的结果。
#include"stdio.h"
main()
{
inti,k=1,n,s,nc=1,ni,sum=0;
scanf("%d",&n);
intj,t=1;
for(i=1;n/t>=10;i++)
{
k+=1;
t*=10;
}
s=n;
for(i=1;i<=k;i++)
{
s=n/nc;
ni=s%10;
sum+=ni;
nc*=10;
}
printf("%d",sum);
}
8:
辗转相除法求最大公约数。
#include"stdio.h"
main()
{
intn,r,m;
scanf("%d,%d",&m,&n);
r=m%n;
while(r!
=0)
{
m=n;
n=r;
r=m%n;
}
printf("gcd=%d\n",n);
}
9:
猜算式?
2*7?
=3848中的数字(10分)
算式:
?
2*7?
=3848中缺少一个十位数和一个个位数。
编程求出使该算式成立时的这两个数,并输出正确的算式。
输出格式:
在一行中输出A2*B7=C的值。
#include
main()
{
inti,j,A,B;
for(i=1;i<=9;i++)
{
A=i*10;
for(j=1;j<=9;j++)
{
B=j;
if(3848==(A+2)*(B+70))
printf("%d2*7%d=3848",i,j);
}
}
}
10:
输出各位数字之和能被15整除的所有数(10分)
输出100到1000之间的各位数字之和能被15整除的所有数,输出时每5个一行,每个数输出占4列列宽。
输出格式:
在每行中输出5的满足要求的数值,每个数输出占4列列宽。
#include"stdio.h"
main()
{
intn,i=0,a,b,c,m;
for(n=100;n<=999;n++)
{
a=n/100;
b=n/10%10;
c=n%10;
m=a+b+c;
if(m%15==0)
{
printf("%4d",n);
i++;
if(i%5==0)
printf("\n");
}
}
}
11:
求1!
+3!
+5!
+……+n!
(10分)
求1!
+3!
+5!
+……+n!
的和,要求用循环嵌套设计,n<12。
输入格式:
输入在一行中给出一个不超过12的正整数n。
输出格式:
在一行中按照格式“n=n值,s=阶乘和”的顺序输出,其中阶乘和是正整数。
#include
main()
{
inti,t,n,k=1,s=0;
scanf("%d",&n);
if(n<12)
{for(i=1;i<=n;i+=2)
{
for(t=1;t<=i;t++)
k=t*k;
s=k+s;
k=1;
}
printf("n=%d,s=%d",n,s);}
}
12:
打印等腰三角形图形
$
$$$
$$$$$
$$$$$$$
$$$$$$$$$
第一行图形符号前面有4个空格。
输出格式:
以等腰三角形的格式输出5行由"$"符号构成的三角图形,每个"$"符号占固定1位,第一行"$"符号前有4个空格。
#include
main()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=5-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("$");
printf("\n");
}
}
13:
打印倒直角三角形图形(10分)
请编程序打印如下图形。
$$$$$
$$$$
$$$
$$
$
第一行图形符号前面有1个空格。
输出格式:
以倒直角三角形的格式输出5行由"$"符号构成的三角图形,每个"$"符号占固定1位,第一行第一个"$"符号前有1个空格。
#include
main()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf("");
for(j=1;j<=6-i;j++)
printf("$");
printf("\n");
}
}
14:
打印平行四边形图形(10分)
请编程序打印如下图形。
$$$$$
$$$$$
$$$$$
$$$$$
$$$$$
第一行图形符号前面有1个空格
输出格式:
以平行四边形的格式输出5行由"$"符号构成的图形,每个"$"符号占固定1位,第一行第一个"$"符号前有1个空格。
#include
main()
{
inti,j;
for(i=1;i<=5;i++)
{
for(j=1;j<=i;j++)
printf("");
for(j=1;j<=5;j++)
printf("$");
printf("\n");
}
}
15:
打印出如下图案(菱形)
*
***
*****
*******
*****
***
*
第一行图形符号前面有5个空格
输出格式:
以菱形的格式输出7行由乘号构成的图形,每个乘号占固定1位,第一行乘号前有5个空格。
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<5;i++)
{
for(j=1;j<=6-i;j++)
printf("");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
for(i=1;i<4;i++)
{
for(j=1;j<=i+2;j++)
printf("");
for(j=1;j<=7-2*i;j++)
printf("*");
printf("\n");
}
}
16:
打印直角九九乘法表(10分)
输出直角九九乘法口诀,输出效果如样例。
输出格式:
以左下直角的格式输出九九乘法表,每个式子按“a*b=c”形式输出,其中a和b各占1位列宽,c占3位列宽并左对齐。
输出样例:
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
4*1=44*2=84*3=124*4=16
5*1=55*2=105*3=155*4=205*5=25
6*1=66*2=126*3=186*4=246*5=306*6=36
7*1=77*2=147*3=217*4=287*5=357*6=427*7=49
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=64
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
#include"stdio.h"
main()
{
inti,j;
for(i=1;i<=9;i++)
{
for(j=1;j
printf("%d*%d=%-3d",i,j,i*j);
printf("\n");
}
}
17:
求1!
+2!
+……+n!
#include"stdio.h"
main()
{
intn,s,i,m;
scanf("%d",&n);
s=1;
m=0;
if(n>=1&&n<12)
for(i=1;i<=n;i++)
{
s=s*i;
m=m+s;
}
printf("m=%d",m);
}
18:
统计80到90分人数(10分)
输入若干学生成绩,以负数结束输入。
计算所有学生的平均成绩并统计成绩在80到90分(不含90)之间的人数。
输入格式:
在一行输入几个百分制实型成绩,数据之间以一个空格间隔。
输入负数结束输入。
输出格式:
在一行中按照“ave=平均分,n=人数”的顺序输出结果,其中平均分要求保留两位小数,人数是正整数。
#include"stdio.h"
main()
{
inta,i,s=0,n=0;
floatave;
scanf("%d",&a);
for(i=0;a>0;i++)
{
s=s+a;
if(a>=80&&a<90)
n++;
scanf("%d",&a);
}
ave=s*1.0/i;
printf("ave=%0.2f,n=%d",ave,n);
}
19:
3个数字构数(10分)
用0-9之间不同的3个数构成一个3位数,统计出共有多少种方法。
输出格式:
按照“count=结果”格式输出,结果为整数,不加宽度控制。
#include"stdio.h"
main()
{
intcount,i,n=0,a,b,c;
for(i=100;i<=999;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(a!
=b&&b!
=c&&a!
=c)
n++;
}
printf("count=%d",n);
}
20:
π/4≈1-1/3+1/5……求π(10分)
用公式π/4≈1-1/3+1/5……求π的近似值,要求直到最后一项的绝对值小于0.000001为止。
输出格式:
按照“pi=结果”的顺序输出,其中结果输出的格式宽度为10列,并保留4位小
#include"stdio.h"
#include"math.h"
main()
{
intp=1;
floatsum=0,s=1,k=1;
while(fabs(s)>=1e-6)
{
sum=sum+s;
p=-p;
k=k+2;
s=p*1.0/k;
}
sum=sum*4;
printf("pi=%.4f",sum);
}
21:
统计两整数间被3整除数的个数(10分)
输入两个整数,n1,n2(要求n1输入格式:
在一行输入2个整数。
两个整数之间用一个空格间隔
输出格式:
按照“a=n1,b=n2,n=个数”的顺序输出。
其中n1、n2和个数的输出格式均为原样输出,不加宽度控制。
#include"stdio.h"
main()
{
inti,n1,n2,n=0;
scanf("%d%d",&n1,&n2);
if(n1for(i=n1;i<=n2;i++)
if(i%3==0)
n++;
printf("a=%d,b=%d,n=%d",n1,n2,n);
}
22:
各位数字平方和(10分)
程序功能是输入一个长整数,求各位数字的平方和s。
如果输入的是负数,求其相反数的各位数字的平方和。
例如:
输入-123,输出14。
输入格式:
直接输入一个长整数。
输出格式:
按照“sum=s”的格式输出,其中各位数字的平方和s原样输出,不加宽度控制。
#include"stdio.h"
#include"math.h"
intmain(void)
{
intn,s,k,t;
scanf("%d",&n);
if(n>0)
s=0;k=n;
while(k!
=0)
{
t=k%10;
s=s+t*t;
k=k/10;
}
if(n<0)
n=fabs(n);
s=0;k=n;
while(k!
=0)
{
t=k%10;
s=s+t*t;
k=k/10;
}
printf("sum=%d",s);
return0;
}
23:
交换a和b的值(10分)
交换变量a,b的值,如输入a的值为1,b的值为5,则输出a的值为5,b的值为1。
输入格式:
输入两个整数,之间用一个空格间隔。
输出格式:
在一行中按照“a=x,b=y”的格式输出,其中x和y均是原样输出,不加宽度控制。
#include"stdio.h"
main()
{
inta,b,t;
scanf("%d%d",&a,&b);
{
t=a;
a=b;
b=t;
}
printf("a=%d,b=%d",a,b);
}
24:
华氏温度转化为摄氏温度(10分)
将华氏温度转化为摄氏温度(下式中c表示摄氏温度,f表示华氏温度)。
c=5/9(f-32)
输入格式:
直接输入一个实数,没有其它任何附加字符。
输出格式:
在一行中按照“c=结果”的顺序输出,结果为保留2位小数的实数,没有其它任何附加格式控制。
#include"stdio.h"
main()
{
floatf,c;
scanf("%f",&f);
printf("c=%.2f",c=5*(f-32)/9);
}
25:
求n!
#include"stdio.h"
main()
{
intn,t,i;
t=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
t=t*i;
printf("%d",t);
}
26:
10个数的最大值
#include"stdio.h"
main()
{
intmax,i,n;
for(i=1;i<=10;i++)
{
scanf("%d",&n);
if(n>=max)
max=n;
}
printf("max=%d",max);
}
27:
[1,40]能被3整除的数
#include"stdio.h"
main()
{
intn;
for(n=1;n<=40;n++)
if(n%3==0)
printf("%4d",n);
}
28:
[1,100]能被3整除的数的和
#include"stdio.h"
main()
{
intn,t;
t=0;
for(n=1;n<=100;n++)
if(n%3==0)
t=t+n;
printf("%4d",t);
}
29:
[1,100]能被3整除的数的个数
#include"stdio.h"
main()
{
intn,t;
t=0;
for(n=1;n<=100;n++)
if(n%3==0)
t++;
printf("%d",t);
}
30:
求1到6的阶乘的和.
#include"stdio.h"
main()
{
inti,n=1;
floats=0;
for(i=1;i<=6;i++)
{
n=n*i;
s=s+n;
}
printf("jiecheng=%.6f",s);
}
31输入10个无序的整数,用选择法对10个整数按升序排序。
注意:
要求排序只排3轮。
#include"stdio.h"
main()
{
inta[10];
inti,b,min,j,k;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<3;i++)
{
k=i;
for(j=i+1;j<10;j++)
if(a[j]if(k!
=i)
{
b=a[i];
a[i]=a[k];
a[k]=b;
}
}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
32对n个整数组成的一维数组按逆序重新存储并输出(n<10)。
#include"stdio.h"
main()
{
inta[80],b[80];
inti,n;
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
for(i=0;i{
b[i]=a[n-i-1];
printf("%4d",b[i]);
}
return0;
}
33:
对n个整数组成的一维数组用顺序法按从小到大排序后输出(4#include"stdio.h"
main()
{
inta[10];
inti,n,t,j,k;
scanf("%d",&n);
if(n>4&&n<10)
for(i=0;iscanf("%d",&a[i]);
for(i=0;i<3;i++)
{
k=i;
for(j=1+i;jif(a[j]if(k!
=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0;iprintf("%5d",a[i]);
return0;
}
34:
在一维数组中有10个整数,求出其中能被5整除的所有数的和。
#include"stdio.h"
main()
{
inta[10],s=0,i;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
if(a[i]%5==0)
s=s+a[i];
}
printf("%d",s);
}
35:
在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列,已知升序数组{1,2,4,6,8,9,12,15,149,156}。
#include"stdio.h"
main()
{
inta[11]={1,2,4,6,8,9,12,15,149,156};
inti,num,j;
scanf("%d",&num);
if(num>a[9])
a[10]=num;
else
{
for(i=0;i<10;i++)
if(numfor(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=num;
break;
}
}
for(i=0;i<11;i++)
printf("%5d",a[i]);
}
36:
有一数组内放5个整数,要求找出第一次出现的最小数和它的下标,然后把它和数组中最前面的元素即第一个数对换位置。
#include"stdio.h"
main()
{
inta[5];
inti,min,t,p;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
min=a[0];
for(i=0;i<5;i++)
{
if(a[i]{
min=a[i];
p=i;
}
}
t=a[0];
a[0]=a[p];
a[p]=t;
for(i=0;i<5;i++)
printf("%4d",a[i]);
printf("\n");
printf("min=%d,weizhi=%d",min,p);
}
37:
产生并输出如下形式的方阵。
1222221
3122214
331