数组应用程序设计.docx
《数组应用程序设计.docx》由会员分享,可在线阅读,更多相关《数组应用程序设计.docx(21页珍藏版)》请在冰豆网上搜索。
数组应用程序设计
1、从键盘输入11个数存入一维数组中,先输出下标为奇数的元素,再输出下标为偶数的元素。
main()
{floata[11];
inti;
for(i=0;i<=10;i++)
scanf("%f",&a[i]);
for(i=1;i<=9;i+=2)
printf("%f,",a[i]);
for(i=0;i<=10;i+=2)
printf("\n");
}
2、从键盘输入11个数存入一维数组中,将下标为奇数的元素值取倒数后重新存入该数组中,并输出所有元素。
a[i]=1/a[i]; /*因a[i]为float型,故不必写作1.0/a[i]*/
3、从键盘输入11个数存入一维数组中,将左半部分的元素值取倒数后重新存入该数组中,并输出所有元素。
解法1:
for(i=0;i<11;i++)
for(i=0;i<5;i++) /*左半部分下标为0到4*/
a[i]=1/a[i];
解法2:
#defineN11
{floata[N];
for(i=0;i scanf("%f",&a[i]);for(i=0;i a[i]=1/a[i]; for(i=0;i printf("%f,",a[i]);printf("\n");}4、从键盘输入11个数存入一维数组中,将右半部分的元素值取相反数后重新存入该数组中,并输出所有元素。解法1:main(){floata[11]; inti;for(i=0;i<11;i++) scanf("%f",&a[i]);for(i=6;i<11;i++) /*右半部分下标为6到10*/ a[i]=-a[i]; for(i=0;i<11;i++) printf("%f,",a[i]);printf("\n");}解法2:#defineN11main(){floata[N]; inti;for(i=0;i scanf("%f",&a[i]);for(i=(N+1)/2;i<=N-1;i++) /*右半部分下标为(N+1)/2到N-1*/ a[i]=-a[i]; for(i=0;i printf("%f,",a[i]);printf("\n");}5、求出斐波那契数列的前20项并输出。main(){longf[20]={1,1}; inti; for(i=2;i<=19;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<=19;i++) printf("%12ld",f[i]);}6、从键盘输入10个数,求出其中的最大数并输出。main(){inta[10],max,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } printf("max=%d\n",max);}7、从键盘输入10个数,求出其中的最大数和最小数并输出。解法1:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } min=a[0]; for(i=1;i<=9;i++) {if(a[i] min=a[i]; } printf("max=%d\n",max); printf("min=%d\n",min);}解法2:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
for(i=0;i a[i]=1/a[i]; for(i=0;i printf("%f,",a[i]);printf("\n");}4、从键盘输入11个数存入一维数组中,将右半部分的元素值取相反数后重新存入该数组中,并输出所有元素。解法1:main(){floata[11]; inti;for(i=0;i<11;i++) scanf("%f",&a[i]);for(i=6;i<11;i++) /*右半部分下标为6到10*/ a[i]=-a[i]; for(i=0;i<11;i++) printf("%f,",a[i]);printf("\n");}解法2:#defineN11main(){floata[N]; inti;for(i=0;i scanf("%f",&a[i]);for(i=(N+1)/2;i<=N-1;i++) /*右半部分下标为(N+1)/2到N-1*/ a[i]=-a[i]; for(i=0;i printf("%f,",a[i]);printf("\n");}5、求出斐波那契数列的前20项并输出。main(){longf[20]={1,1}; inti; for(i=2;i<=19;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<=19;i++) printf("%12ld",f[i]);}6、从键盘输入10个数,求出其中的最大数并输出。main(){inta[10],max,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } printf("max=%d\n",max);}7、从键盘输入10个数,求出其中的最大数和最小数并输出。解法1:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } min=a[0]; for(i=1;i<=9;i++) {if(a[i] min=a[i]; } printf("max=%d\n",max); printf("min=%d\n",min);}解法2:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
for(i=0;i printf("%f,",a[i]);printf("\n");}4、从键盘输入11个数存入一维数组中,将右半部分的元素值取相反数后重新存入该数组中,并输出所有元素。解法1:main(){floata[11]; inti;for(i=0;i<11;i++) scanf("%f",&a[i]);for(i=6;i<11;i++) /*右半部分下标为6到10*/ a[i]=-a[i]; for(i=0;i<11;i++) printf("%f,",a[i]);printf("\n");}解法2:#defineN11main(){floata[N]; inti;for(i=0;i scanf("%f",&a[i]);for(i=(N+1)/2;i<=N-1;i++) /*右半部分下标为(N+1)/2到N-1*/ a[i]=-a[i]; for(i=0;i printf("%f,",a[i]);printf("\n");}5、求出斐波那契数列的前20项并输出。main(){longf[20]={1,1}; inti; for(i=2;i<=19;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<=19;i++) printf("%12ld",f[i]);}6、从键盘输入10个数,求出其中的最大数并输出。main(){inta[10],max,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } printf("max=%d\n",max);}7、从键盘输入10个数,求出其中的最大数和最小数并输出。解法1:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } min=a[0]; for(i=1;i<=9;i++) {if(a[i] min=a[i]; } printf("max=%d\n",max); printf("min=%d\n",min);}解法2:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
4、从键盘输入11个数存入一维数组中,将右半部分的元素值取相反数后重新存入该数组中,并输出所有元素。
for(i=6;i<11;i++) /*右半部分下标为6到10*/
a[i]=-a[i];
for(i=0;i scanf("%f",&a[i]);for(i=(N+1)/2;i<=N-1;i++) /*右半部分下标为(N+1)/2到N-1*/ a[i]=-a[i]; for(i=0;i printf("%f,",a[i]);printf("\n");}5、求出斐波那契数列的前20项并输出。main(){longf[20]={1,1}; inti; for(i=2;i<=19;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<=19;i++) printf("%12ld",f[i]);}6、从键盘输入10个数,求出其中的最大数并输出。main(){inta[10],max,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } printf("max=%d\n",max);}7、从键盘输入10个数,求出其中的最大数和最小数并输出。解法1:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } min=a[0]; for(i=1;i<=9;i++) {if(a[i] min=a[i]; } printf("max=%d\n",max); printf("min=%d\n",min);}解法2:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
for(i=(N+1)/2;i<=N-1;i++) /*右半部分下标为(N+1)/2到N-1*/
for(i=0;i printf("%f,",a[i]);printf("\n");}5、求出斐波那契数列的前20项并输出。main(){longf[20]={1,1}; inti; for(i=2;i<=19;i++) f[i]=f[i-2]+f[i-1]; for(i=0;i<=19;i++) printf("%12ld",f[i]);}6、从键盘输入10个数,求出其中的最大数并输出。main(){inta[10],max,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } printf("max=%d\n",max);}7、从键盘输入10个数,求出其中的最大数和最小数并输出。解法1:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; } min=a[0]; for(i=1;i<=9;i++) {if(a[i] min=a[i]; } printf("max=%d\n",max); printf("min=%d\n",min);}解法2:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
5、求出斐波那契数列的前20项并输出。
{longf[20]={1,1};
for(i=2;i<=19;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<=19;i++)
printf("%12ld",f[i]);
6、从键盘输入10个数,求出其中的最大数并输出。
{inta[10],max,i;
for(i=0;i<=9;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=1;i<=9;i++)
{if(a[i]>max)
max=a[i];
printf("max=%d\n",max);
7、从键盘输入10个数,求出其中的最大数和最小数并输出。
{inta[10],max,min,i;
min=a[0];
{if(a[i] min=a[i]; } printf("max=%d\n",max); printf("min=%d\n",min);}解法2:main(){inta[10],max,min,i; for(i=0;i<=9;i++) scanf("%d",&a[i]); max=min=a[0]; for(i=1;i<=9;i++) {if(a[i]>max) max=a[i]; if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
min=a[i];
printf("min=%d\n",min);
max=min=a[0];
if(a[i] min=a[i]; } printf("max=%d,min=%d\n",max,min);}8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。解法1:main(){inta[11],b[11],i;for(i=0;i<11;i++) scanf("%d",&a[i]);for(i=0;i<11;i++) {b[i]=a[10-i]; printf("%d,",b[i]);}printf("\n");}解法2:#defineN11 main(){inta[N],b[N],i;for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
printf("max=%d,min=%d\n",max,min);
8、从键盘输入11个数存入一维数组a中,再将其中的值按相反的顺序存入数组b中并输出。
{inta[11],b[11],i;
{b[i]=a[10-i];
printf("%d,",b[i]);
{inta[N],b[N],i;
for(i=0;i scanf("%d",&a[i]);for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
for(i=0;i{b[i]=a[N-1-i]; printf("%d,",b[i]);}printf("\n");}8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。解法1:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);i=0;j=10;while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
{b[i]=a[N-1-i];
8A、从键盘输入11个数存入一维数组中,将其中的值前后倒置后重新存入该数组中并输出。
{inta[11],i,j,t;
for(i=0;i<=10;i++)/*用循环输入11个元素*/
i=0;j=10;
while(i{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/ i++;j--;}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:main(){inta[11],i,j,t;for(i=0;i<=10;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
{t=a[i];a[i]=a[j];a[j]=t;/*交换对应元素的值*/
i++;j--;
for(i=0;i<=10;i++)/*用循环输出11个元素*/
printf("%d,",a[i]);
for(i=0,j=10;i{t=a[i]; a[i]=a[j]; a[j]=t;/*交换对应元素的值*/}for(i=0;i<=10;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法3:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
{t=a[i];
a[i]=a[j];
a[j]=t;/*交换对应元素的值*/
解法3:
{inta[N],i,t;
for(i=0;i scanf("%d",&a[i]);for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
for(i=0;i{t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
a[i]=a[N-1-i];
a[N-1-i]=t;/*交换对应元素的值*/
for(i=0;i printf("%d,",a[i]);printf("\n");}9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。解法1:main(){inta[11],i,t;for(i=0;i<11;i++)/*用循环输入11个元素*/ scanf("%d",&a[i]);for(i=0;i<=4;i++) {t=a[i]; a[i]=a[i+6]; a[i+6]=t;/*交换对应元素的值*/}for(i=0;i<11;i++)/*用循环输出11个元素*/ printf("%d,",a[i]);printf("\n");}解法2:#defineN11 main(){inta[N],i,t;for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
9、从键盘输入11个数存入一维数组中,将该数组中左半部分与右半部分的值平移交换后重新存入该数组中并输出。
{inta[11],i,t;
for(i=0;i<11;i++)/*用循环输入11个元素*/
for(i=0;i<=4;i++)
a[i]=a[i+6];
a[i+6]=t;/*交换对应元素的值*/
for(i=0;i<11;i++)/*用循环输出11个元素*/
for(i=0;i scanf("%d",&a[i]);for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/{t=a[i];a[i]=a[i+(N+1)/2];a[i+(N+1)/2]=t;/*交换对应元素的值*/}for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
for(i=0;i<=N/2-1;i++) /*N为奇数偶数均可*/
a[i]=a[i+(N+1)/2];
a[i+(N+1)/2]=t;/*交换对应元素的值*/
for(i=0;i printf("%d,",a[i]);printf("\n");}10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。#defineN100 main(){floata[N],s,p; inti; s=0; for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
10、从键盘输入100个数存入一维数组中,求其和与平均值并输出。
#defineN100
{floata[N],s,p;
s=0;
for(i=0;i {scanf("%f",&a[i]); s=s+a[i]; }p=s/N;printf("s=%f,p=%f\n",s,p);}11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。解法1:#defineN200 main(){floata[N],s,p; intn=0; s=0; while(1) {scanf("%f",&a[n]); if(a[n]==-1)break; s=s+a[n]; n++; }p=s/n;printf("s=%f,p=%f\n",s,p);}解法2:#defineN200 main(){floata[N],s,p; intn=0; s=0;scanf("%f",&a[n]); while(a[n]!=-1) {s=s+a[n]; n++; scanf("%f",&a[n]); }p=s/n;printf("s=%f,p=%f\n",s,p);}12、从键盘输入10个数,用选择法按降序排序并输出。解法1:main(){inta[10],i,j,t;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){for(j=i+1;j<=9;j++) {if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
{scanf("%f",&a[i]);
s=s+a[i];
p=s/N;
printf("s=%f,p=%f\n",s,p);
11、从键盘输入一批正数存入一维数组中(以-1为结束标记),求其和与平均值并输出。
#defineN200
intn=0;
while
(1)
{scanf("%f",&a[n]);
if(a[n]==-1)break;
s=s+a[n];
n++;
p=s/n;
scanf("%f",&a[n]);
while(a[n]!
=-1)
{s=s+a[n];
12、从键盘输入10个数,用选择法按降序排序并输出。
{inta[10],i,j,t;
for(i=0;i<=8;i++)
{for(j=i+1;j<=9;j++)
{if(a[i] {t=a[i];a[i]=a[j];a[j]=t;} } }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法2:main(){inta[10],t,i,j,max,k;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/ for(j=i+1;j<=9;j++) {if(a[j]>max) {max=a[j];k=j;} } t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");} 解法3:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}解法4:改进的选择法main(){inta[10],t,i,j,max;for(i=0;i<=9;i++) scanf("%d",&a[i]);for(i=0;i<=8;i++){max=i; /*max保存本轮最大数的下标*/ for(j=i+1;j<=9;j++) {if(a[j]>a[max]) max=j; } if(max!=i) /*若本轮最大数不是a[i]*/ {t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/ }for(i=0;i<=9;i++) printf("%d,",a[i]);printf("\n");}12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。main(){intp[10],i,j,t; chara[10][30],m[30]; for(i=0;i<=9;i++) gets(a[i]);/*输入姓名存入数组a的第i行*/for(i=0;i<=9;i++) scanf("%d",&p[i]);/*输入成绩*/ } for(i=0;i<=8;i++) {for(j=i+1;j<=9;j++) {if(p[i] {t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/ strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/ } } } for(i=0;i<=9;i++) {printf("%s,",a[i]); /*输出姓名*/ printf("%d\n",p[i]);/*输出成绩*/ }}13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/ {for(i=0;i<=2;i++)/*内循环控制行号*/ {printf("%6d",a[i][j]);} printf("\n"); }}14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。main(){inta[3][4],i,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%d",&a[i][j]); for(i=2;i>=0;i--) {for(j=3;j>=0;j--) {printf("%6d",a[i][j]);} printf("\n"); }}15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。main(){floata[3][3]; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j<=i;j++) {a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/ } for(i=0;i<=2;i++) {for(j=0;j<=2;j++) {printf("%f,",a[i][j]);} printf("\n"); }}15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。main(){inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j; for(i=0;i<3;i++)/*按行给数组b的元素赋值*/ {for(j=0;j<2;j++)/*并分行显示数组b内容*/ {b[i][j]=a[j][i]; printf("%6d",b[i][j]); } printf("\n");/*注意该语句的位置*/ }}16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。main(){inti,j,max; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j];} printf("max=%d\n",max);}16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。main(){inti,j,max,row,colum; inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}}; max=a[0][0]; row=0; colum=0; for(i=0;i<=2;i++) for(j=0;j<=3;j++) if(a[i][j]>max) {max=a[i][j]; row=i; colum=j; } printf("max=%d,row=%d,colum=%d\n",max,row,colum);}16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) s=s+a[i][i];/*主对角线元素行列号相同*/ printf("s=%f\n",s);} 17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。main(){floata[3][3],s=0; inti,j; for(i=0;i<=2;i++)/*外循环控制行号*/ for(j=0;j<=2;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=2;i++) {for(j=0;j s=s+a[i][j]; } printf("s=%f\n",s);} 18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。main(){floata[4][4],s=0; inti,j; for(i=0;i<=3;i++)/*外循环控制行号*/ for(j=0;j<=3;j++)/*内循环控制列号*/ scanf("%f",&a[i][j]); for(i=0;i<=3;i++) {for(j=0;j<=3;j++) {if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/ s=s+a[i][j]; } } printf("s=%f\n",s);} 19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2]; inti,j; for(i=0;i<3;i++) {for(j=0;j<2;j++) {c[i][j]=a[i][j]+b[i][j]; printf("%6d",c[i][j]); } printf("\n"); }} 20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。main(){inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2]; inti,j,k; for(i=0;i<3;i++) {for(j=0;j<4;j++) {c[i][j]=0; for(k=0;k<2;k++) {c[i][j]=c[i][j]+a[i][k]*b[k][j];} printf("%6d",c[i][j]); } printf("\n"); }} 21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。main(){floatg[6][5],s[6],a[6]; inti,j; for(i=0;i<6;i++) {s[i]=0; /*s[i]是第i个人的总分*/ for(j=0;
{t=a[i];a[i]=a[j];a[j]=t;}
{inta[10],t,i,j,max,k;
{max=a[i];k=i; /*max保存本轮最大数,k保存其下标*/
for(j=i+1;j<=9;j++)
{if(a[j]>max)
{max=a[j];k=j;}
t=a[i];a[i]=a[k];a[k]=t; /*将本轮最大数与a[i]互换*/
改进的选择法
{inta[10],t,i,j,max;
{max=i; /*max保存本轮最大数的下标*/
{if(a[j]>a[max])
max=j;
t=a[i];a[i]=a[max];a[max]=t; /*将本轮最大数与a[i]互换*/
解法4:
if(max!
=i) /*若本轮最大数不是a[i]*/
{t=a[i];a[i]=a[max];a[max]=t;} /*将本轮最大数与a[i]互换*/
12A、从键盘输入10个学生的姓名和成绩,用选择法按成绩降序排序并输出(要求姓名和成绩对应关系保持不变)。
{intp[10],i,j,t;
chara[10][30],m[30];
gets(a[i]);/*输入姓名存入数组a的第i行*/
scanf("%d",&p[i]);/*输入成绩*/
{if(p[i]
{t=p[i];p[i]=p[j];p[j]=t;/*交换成绩*/
strcpy(m,a[i]);strcpy(a[i],a[j]);strcpy(a[j],m);/*交换姓名*/
{printf("%s,",a[i]); /*输出姓名*/
printf("%d\n",p[i]);/*输出成绩*/
13、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按列优先次序输出。
{inta[3][4],i,j;
for(i=0;i<=2;i++)/*行优先次序,外循环控制行号*/
for(j=0;j<=3;j++)/*内循环控制列号*/
scanf("%d",&a[i][j]);
for(j=0;j<=3;j++)/*列优先次序,外循环控制列号*/
{for(i=0;i<=2;i++)/*内循环控制行号*/
{printf("%6d",a[i][j]);}
14、从键盘输入一组数据按行优先次序存入数组a[3][4]中,再按相反的次序输出。
for(i=0;i<=2;i++)/*外循环控制行号*/
for(i=2;i>=0;i--)
{for(j=3;j>=0;j--)
15、从键盘输入一组数据存入数组a[3][3]中,再将主对角线及其下方元素值取倒数后重新存入该数组中,并输出所有元素。
{floata[3][3];
inti,j;
for(j=0;j<=2;j++)/*内循环控制列号*/
scanf("%f",&a[i][j]);
for(i=0;i<=2;i++)
{for(j=0;j<=i;j++)
{a[i][j]=1/a[i][j];} /*因a[i][j]为float型,故不必写作1.0/a[i][j]*/
{for(j=0;j<=2;j++)
{printf("%f,",a[i][j]);}
15A、已知一个二维数组a[2][3]={{1,2,3},{4,5,6}},将其转置后存入另一个二维数组b[3][2]中。
{inta[2][3]={{1,2,3},{4,5,6}},b[3][2],i,j;
for(i=0;i<3;i++)/*按行给数组b的元素赋值*/
{for(j=0;j<2;j++)/*并分行显示数组b内容*/
{b[i][j]=a[j][i];
printf("%6d",b[i][j]);
printf("\n");/*注意该语句的位置*/
16A、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值并输出。
{inti,j,max;
inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(j=0;j<=3;j++)
if(a[i][j]>max)
{max=a[i][j];}
16B、已知一个3×4的矩阵a[3][4]={{1,2,3,4},{9,8,7,6},{-9,10,-5,2}},找出其中最大的元素值及其行列号并输出。
{inti,j,max,row,colum;
row=0;
colum=0;
{max=a[i][j];
row=i;
colum=j;
printf("max=%d,row=%d,colum=%d\n",max,row,colum);
16、从键盘输入一组数据存入数组a[3][3]中,求其主对角线元素之和。
{floata[3][3],s=0;
s=s+a[i][i];/*主对角线元素行列号相同*/
printf("s=%f\n",s);
17、从键盘输入一组数据存入数组a[3][3]中,求其主对角线下方元素之和。
{for(j=0;j
s=s+a[i][j];
18、从键盘输入一组数据存入数组a[4][4]中,求其四周元素之和。
{floata[4][4],s=0;
for(i=0;i<=3;i++)/*外循环控制行号*/
for(i=0;i<=3;i++)
{for(j=0;j<=3;j++)
{if(i==0||i==3||j==0||j==3) /*行列号等于0或者等于3*/
19、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},求其和矩阵c[3][2]并输出。
{inta[3][2]={1,3,5,2,4,6},b[3][2]={9,8,7,3,2,1},c[3][2];
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
{c[i][j]=a[i][j]+b[i][j];
printf("%6d",c[i][j]);
20、已知两个矩阵a[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},求其积矩阵c[3][4]并输出。
{inta[3][2]={1,3,5,2,4,6},b[2][4]={9,8,7,3,2,1,5,6},c[3][2];
inti,j,k;
{for(j=0;j<4;j++)
{c[i][j]=0;
for(k=0;k<2;k++)
{c[i][j]=c[i][j]+a[i][k]*b[k][j];}
21、从键盘输入6个学生5门课程的成绩,求每个人的总分与平均分。
{floatg[6][5],s[6],a[6];
for(i=0;i<6;i++)
{s[i]=0; /*s[i]是第i个人的总分*/
for(j=0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1