C语言程序设计上机题目与参考答案.docx
- 文档编号:25469515
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:30
- 大小:22.22KB
C语言程序设计上机题目与参考答案.docx
《C语言程序设计上机题目与参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计上机题目与参考答案.docx(30页珍藏版)》请在冰豆网上搜索。
C语言程序设计上机题目与参考答案
C语言程序设计题目与参考答案(1——9章)
1.(课本第84页第7题)设圆半径r=1.5,圆柱的高h=3,求圆周长.圆面积.圆球表面积.圆球体积.圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序:
#include
intmain()
#definep3.1416
intmain()
{doubler,h,l,s,S,v,V;
scanf("%lf%lf",&r,&h);
l=2*p*r;s=p*r*r;S=4*p*r*r;
v=4/3*p*r*r*r;V=p*r*r*h;
printf("l=%7.2f\ns=%7.2f\nS=%7.2f\nv=%7.2f\nV=%7.2f\n",l,s,S,v,V);
return0;
}
2.把560分钟化成小时和分钟。
#include
main()
{intt,h,m;
t=560;h=t/60;m=t%60;
printf("560分钟等于%d小时%d分钟\n",h,m);
}
3.第112页第6题)有一个函数y=x(x<1),y=2x-1(1<=x<10),y=3x-11(x>=1写程序,输入x的值,输出y相应的值。
#include
intmain()
{
floatx,y;
scanf("%f",&x);
if(x<1)y=x;
else
if(x<10)y=2*x-1;
elsey=3*x-11;
printf("%f\n",y);
}
4.(第113页第11题)输出4个整数,要求按由小到大的顺序输出。
#include
intmain()
{
floata,b,c,d,t;
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
if(a>b){t=a;a=b;b=t;}
if(a>c){t=a;a=c;c=t;}
if(a>d){t=a;a=d;d=t;}
if(b>c){t=b;b=c;c=t;}
if(b>d){t=b;b=d;d=t;}
if(c>d){t=c;c=d;d=t;}
printf("%f,%f,%f,%f",a,b,c,d);
}
5.(第113页第12题)有4个圆塔,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为1,这四个塔的高度为10米,塔以外无建筑物。
今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
#include
main()
{
floatx,y,t;
scanf("%f,%f",&x,&y);
if((x-2)*(x-2)+(y-2)*(y-2)<=1)t=10.0;
else
if((x+2)*(x+2)+(y-2)*(y-2)<=1)t=10.0;
else
if((x-2)*(x-2)+(y+2)*(y+2)<=1)t=10.0;
elseif((x+2)*(x+2)+(y+2)*(y+2)<=1)t=10.0;
elset=0.0;
printf("%f\n",t);
}
6.第140页第5题)求Sn=a+aa+aaa+…+aa…a之值,其中a是一个数字,n表
示a的位数,例如:
2+22+222+2222+22222(此时n=5)n由键盘输入。
#include
main()
{
intn,i;
longinta=2,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+a;
a=10*a+2;
}
printf("sum=%d\n",sum);
}
7.(第140页第8题)输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一水仙花数,因为153=1*1*1+5*5*5+3*3*3.
#include
main()
{
intn,a,b,c;
for(n=100;n<=999;n++)
{
a=n/100;
b=n/10-10*a;
c=n%10;
if((n==a*a*a+b*b*b+c*c*c)&&(n==100*a+10*b+c))
printf("%6d",n);
}
printf("\n");
}
8.有2个同学3门课的成绩,求平均值。
#include
main()
{
inti,j,score;
floatsum,average;
for(i=1;i<=2;i++)
{
sum=0;
for(j=1;j<=3;j++)
{scanf("%d",&score);
sum=sum+score;
}
average=sum/3;
printf("%d:
averageis%7.2f\n",i,average);
}
}
9.将一个数组中的10个数据从大到小顺序排列好,并从键盘输入一个数,要求按原来的排序规律将此数插入原数据中。
方法1:
#include
main()
{inti,j,t;inta[11];
for(i=0;i<10;i++)
scanf("%d",&a[i]);printf("\n");
for(j=0;j<10;j++)
for(i=0;i<10-j;i++)
if(a[i] {t=a[i];a[i]=a[i+1];a[i+1]=t;} for(i=0;i<10;i++) printf("%d\t",a[i]); printf("\n"); scanf("%d",&a[10]); for(i=9;i>=0;i--) {if(a[i] break;}; for(i=0;i<11;i++) printf("%d\t",a[i]); printf("\n"); } 方法2: #include main() {inta[11],i,j,t,m; for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(j=0;j<9;j++) for(i=0;i<9-j;i++) if(a[i] scanf(“%d”,%m); a[10]=m; for(i=0;i<11;i++) if(a[10]>a[i]){t=a[i];a[i]=a[10];a[10]=t;} for(i=0;i<11;i++) printf(“%3d”,a[i]); } 10.已知五个半径求面积。 #include #include #definePI3.1416 main() {inta;floatr,s; for(a=1;a<=11;a=a+2) {r=a+0.5; s=PI*pow(r,2); } printf("r=%7.1f,\ts=%7.3f\n",r,s);}; } 11.找出10个数中的最大值和最小值。 #include main() {inti,,max,min; inta[10]={}; max=a[0]; min=a[0]; for(i=0;i<=9;i++) if(a[i]>max){max=a[i];} if(a[i] printf(“max=%d\n,min=%d”,max,min); } 12.求一个数组(10个数)中所有元素的和的平均值。 #include main() {inta[10],i,sum=0; floataver; for(i=0;i<10;i++) { scanf("%d",&a[i]); sum+=a[i]; } aver=sum/10.0; printf("%7.2f\n",aver); } 13.统计20个数中正数.负数及零的个数。 #include main() { inta[20],i,x=0,y=0,z=0; for(i=0;i<20;i++) scanf("%d",a[i]); for(i=0;i<20;i++) {if(a[i]>0)x=x+1; elseif(a[i]<0)y=y+1; elsez=z+1;} printf(“x=%d\ny=%d\nz=%d\n”,x,y,z); } 14.找出3*3矩阵中每行的最大元素。 方法1: #include Main() {inta[3][3]={{0,1,2},{3,4,5},{6,7,8}}; intmax1,max2,max3,j; max1=a[0][0]; max2=a[1][0]; max3=a[2][0]; for(j=0;j<=2;j++) {if(a[0][j]>max1)max1=a[0][j]; if(a[1][j]>max2)max2=a[1][j]; if(a[2][j]>max3)max3=a[2][j]; } printf(“max1=%d,max2=%d,max3=%d”,max1,max2,max3); } 方法2: #include main() {inta[3][3]={{},{},{}} intI,j,max; for(i=0;i<3;i++) {max=a[i][0]; for(j=0;j<3;j++) if(max printf(“max=%d\n”,i+1,max);} } 15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。 #include main() {inta[3][4],b[4][5],c[3][5],i,j; for(i=0;i<3;i++) {for(j=0;j<4;j++)scanf("%d",&a[i][j]); printf("\n");} for(i=0;i<4;i++) {for(j=0;j<5;j++)scanf("%d",&b[i][j]); printf("\n");} for(i=0;i<3;i++) {for(j=0;j<5;j++) {c[i][j]=a[i][0]*b[0][j]+a[i][1]*b[1][j]+a[i][2]*b[2][j]+a[i][3]*b[3][j]; printf("%d\t",c[i][j]);} printf("\n");} } 16.(第169页第12题)有一行电文,已按下面规律译成密码: A-Z,a-z,B-Y,b-y,C-X,c-x……,即第一个字母变成第26个字母,第i个字母变成(26-i+1)个字母,非字母字符不变。 要求编程序将密码译回原文,并输出密码和原文。 #include main() {charc; while((c=getchar())! ='\n') {if(c>='a'&&c<='z')c=219-c; if(c>='A'&&c<='Z')c=155-c; printf("%c",c);} printf("\n"); } 17.输入6名学生5门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。 #include main() { inta[6][5],i,j,sum1[6]={0},sum2[5]={0}; floataver1,aver2; for(i=0;i<6;i++) for(j=0;j<5;j++) scanf("%d",&a[i][j]); for(i=0;i<6;i++) {for(j=0;j<5;j++) sum1[i]=sum1[i]+a[i][j]; aver1=sum1[i]/5.0; printf("aver1=%f\n",aver1);} for(i=0;i<5;i++) {for(j=0;j<6;j++) sum2[i]=sum2[i]+a[j][i]; aver2=sum2[i]/6.0; printf("aver2=%f\t",aver2);} printf("\n"); } 18.从键盘输入两个字符串,进行比较,结果为两字符第一个不同字母的ASCII码之差。 #include main() { charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"}; printf("%d\n",strcmp(str1,str2)); } 19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。 1 11 121 1331 14641 15101051 ……………………… #include main() {inti,j,a[10],t,b[11]; for(i=0;i<10;i++) scanf("%d",&a[i]);printf("\n"); for(j=0;j<10;j++) for(i=0;i<10-j;i++)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 上机 题目 参考答案