您所在的位置:Seago-Microsoft Windows>>Windows管理脚本>> 急 两道基本C语言编程题

急 两道基本C语言编程题

作者:menface 来源:新浪爱问 日期:2008-04-21 

编写一个程序 求数组a 的最大值 和第二最大值 并分别存放于a【0】 ,a【1】 中 假设数组中元素各不相同。

有 int a【2】【3】,b【3】【2】 请把a 数组的行列互换存入b数组中 电脑问题网给出的最佳答案 第1题:我用选择法排序。(我的例子用了10个数)选择法就是先将10个数中最大的数与a[0]对换,再将a[1]到a[9]中最大的数与a[1]对换……每比较一轮,找出一个未经排序数中最大的一个,共比较9轮。
main()
{int a[10]={3,9,688,847,584,44,97,14,89,27};
int i,j,max,t;
for(i=0;i<9;i )
{max=i;
for(j=i 1;j<10;j )
if(a[j]>a[max]) max=j;
t=a[i];a[i]=a[min];a[min]=t;
}
printf("after paixu\n");
for(i=0;i<10;i )
printf("%d ",a[i]);
printf("\n");
}

第2题:
main()
{int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
for(i=0;i<2;i )
{for(j=0;j<3;j )
{printf("=",a[i][j]);
b[j][i]=a[i][j];
}
}
printf("\narray b:\n");
for(i=0;i<3;i )
for(j=0;j<2;j )
printf("=",b[i][j]);
}

其他回答   这在大学的教材书应该会有啊!
思路如下(不知道下面的语法对不对:P):
1、循环数组所有值,
if(数组当前值>=a[1])
if(数组当前值>=a[0])
a[0]=数组当前值;
else
a[1]=数组当前值;

2、两个循环
一个循环2,一个循环3
在循环内交叉变量的顺序。
程序伪码:
1)
int b;
//确保a[0]>a[1]
if(a[0]<a[1]){
b=a[0];
a[0]=a[1];
a[1]=b;
}

//检索数组,查找最大数和第二大数
for(int i=2;i<a.length;i ){
if(a[i]>a[0]) a[0]=a[i];
else if(a[0]>a[i]>a[1]) a[1]=a[i];
}

2)
for(int i=0;i<3;i ){
for(int j=0;j<2;j ){
b[i][j]=a[j][i];
}
}

第一个就是个排序哈
双重循环,依次看相邻两数谁大谁小,然后有必要的话,两数交换植;
第二题的思路就是b[i][j]=a[j][i]