安阳工学院期末C语言标准答案Word文档下载推荐.docx
《安阳工学院期末C语言标准答案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《安阳工学院期末C语言标准答案Word文档下载推荐.docx(48页珍藏版)》请在冰豆网上搜索。
458个学生4门课的成绩求三个问题
46将一行字符串最长单词输出
47输出金字塔图案
48输入一个数按原来的规律插入数组中
49判断素数
50统计4行文章60个字符中英文词的信息
51电文密码
52n个人的圈子报数,到3退出,求留下是几号
5310个学生3门课程的成绩,输出总平均成绩,以及最高分的信息
54将一字符串的元音字母复制到另一字符串,输出
55输入月份号,输出英文名
P(13-17)
1.有一个函数,写一段程序,输入x的值,输出
y的值。
#include<
stdio.h>
voidmain()
{intx,y;
printf("
输入x:
"
);
scanf("
%d"
&
x);
if(x<
0||x>
100)
{y=-1;
x=%3d,y=%d\n"
x,y);
}
elseif(x==0)
{y=0;
x=%d,y=%d\n"
x,y);
else
{y=1;
}
2.输入3个数a,b,c,按大由到小的顺序输出。
#include<
voidmain()
{
floata,b,c,t;
pleaseentera,b,c:
%f,%f,%f"
a,&
b,&
c);
if(a<
b)
{t=a;
a=b;
b=t;
}
c)
a=c;
c=t;
if(b<
{t=b;
b=c;
%7.2f%7.2f%7.2f\n"
a,b,c);
3.输入4个数,输出4个数中的最大值、最小值。
floatt,a,b,c,d,max,min;
请输入四个数:
%f,%f,%f,%f"
c,&
d);
if(a<
{t=a;
d)
a=d;
d=t;
if(b<
{t=b;
b=d;
if(c<
{t=c;
c=d;
最大值和最小值分别为:
\n"
max=%5.2fmin=%5.2f"
a,d);
4.输入成绩,要求输出成绩等级A、B、C、D、E或
error。
90分以上为‘A’,80~89分为‘B’,70~79分
为‘C’,60~69分为‘D’,0~60分为‘E’。
若输入成
绩低于0分和高于100分则输出error。
{floatscore;
chargrade;
请输入学生成绩:
%f"
score);
if(score>
100||score<
0)
error\n"
else
switch((int)(score/10))
case10:
case9:
grade='
A'
;
break;
case8:
B'
case7:
C'
case6:
D'
case5:
case4:
case3:
case2:
case1:
case0:
E'
成绩是%5.1f,成绩等级是%c.\n"
score
grade);
5.有一个函数:
写一段程序,输入x的值,输出x,y的值。
1)
{y=x;
x=%3d,y=x=%d\n"
elseif(x<
10||x>
10)
{y=2*x-1;
x=%d,y=2*x-1=%d\n"
{y=3*x-11;
x=%d,y=3*x-11=%d\n"
6.输出300~400之间的全部素数,并按每行5个数输出。
#include<
math.h>
{intprime(int);
inti,k,m;
300-400之间的素数为:
\n"
for(i=300;
i<
=400;
i++)
{m=prime(i);
if(m==1)
{k++;
printf("
%5d"
i);
if(k%5==0)
}
intprime(inti)
{intj,flag=1;
for(j=2;
j<
=sqrt(i);
j++)
if(i%j==0)
flag=0;
return(flag);
2.;
#include<
{intm,k,i,n=0;
for(m=300;
m<
m=m+1)
{k=sqrt(m);
for(i=2;
=k;
if(m%i==0)break;
if(i>
=k+1)
{printf("
%d"
m);
n=n+1;
if(n%5==0)printf("
printf("
7.求Fibonacci数列的前20个数,并将其分5行输出
intmain()
{
intf1=1,f2=1;
inti;
for(i=1;
=10;
printf("
%12d%12d"
f1,f2);
if(i%2==0)printf("
f1=f1+f2;
f2=f2+f1;
return0;
8.求和1-10(n!
+3)。
{doubles=0,t=1,sum=0;
intn;
for(n=1;
n<
n++)
t=t*n;
s=s+t;
sum=s+3*n;
1!
+3+2!
+3...+10!
+3=%f\n"
sum);
9.有一分数序列,求其前20项的和。
inti,n=20;
doublea=2,b=1,s=0,t;
for(i=1;
=n;
s=s+b/a;
t=a,
a=a+b,
b=t;
sum=%16.10f\n"
s);
10.输出小于500的所有的“水仙花数”,所谓“水仙花数”
是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个水仙花数,因为。
inti,j,k,n;
水仙花数是:
"
for(n=100;
500;
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
n);
11.给一个不多于6位的正整数,要求:
①求出它是几位数
;
②分别输出每一位数字;
③按逆序输出各位数字,
例如原数为158,应输出851
intn,m;
输入一个不多于六位的数字:
n);
if(n<
1000000&
&
n>
99999)
它是六位数\n"
100000&
9999)
它是五位数\n"
10000&
999)
它是四位数\n"
1000&
99)
它是三位数\n"
100&
9)
它是二位数\n"
10&
=0)
它是一位数\n"
各位数字按逆序输出为:
while(n!
{m=n%10;
n=n/10;
%3d"
12.求5+55+555+5555+55555的值。
inta=5,n=5,i=1,sn=0,tn=0;
=5;
tn=tn+a;
sn=sn+tn;
a=a*10;
5+55+..+55555=%d\n"
sn);
13求方程的解
{doublea,b,c,x1,x2,disc,realpart,imagepart;
%lf,%lf,%lf"
theequation"
if(fabs(a)<
1e-6)
isnotaquadratic"
disc=b*b-4*a*c;
if(fabs(disc)<
hastwoequalroots:
%8.4f\n"
-b/(2*a));
if(disc>
x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
hasdiatinctrealroots:
%8.4f,%8.4f\n"
x1,x2);
realpart=-b/(2*a);
imagepart=sqrt(-disc)/(2*a);
hascomplexroots:
%8.4f+%8.4fi\n"
realpart,imagepart);
%8.4f-%8.4fi\n"
return0;
14输入一行字符,分别统计出其中的英文字符、数字和
其他字符的个数。
string.h>
charc;
intletters=0,digit=0,other=0;
请输入一行字符\n"
while((c=getchar())!
='
\n'
if(c>
a'
c<
z'
||c>
Z'
)
letters++;
elseif(c>
0'
9'
digit++;
else
other++;
字母数:
%d\n数字数:
%d\n其他字符数:
%d\n"
letters,digit,other);
15.输入10个整型整数,用起泡法对这10个数排序,
并该由小到大顺序在屏幕上输出。
#include"
stdio.h"
inta[10];
inti,j,t;
input10number:
for(i=0;
10;
scanf("
a[i]);
for(i=0;
for(j=i;
9;
if(a[i]>
a[j+1])
{t=a[i];
a[i]=a[j+1];
a[j+1]=t;
};
%5d"
a[i]);
16.将一个二维数组a的行和列的元素互换(即行列互换)
,存到另一个二维数组b中。
inta[4][5],b[5][4];
inti,j;
4;
i++)
for(j=0;
5;
a[i][j]);
b[i][j]=a[j][i];
该数组的新序列为:
for(j=0;
b[i][j]);
17.在一个3*4的二维数组a中,要求编程求出其中
值最大的那个元素的值,并输出其所在的行号和列号。
inta[3][4],i,j,max;
3;
max=a[0][0];
if(max<
a[i][j])
max=a[i][j];
max=%d\n"
max);
if(a[i][j]==max)
行=%2d,列=%2d\n"
i+1,j+1);
18输入一行字符,统计其中有多少个单词,
单词之间用空格分隔开。
inti,j=0;
charstr[80];
gets(str);
str[i]!
\0'
if(str[i+1]=='
'
||str[i+1]=='
j++;
单词个数为%d\n"
j);
19.有3个字符串,要求找出其中最大者。
charstr1[80],str2[80],str3[80],longest[80];
gets(str1);
gets(str2);
gets(str3);
strcpy(longest,str1);
if(strcmp(str1,str2)<
if(strcmp(str2,str3)<
thelongestis%s"
longest);
20.输入两个整数,要求用一个函数求出其中的大者,
并在主函数中输出此值。
intf(inta,intb);
intm,n,max;
请输入两个数:
%d,%d"
m,&
max=f(m,n);
max=%d"
intf(inta,intb)
intc;
c=a>
b?
a:
b;
return(c);
21输入两个整数,要求用一个函数求出其最大公约数
和最小公倍数,并在主函数中调用该子函数。
{inthcf(int,int);
intlcd(int,int,int);
intu,v,h,l;
u,&
v);
h=hcf(u,v);
最大公约数=%d\n"
h);
l=lcd(u,v,h);
最小公倍数=%d\n"
l);
inthcf(intu,intv)
{intt,r;
if(v>
u)
{t=u;
u=v;
v=t;
while((r=u%v)!
{u=v;
v=r;
return(v);
intlcd(intu,intv,inth)
return(u*v/h);
22.输入4个整数,找出其中最大的数。
用函数的嵌套调用来处理。
{intmax_4(inta,intb,intc,intd);
inta,b,c,d,max;
Pleaseenter4intergernumbers:
%d%d%d%d"
max=max_4(a,b,c,d);
max=%d\n"
intmax_4(inta,intb,intc,intd)
{intmax_2(inta,intb);
intm;
m=max_2(a,b);
m=max_2(m,c);
m=max_2(m,d);
return(m);
intmax_2(inta,intb)
{return(a>
b);
用递归方法求5!
。
{longfac(intn);
longy;
y=fac(5);
5!
=%ld\n"
y);
longfac(intn)
longf;
0,dataerror!
elseif(n==0,n==1)
f=1;
elsef=fac(n-1)*n;
return(f);
24、编写一个函数,用来分别求数组score_1(有5个元
素)和数组score_2(有10个元素)各元素的平均值。
floatf(floatscore[],intn);
floatscore_1[5],score_2[10],aver_1,aver_2;
inti;
score_1[i]);
score_2[i]);
aver_1=f(score_1,5);
aver_2=f(score_2,10);
aver_1=%f,aver_2=%f\n"
aver_1,aver_2);
floatf(floatscore[],intn)
floataver,sum=0;
n;
sum=sum+score[i];
aver=sum/n;
return(aver);
25将一个数组中的值按逆序重新存放。
例如,
原来顺序为8,6,5,4,1改后成为1,4,5,6,8。
inta[6],b[6],i;
请输入一个数组:
6;
逆序排列后的数组是:
for(i=