C语言上机考试答案.docx
《C语言上机考试答案.docx》由会员分享,可在线阅读,更多相关《C语言上机考试答案.docx(26页珍藏版)》请在冰豆网上搜索。
C语言上机考试答案
C语言期末上机试题参考答案
1、输入正三角形的边长,求其内切圆面积。
输出时要有文字说明,取小数点后两位数字。
1.2
#include
floatR(floatx)
{floatr;
r=x/(2*sqrt(3));
return(r);
}
1.1
#include
voidmain()
{
floatR(floatx);
floata,area,r;
scanf("%f",&a);
r=R(a);
area=3.14*r*r;
printf("areais%0.2f\n",area);
}
2、从键盘输入一个小写字母,要求改为大写字母输出。
输出时要有文字说明。
2.2
charfun(charx)
{charc3;
if('a'<=x<='z')
c3=x-32;
return(c3);}
2.1
#include
voidmain()
{charfun(charx);
charc1,c2;
scanf("%c",&c2);
c1=fun(c2);
printf("%c",c1);}
3、求方程ax2+bx+c=0的根。
a,b,c由键盘输入,设b2-4ac>0。
输出时要有文字说明,取小数点后两位数字。
3.2
#include
floatA(floatx,floaty,floatz)
{floatdisc;
disc=y*y-4*x*z;return(disc);}
3.1
#include
#include
voidmain()
{floatA(floatx,floaty,floatz);
floata,b,c,disc,x1,x2,p,q;
scanf("%f,%f,%f",&a,&b,&c);
disc=A(a,b,c);p=-b/(2*a);
q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;
printf("方程的根是:
x1=%5.2f,x2=%5.2f\n",x1,x2);}
4、设圆半径r=1.5,圆柱高h=3,求圆周长,圆面积、圆球体积、圆柱体积。
用键盘输入数据。
输出时要有文字说明,取小数点后两位数字。
4.1
#include
voidmain()
{floatfun1(floatx);floatfun2(floatx);floatfun3(floatx);floatfun4(floatx,floaty);
floatr,h;
scanf("%f%f",&r,&h);
floatl,s,sq,sz;
l=fun1(r);
printf("圆周长为:
l=%.2f",l);
s=fun2(r);
printf("圆面积为:
s=%.2f",s);
sq=fun3(r);
printf("圆球体积为:
sq=%.2f",sq);
sz=fun4(r,h);
printf("圆柱体积为:
sz=%.2f",sz);}
4.3
#include
#definePi3.14
floatfun2(floatx)
{floats1;
s1=Pi*x*x;
return(s1);}
4.2
#include
#definePi3.14
floatfun1(floatx)
{floatl1;
l1=Pi*x*2.0;
return(l1);}
4.5
#include
#definePi3.14
floatfun4(floatx,floaty)
{floatsz;
sz=Pi*x*x*y;
return(sz);}
4.4
#include
#definePi3.14
floatfun3(floatx)
{floatsq;
sq=Pi*x*x*x*4.0/3.0;
return(sq);}
5、输入一个华氏温度,要求输出摄氏温度。
公式为c=5/9(F-32)。
输出时要有文字说明,取小数点后两位数字。
5.1
5.2
floatfun(floatx)
{floatc1;
c1=(5.0/9.0)*(x-32);
return(c1);
}
#include
voidmain()
{floatfun(floatx);
floatf,c;
printf("请输入一个华氏温度:
");
scanf("%f",&f);
c=fun(f);
printf("摄氏温度为:
%.2f\n",c);
}
6、由键盘输入三个实数,输出其中最大的数。
输出时要有文字说明,取小数点后两位数字。
6.1
6.2
floatfun(floatx,floaty,floatz)
{floattemp,max;
temp=(x>y)?
x:
y;
max=(temp>z)?
temp:
z;
return(max);}
#include
#include
voidmain()
{
floatfun(floatx,floaty,floatz);
floata,b,c,max;
printf("请输入三个数字:
");
scanf("%f,%f,%f",&a,&b,&c);
max=fun(a,b,c);
printf("三个整数的最大数是%0.2f\n",max);}
7、由键盘输入三个字符,输出其中最大的字符。
输出时要有文字说明。
7.2
charfun(chara[])
{inti;
charmax;
max=a[0];
for(i=1;i<3;i++)
if(a[i]>max)max=a[i];
return(max);}
7.1
#include
voidmain()
{charfun(chara[]);
inti;
chara[3],z;
for(i=0;i<3;i++)
scanf("%c",&a[i]);
z=fun(a);
printf("%c",z);}
8、由键盘输入三个实数,要求按由小到大的顺序输出。
输出时要有文字说明,取小数点后两位数字。
8.2
floatl(floatx,floaty,floatz)
{floatw;
if(x>y){w=x;x=y;y=w;}
if(x>z){w=x;x=y;y=w;}
if(y>z){w=y;y=z;z=w;}
printf("输出三个数从小到大的顺序为:
%6.2f%6.2f%6.2f",x,y,z);}
8.1
#include
voidmain()
{floatl(floatx,floaty,floatz);
floata,b,c;
printf("输入三个是实数");
scanf("%f%f%f",&a,&b,&c);
l(a,b,c);}
9、求s=1+3+5+…+99。
输出时要有文字说明。
9.1
9.2
#include
intsum(intx)
{ints=0,t;
for(t=1;t<=x;t+=2)
s=s+t;
return(s);}
#include
voidmain()
{intsum(intx);
intn,s;
printf("输入一个n值:
");
scanf("%d",&n);
s=sum(n);
printf("sum=%d",s);}
10、把100-200之间不能被3整除的数输出。
输出时要有文字说明。
10.2
intfun(intn)
{staticintz=100;
if(n%3!
=0)z=n;
return(z);}
10.1
#include
voidmain()
{intfun(intn);
inti;
for(i=100;i<=200;i++)
printf("%d\n",fun(i));}
11、输出100-200之间的全部合数。
输出时要有文字说明。
11.1
#include
voidmain()
{
intheshu(intx);
intn;
printf("100到200之间的合数为:
");
for(n=100;n<=200;n++)
{
if(heshu(n)!
=1)
printf("%d",heshu(n));
}
printf("\n");
}
11.2
#include
intheshu(intx)
{
inti;
inta=1;
for(i=2;iif(x%i==0)
a=0;
if(a==0)
return(x);
elseif(a==1)
return(a);
}
12、从键盘输入一个3×3矩阵,将其转置矩阵输出。
12.2
#include
voidconvert(intarray[][3])
{
inti,j,t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
12.1
#include
intarray[3][3];
voidmain()
{voidconvert(intarray[][3]);
inti,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&array[i][j]);
printf("原矩阵为:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%5d",array[i][j]);
printf("\n");}
convert(array);
printf("转置后的矩阵是:
\n");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%5d",array[i][j]);
printf("\n");
}
}
13、有一个分数序列
求出这个数列的前20项之和。
输出时要有文字说明,取小数点后两位数字。
13.1
13.2
#include
floatfac(floatm,floatn)
{return(m+n);}
#include
voidmain()
{floatn=1.0,m=2.0,s=0;
floatfac(floatm,floatn);
inti;
for(i=1;i<=20;i++)
{
s=s+m/n;
n=m;
m=fac(m,n);}
printf("数列的前二十项和为:
%5.2f\n",s);
}
14.2
#include
voidcon(charstr1[],charstr2[],charstr[])
{inti,j;
for(i=0;str1[i]!
='\0';i++)str[i]=str1[i];
for(j=0;str2[j]!
='\0';j++)str[i+j]=str2[j];
str[i+j]='\0';
}
14、由键盘输入两个字符串“Howoldareyou?
”和“Iamtwenty-two.”,将这两个字符串联成一个字符串输出。
14.1
#include
voidmain()
{voidcon(charstr1[],charstr2[],charstr[]);
chars1[100],s2[100],s[100];
gets(s1);gets(s2);
printf("串联后的新字符串是:
");
con(s1,s2,s);puts(s);}
15、任意输入两个实数,输出其中较小的数。
通过函数调用的方式实现。
15.1
15.2
#include
floatmin(floatx,floaty)
{floatz;
if(xelsez=y;
return(z);}
#include
voidmain()
{floatmin(floatx,floaty);
floata,b,c;
printf("请输入实数:
");
scanf("%f,%f",&a,&b);
c=min(a,b);
printf("两数中最小的是:
c=%f",c);}
16、任意输入两个实数,输出他们的积。
通过函数调用的方式实现。
16.1
16.2
#include
floatz(floatx,floaty)
{floatz;
z=x*y;
return(z);}
#include
voidmain()
{floatz(floatx,floaty);
floata,b,c;
printf("请输入两个实数:
");
scanf("%f,%f",&a,&b);
c=z(a,b);
printf("两数之积为:
c=%f\n",c);}
17、给出一个3×3矩阵,求所有元素中的最大值。
17.2
#include
intMax(inta[][3])
{intm,x,y;
m=a[0][0];
for(x=0;x<=2;x++)
for(y=0;y<=2;y++)
if(mreturn(m);}
17.1
#include
voidmain()
{intMax(inta[][3]);
inti,j,max,a[3][3];
printf("请输入3*3的矩阵:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("\n");
max=Max(a);
printf("最大值为:
max=%d\n",max);}
18.2
#include
intz(intx)
{ints=1;
inti;
for(i=1;i<=x;i++)
s=s*i;
return(s);}
18、输出任意一个正整数的阶乘值。
18.1
#include
voidmain()
{intz(intx);
intt,n;
printf("请输入一个正整数:
");
scanf("%d",&n);
t=z(n);
printf("正整数的阶乘值为:
%d\n",t);}
19、从输入的十个大于零的正整数中选出最大值输出。
19.2
unsignedintmax_y(unsignedintarry[])
{unsignedintm=arry[0],i;
for(i=1;i<10;i++)
if(mm=arry[i];
return(m);}
19.1
#include
voidmain()
{
unsignedmax_y(unsignedintarry[]);
unsignedinta[10];
unsignedinti,max;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
max=max_y(a);
printf("max=%u",max);}
20.2
floatl(floatx,floaty,floatz)
{floatt;
if(xif(xif(yprintf("输出三个数从大到小为x=%f,y=%f,z=%f",x,y,z);
}
20、任意输入三个实数a,b,c,按从大到小的顺序输出,使a最大,b居中,c最小。
20.1
#include
voidmain()
{floatl(floatx,floaty,floatz);
floata,b,c;
printf("输入三个数");
scanf("%f,%f,%f",&a,&b,&c);
l(a,b,c);
}
21、设三角形的三边长均为整数,任意输入三个整数,检查是否构成三角形。
21.2
intl(intx,inty,intz)
{intp;
if((x+y)>z&&(x+z)>y&&(y+z)>x)
p=1;
elsep=0;
return(p);}
21.1
#include
voidmain()
{
intl(intx,inty,intz);
inta,b,c;
intt;
printf("输入三个是实数\n");
printf("输出t是1表示能构成\n");
printf("输出t是0表示不能构成\n");
scanf("%d%d%d",&a,&b,&c);
t=l(a,b,c);
printf("t=%d",t);
}
22、任意输入四个数,求其中的最大者和最小者并输出。
22.1
#include
voidmain()
{floatm(floatx1,floatx2,floatx3,floatx4);
floatn(floatx1,floatx2,floatx3,floatx4);
floata,b,c,d,max,min;
printf("输入四个数\n");
scanf("%f%f%f%f",&a,&b,&c,&d);
max=m(a,b,c,d);
min=n(a,b,c,d);
printf("最大值max=%5.2f,最小值min=%5.2f\n",max,min);}
22.2
22.3
floatn(floatx1,floatx2,floatx3,floatx4)
{floatx,y,z;
x=(x1x1:
x2;
y=(x3x3:
x4;
z=(xx:
y;
return(z);}
floatm(floatx1,floatx2,floatx3,floatx4)
{floatx,y,z;
x=(x1>x2)?
x1:
x2;
y=(x3>x4)?
x3:
x4;
z=(x>y)?
x:
y;
return(z);
}
23、在1-32000中找出能同时满足被3除余1,被5除余4,被7除余3的数。
23.2
#include
intf(intx,inty)
{
intz;
z=x%y;
return(z);}
23.1
#include
voidmain()
{intf(intx,inty);
inti,a,b,c;
for(i=1;i<=32000;i++)
{a=f(i,3);b=f(i,5);c=f(i,7);
if(a==1&&b==4&&c==3)
printf("%d\n",i);}}
24.2
#include
charfun(floatx)
{charg;
switch((int)(x/10))
{case10:
case9:
g='A';break;
case8:
g='B';break;
case7:
g='C';break;
case6:
g='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
g='E';break;}
return(g);}
24、任意输入一个学生的成绩,按下列情况分类;90~100为A,80~89为B,70~79为C,60-69为D,小于60为E。
24.1
#include
voidmain()
{charfun(floatx);
floats;
charr;
printf("enterastudent'ss:
");
scanf("%f",&s);while(s<0||100
printf("有误\n");
r=fun(s);
printf("成绩是%5.2f,相应的等级是%c.\n",s,r);}
25、任意输入一个年份,判断其是否闰年。
25.2
#include
intf(intx)
{intw;
w=(x%4==0&&x%100!
=0||
x%400==0);
return(w);}
25.1
#include
voidmain()
{intf(intx);inta,year;
scanf("%d",&year);
a=f(year);
if(a==1)
printf("%d是闰年",year);
elseprintf("%d不是闰年",year);}
26、有一个函数
26.2
#include
#include
floatf(floata)
{floatt;
if(a<1)t=a;
else
if(a<10)t=2*cos(a)-1;
else
if(a>=10)t=3*a-11;
return(t);}
写一个程序,输入
输出
。
26.1
#include
voidmain()
{floatf(floata);
floatx,y;
printf("请输入X的值:
");
scanf("%f",&x);
y=f(x);
printf("相应的y值为:
y=%f",y);}
27、有一个函数
27.2
#include