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
{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分钟化成小时和分钟。
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相应的值。
{
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个整数,要求按由小到大的顺序输出。
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米,塔以外无建筑物。
今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。
floatx,y,t;
scanf("%f,%f",&x,&y);
if((x-2)*(x-2)+(y-2)*(y-2)<=1)t=10.0;
if((x+2)*(x+2)+(y-2)*(y-2)<=1)t=10.0;
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由键盘输入。
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.
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门课的成绩,求平均值。
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:
{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:#includemain(){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.1416main(){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个数中的最大值和最小值。#includemain(){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个数)中所有元素的和的平均值。#includemain(){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个数中正数.负数及零的个数。#includemain(){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:#includeMain(){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:#includemain(){inta[3][3]={{},{},{}}intI,j,max;for(i=0;i<3;i++){max=a[i][0];for(j=0;j<3;j++)if(maxprintf(“max=%d\n”,i+1,max);}}15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。#includemain(){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)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。#includemain(){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门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。#includemain(){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码之差。#includemain(){charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"};printf("%d\n",strcmp(str1,str2));}19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。11112113311464115101051………………………#includemain(){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的小数部分。#includefloatmydecical(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的平方#includemain(){inti,t;i=1;t=1;while(i<=10){t=i*i;printf("%d,%d\n",i,i,t);i++;}}22.数组的转置#includevoidfun(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.用冒泡法对十个字符按由小到大的顺序排列。#includevoidfun(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)计算平均分方差。#includevoidstuaver(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,要求通过指针变量交换三个数据,最后输出原值和新值。#includemain(){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.矩阵转置,要求用指针。#includemain(){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.十个数排序,用指针。#includemain(){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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("%d\t",a[i]);
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:#includemain(){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.1416main(){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个数中的最大值和最小值。#includemain(){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个数)中所有元素的和的平均值。#includemain(){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个数中正数.负数及零的个数。#includemain(){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:#includeMain(){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:#includemain(){inta[3][3]={{},{},{}}intI,j,max;for(i=0;i<3;i++){max=a[i][0];for(j=0;j<3;j++)if(maxprintf(“max=%d\n”,i+1,max);}}15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。#includemain(){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)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。#includemain(){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门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。#includemain(){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码之差。#includemain(){charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"};printf("%d\n",strcmp(str1,str2));}19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。11112113311464115101051………………………#includemain(){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的小数部分。#includefloatmydecical(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的平方#includemain(){inti,t;i=1;t=1;while(i<=10){t=i*i;printf("%d,%d\n",i,i,t);i++;}}22.数组的转置#includevoidfun(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.用冒泡法对十个字符按由小到大的顺序排列。#includevoidfun(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)计算平均分方差。#includevoidstuaver(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,要求通过指针变量交换三个数据,最后输出原值和新值。#includemain(){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.矩阵转置,要求用指针。#includemain(){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.十个数排序,用指针。#includemain(){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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
break;};
for(i=0;i<11;i++)
方法2:
{inta[11],i,j,t,m;
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.1416main(){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个数中的最大值和最小值。#includemain(){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个数)中所有元素的和的平均值。#includemain(){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个数中正数.负数及零的个数。#includemain(){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:#includeMain(){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:#includemain(){inta[3][3]={{},{},{}}intI,j,max;for(i=0;i<3;i++){max=a[i][0];for(j=0;j<3;j++)if(maxprintf(“max=%d\n”,i+1,max);}}15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。#includemain(){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)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。#includemain(){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门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。#includemain(){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码之差。#includemain(){charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"};printf("%d\n",strcmp(str1,str2));}19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。11112113311464115101051………………………#includemain(){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的小数部分。#includefloatmydecical(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的平方#includemain(){inti,t;i=1;t=1;while(i<=10){t=i*i;printf("%d,%d\n",i,i,t);i++;}}22.数组的转置#includevoidfun(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.用冒泡法对十个字符按由小到大的顺序排列。#includevoidfun(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)计算平均分方差。#includevoidstuaver(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,要求通过指针变量交换三个数据,最后输出原值和新值。#includemain(){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.矩阵转置,要求用指针。#includemain(){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.十个数排序,用指针。#includemain(){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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
scanf(“%d”,%m);
a[10]=m;
if(a[10]>a[i]){t=a[i];a[i]=a[10];a[10]=t;}
printf(“%3d”,a[i]);
10.已知五个半径求面积。
#definePI3.1416
{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个数中的最大值和最小值。
{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个数)中所有元素的和的平均值。#includemain(){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个数中正数.负数及零的个数。#includemain(){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:#includeMain(){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:#includemain(){inta[3][3]={{},{},{}}intI,j,max;for(i=0;i<3;i++){max=a[i][0];for(j=0;j<3;j++)if(maxprintf(“max=%d\n”,i+1,max);}}15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。#includemain(){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)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。#includemain(){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门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。#includemain(){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码之差。#includemain(){charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"};printf("%d\n",strcmp(str1,str2));}19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。11112113311464115101051………………………#includemain(){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的小数部分。#includefloatmydecical(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的平方#includemain(){inti,t;i=1;t=1;while(i<=10){t=i*i;printf("%d,%d\n",i,i,t);i++;}}22.数组的转置#includevoidfun(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.用冒泡法对十个字符按由小到大的顺序排列。#includevoidfun(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)计算平均分方差。#includevoidstuaver(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,要求通过指针变量交换三个数据,最后输出原值和新值。#includemain(){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.矩阵转置,要求用指针。#includemain(){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.十个数排序,用指针。#includemain(){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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
printf(“max=%d\n,min=%d”,max,min);
12.求一个数组(10个数)中所有元素的和的平均值。
{inta[10],i,sum=0;
floataver;
scanf("%d",&a[i]);
sum+=a[i];
aver=sum/10.0;
printf("%7.2f\n",aver);
13.统计20个数中正数.负数及零的个数。
inta[20],i,x=0,y=0,z=0;
for(i=0;i<20;i++)
scanf("%d",a[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:
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);
{inta[3][3]={{},{},{}}
intI,j,max;
for(i=0;i<3;i++)
{max=a[i][0];
for(j=0;j<3;j++)
if(maxprintf(“max=%d\n”,i+1,max);}}15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。#includemain(){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)个字母,非字母字符不变。要求编程序将密码译回原文,并输出密码和原文。#includemain(){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门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。#includemain(){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码之差。#includemain(){charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"};printf("%d\n",strcmp(str1,str2));}19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。11112113311464115101051………………………#includemain(){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的小数部分。#includefloatmydecical(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的平方#includemain(){inti,t;i=1;t=1;while(i<=10){t=i*i;printf("%d,%d\n",i,i,t);i++;}}22.数组的转置#includevoidfun(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.用冒泡法对十个字符按由小到大的顺序排列。#includevoidfun(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)计算平均分方差。#includevoidstuaver(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,要求通过指针变量交换三个数据,最后输出原值和新值。#includemain(){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.矩阵转置,要求用指针。#includemain(){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.十个数排序,用指针。#includemain(){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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
printf(“max=%d\n”,i+1,max);}
15.A为【3】【4】矩阵B为【4】【5】矩阵,求矩阵C=AB。
{inta[3][4],b[4][5],c[3][5],i,j;
{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]);
{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]);}
16.(第169页第12题)有一行电文,已按下面规律译成密码:
A-Z,a-z,B-Y,b-y,C-X,c-x……,即第一个字母变成第26个字母,第i个字母变成(26-i+1)个字母,非字母字符不变。
要求编程序将密码译回原文,并输出密码和原文。
{charc;
while((c=getchar())!
='\n')
{if(c>='a'&&c<='z')c=219-c;
if(c>='A'&&c<='Z')c=155-c;
printf("%c",c);}
17.输入6名学生5门课程的成绩,分别统计出每个学生的平均分和每门课程的平均分。
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]);
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);}
18.从键盘输入两个字符串,进行比较,结果为两字符第一个不同字母的ASCII码之差。
charstr1[10]={"erhrgdftrb"},str2[10]={"vbgfghdhfm"};
printf("%d\n",strcmp(str1,str2));
19.(第168页第6题)输出以下的杨辉三角形(要求输出10行)。
1
11
121
1331
14641
15101051
………………………
{inti,j,a[10],t,b[11];
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的小数部分。#includefloatmydecical(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的平方#includemain(){inti,t;i=1;t=1;while(i<=10){t=i*i;printf("%d,%d\n",i,i,t);i++;}}22.数组的转置#includevoidfun(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.用冒泡法对十个字符按由小到大的顺序排列。#includevoidfun(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)计算平均分方差。#includevoidstuaver(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,要求通过指针变量交换三个数据,最后输出原值和新值。#includemain(){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.矩阵转置,要求用指针。#includemain(){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.十个数排序,用指针。#includemain(){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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
printf("%d",a[i]);printf("\n");
scanf("%d",&t);
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;}
printf("%d",b[i]);
20.编写函数(floata)#include,用来求a的小数部分。
floatmydecical(floata)
intb;
floatc;
b=a;
c=a-b;
returnc;
{floatmydecical(floata);
floata,b;
scanf("%f",&a);
b=mydecical(a);
printf("%f\n",b);
21.显示1至10的平方
inti,t;
i=1;
t=1;
while(i<=10)
{t=i*i;
printf("%d,%d\n",i,i,t);
i++;
22.数组的转置
voidfun(inta[3][3])
{inti,j,b[3][3];
{for(j=0;j<3;j++)
{b[i][j]=a[j][i];
printf("%d",b[i][j]);}
{inta[3][3],i,j;
fun(a);
23.用冒泡法对十个字符按由小到大的顺序排列。
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;}
printf("%c",a[i]);
{chara[10];
inti;
scanf("%c",&a[i]);
24.输入5个学生3门课的成绩,用函数实现以下功能:
1).每个学生的均分,2).没门课的均分,3).找出最高的分数对应的学生和课程,4)计算平均分方差。
voidstuaver(inta[5][3])
{inti,j,sum;
{sum=0;
sum+=a[i][j];
aver=sum/3.0;
printf("%f\n",aver);}
voidsubaver(inta[5][3])
sum+=a[j][i];
aver=sum/5.0;
voidmax(inta[5][3])
{inti,j,r,c,m=a[0][0];
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;
{sum[i]=0;
sum[i]+=a[i][j];
aver[i]=sum[i]/5.0;}
{sum1+=aver[i];
sum2+=aver[i]*aver[i];}
t=(sum2/5.0)-(sum1/5.0)*(sum1/5.0);
printf("平均方差为:
%f\n",t);
{inta[5][3],i,j;
printf("学生平均分为:
\n");
stuaver(a);
printf("课程平均分是:
subaver(a);
max(a);
25.现有三个指针p1,p2,p3分别指向三个变量i,j,k,要求通过指针变量交换三个数据,最后输出原值和新值。
{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("新值为:
26.矩阵转置,要求用指针。
{inta[3][3],(*p)[3],i,j;
voidfun(inta[3][3]);
p=a;
fun(p);
27.十个数排序,用指针。
{inta[10],i,j,t,*p;
scanf("%d",p++);
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#includevoidfun(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门课的成绩,平均成绩及名次。#includestructstudent{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
printf("%d",a[i]);
28.把一字符串连接到另一字符串后面
voidfun(char*a,char*b,char,intt)
{for(;*b!
='\0';a++,b++)
*(a+t)=*b;
*(a+t)='\0';
{intn;
charstr1[100],str2[100];
gets(str1);
gets(str2);
n=strlen(str1);
fun(str1,str2,n);
printf("%s",strcat(str1,str2));
29.用结构体数组变量类型编程,有2个学生,4门成绩(输出:
学号,姓名,4门课的成绩,平均成绩及名次。
structstudent
{intnum;
charname[20];
intscore[4];
}stu[2];
{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
{temp=stu[j];stu[j]=stu[j+1];stu[j+1]=te
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1