C语言程序设计上机题目与参考答案.docx

上传人:b****7 文档编号:25469515 上传时间:2023-06-09 格式:DOCX 页数:30 大小:22.22KB
下载 相关 举报
C语言程序设计上机题目与参考答案.docx_第1页
第1页 / 共30页
C语言程序设计上机题目与参考答案.docx_第2页
第2页 / 共30页
C语言程序设计上机题目与参考答案.docx_第3页
第3页 / 共30页
C语言程序设计上机题目与参考答案.docx_第4页
第4页 / 共30页
C语言程序设计上机题目与参考答案.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C语言程序设计上机题目与参考答案.docx

《C语言程序设计上机题目与参考答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计上机题目与参考答案.docx(30页珍藏版)》请在冰豆网上搜索。

C语言程序设计上机题目与参考答案.docx

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++)

if(a[i]

{t=a[i];a[i]=a[i+1];a[i+1]=t;}

for(i=0;i<10;i++)

printf("%d",a[i]);printf("\n");

scanf("%d",&t);

for(i=0;i<10;i++)

b[i]=a[i];b[10]=t;

for(j=0;j<11;j++)

for(i=0;i<11-j;i++)

if(b[i]

{t=b[i];b[i]=b[i+1];b[i+1]=t;}

for(i=0;i<11;i++)

printf("%d",b[i]);

printf("\n");

}

20.编写函数(floata)#include,用来求a的小数部分。

#include

floatmydecical(floata)

{

intb;

floatc;

b=a;

c=a-b;

returnc;

}

main()

{floatmydecical(floata);

floata,b;

scanf("%f",&a);

b=mydecical(a);

printf("%f\n",b);

}

21.显示1至10的平方

#include

main()

{

inti,t;

i=1;

t=1;

while(i<=10)

{t=i*i;

printf("%d,%d\n",i,i,t);

i++;

}

}

22.数组的转置

#include

voidfun(inta[3][3])

{inti,j,b[3][3];

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

{b[i][j]=a[j][i];

printf("%d",b[i][j]);}

printf("\n");}

}

main()

{inta[3][3],i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

printf("\n");

fun(a);

printf("\n");

}

23.用冒泡法对十个字符按由小到大的顺序排列。

#include

voidfun(chara[10])

{inti,j,t;

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(a[j]>a[j+1])

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

for(i=0;i<10;i++)

printf("%c",a[i]);

}

main()

{chara[10];

inti;

for(i=0;i<10;i++)

scanf("%c",&a[i]);

fun(a);

printf("\n");

}

24.输入5个学生3门课的成绩,用函数实现以下功能:

1).每个学生的均分,2).没门课的均分,3).找出最高的分数对应的学生和课程,4)计算平均分方差。

#include

voidstuaver(inta[5][3])

{inti,j,sum;

floataver;

for(i=0;i<5;i++)

{sum=0;

for(j=0;j<3;j++)

sum+=a[i][j];

aver=sum/3.0;

printf("%f\n",aver);}

printf("\n");

}

voidsubaver(inta[5][3])

{inti,j,sum;

floataver;

for(i=0;i<3;i++)

{sum=0;

for(j=0;j<5;j++)

sum+=a[j][i];

aver=sum/5.0;

printf("%f\n",aver);}

printf("\n");

}

voidmax(inta[5][3])

{inti,j,r,c,m=a[0][0];

for(i=0;i<5;i++)

for(j=0;j<3;j++)

if(a[i][j]>m)

{m=a[i][j];

r=i+1;

c=j+1;}

printf("最高分是:

%d\t学生是:

%d\t课程是:

%d\n",m,r,c);

}

voidfun(inta[5][3])

{intsum[5],i,j;

floatsum1=0,sum2=0,aver[5],t;

for(i=0;i<5;i++)

{sum[i]=0;

for(j=0;j<3;j++)

sum[i]+=a[i][j];

aver[i]=sum[i]/5.0;}

for(i=0;i<5;i++)

{sum1+=aver[i];

sum2+=aver[i]*aver[i];}

t=(sum2/5.0)-(sum1/5.0)*(sum1/5.0);

printf("\n");

printf("平均方差为:

%f\n",t);

}

main()

{inta[5][3],i,j;

for(i=0;i<5;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

printf("\n");

printf("学生平均分为:

\n");

stuaver(a);

printf("课程平均分是:

\n");

subaver(a);

max(a);

fun(a);

printf("\n");

}

25.现有三个指针p1,p2,p3分别指向三个变量i,j,k,要求通过指针变量交换三个数据,最后输出原值和新值。

#include

main()

{int*p1,*p2,*p3,*p,i,j,k;

scanf("%d%d%d",&i,&j,&k);

p1=&i;p2=&j;p3=&k;

printf("原值为:

%d%d%d\n",*p1,*p2,*p3);

p=p1;p1=p2;p2=p3;p3=p;

printf("新值为:

%d%d%d\n",*p1,*p2,*p3);

}

26.矩阵转置,要求用指针。

#include

main()

{inta[3][3],(*p)[3],i,j;

voidfun(inta[3][3]);

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);

p=a;

fun(p);

}

voidfun(inta[3][3])

{inti,j,b[3][3];

for(i=0;i<3;i++)

{for(j=0;j<3;j++)

{b[i][j]=a[j][i];

printf("%d",b[i][j]);}

printf("\n");}

}

27.十个数排序,用指针。

#include

main()

{inta[10],i,j,t,*p;

p=a;

for(i=0;i<10;i++)

scanf("%d",p++);

for(i=0;i<9;i++)

for(j=0;j<9-i;j++)

if(a[j]

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

}

28.把一字符串连接到另一字符串后面

#include

#include

#include

voidfun(char*a,char*b,char,intt)

{for(;*b!

='\0';a++,b++)

*(a+t)=*b;

*(a+t)='\0';

}

main()

{intn;

charstr1[100],str2[100];

gets(str1);

gets(str2);

n=strlen(str1);

fun(str1,str2,n);

printf("%s",strcat(str1,str2));

return0;

}

29.用结构体数组变量类型编程,有2个学生,4门成绩(输出:

学号,姓名,4门课的成绩,平均成绩及名次。

#include

structstudent

{intnum;

charname[20];

intscore[4];

floataver;

}stu[2];

main()

{inti,j;

structstudenttemp;

floatsum=0.0;

for(i=0;i<2;i++)

{scanf("%d%s",&stu[i].num,stu[i].name);

for(j=0;j<4;j++)

{scanf("%d",&stu[i].score[j]);

sum+=stu[i].score[j];}

stu[i].aver=sum/4.0;}

for(i=0;i<1;i++)

for(j=0;j<1-i;j++)

if(stu[j].aver

{temp=stu[j];stu[j]=stu[j+1];stu[j+1]=te

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1