C语言;编写sort(),使二维数组偶数行从小到大输出,奇数行从大到小输出,编写完错误如下,怎样修改?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言;编写sort(),使二维数组偶数行从小到大输出,奇数行从大到小输出,编写完错误如下,怎样修改?相关的知识,希望对你有一定的参考价值。
主函数是试卷考题原有的部分,但是编写sort()后吧主函数也抄上,用VS2005编译时,如上错误。
#include<stdio.h>
void sort(int a[10][10],int n)
int m,i,j,t;
if(m%2==0)
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[m][i]>a[m][j])
t=a[m][i];
a[m][i]=a[m][j];
a[m][j]=t;
else
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[m][i]<a[m][j])
t=a[m][i];
a[m][i]=a[m][j];
a[m][j]=t;
int main()
int n,i,j;
int data[10][10];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",data[i][j]);
sort(data,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",data[i][j]);
printf("\n");
return 0;
void sort(int a[10][10],int n)
int m,i,j,t;
for(m=0;m<n;++m)
for(i=0;i<n;i++)
for(j=0;j<n-i-1;j++)
if(m%2)
if(a[m][j]>a[m][j+1])
t=a[m][j];
a[m][j]=a[m][j+1];
a[m][j+1]=t;
else
if(a[m][j]<a[m][j+1])
t=a[m][j];
a[m][j]=a[m][j+1];
a[m][j+1]=t;
//此处少
int main()
int n,i,j;
int data[10][10];
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&data[i][j]);//
sort(data,n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
printf("%d",data[i][j]);//
printf("\n");
return 0;
本回答被提问者和网友采纳 参考技术B dsgdgsdg 参考技术C 如果将sort函数改成这样void sort(int data[][], int n), 为什么就不行呢?
如何用c语言给输入的二维数组每一行排序
可以用stdlib.h中的qsort函数如果是int a[10][10]的话
排序第i行
qsort(a[i],10,sizeof(int),comp);
就可以了,comp是一个比较函数
int comp(const void *m1, const void *m2)
return *(int*)m1-*(int*)m2;
这样就可以排序了,如果要反序,就将comp中的m1和m2互换,可以试试,如果不对可以Hi我 参考技术A #include <stdio.h>
void main()
int a[3][4],i,j,t,m,x;
printf("输入一3×4二维整型数组:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",*(a+i)+j);
for(x=1;x<5;x++)
for(i=0;i<3;i++)
for(t=0;t<3;t++)
if(*(*(a+i)+t+1)<*(*(a+i)+t))
m=*(*(a+i)+t+1);
*(*(a+i)+t+1)=*(*(a+i)+t);
*(*(a+i)+t)=m;
printf("每行按从小到大的排序后为:\n");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
printf("%6d",*(*(a+i)+j));
printf("\n");
本回答被提问者采纳 参考技术B 这是最基本的排序算法
依次比较两个把大的放在前面
循环
循环
就可以了
以上是关于C语言;编写sort(),使二维数组偶数行从小到大输出,奇数行从大到小输出,编写完错误如下,怎样修改?的主要内容,如果未能解决你的问题,请参考以下文章