#include "stdio.h"
main()
{
unsigned int m[2][4],z,t;
unsigned int j,k;
printf("input 8 numbers:\n");
for (j=0;j<2;j++)
for (k=0;k<4;k++)
scanf ("%d",&m[j][k]);
for (j=0;j<2;j++)
{
for (k=0;k<4;k++)
printf("%5d",m[j][k]);
printf("\n");
}
for (int z=0;z<2;z++)
{
for (int j=0;j<2;j++)
{
for(k=0;k<4-1-j;k++)
{
if (m[z][k]>m[z][k+1])
{
int t=m[z][k];
m[z][k]=m[z][k+1];
m[z][k+1]=t;
}
}
}
}
printf("Sort results:\n");
for (k=0;k<4;k++)
printf("%d",m[z][k]);
}
可以问一下,这个二维数组排序是哪里不对吗?每次输值进去都不能进行排序。
#include "stdio.h"
int main()
{
unsigned int m[2][4],z,t;
unsigned int j,k;
printf("input 8 numbers:\n");
for (j=0; j<2; j++)
for (k=0; k<4; k++)
scanf ("%d",&m[j][k]);
for (j=0; j<2; j++)
{
for (k=0; k<4; k++)
printf("%5d",m[j][k]);
printf("\n");
}
for (int z=0; z<2; z++)
{
for (int j=0; j<4-1; j++)
{
for(k=0; k<4-1-j; k++)
{
if (m[j][k]>m[z][k+1])
{
int t=m[z][k];
m[z][k]=m[z][k+1];
m[z][k+1]=t;
}
}
}
}
for (int z=0; z<4; z++)
{
for (int j=0; j<2-1; j++)
{
for(k=0; k<2-1-j; k++)
{
if (m[k][z]>m[k+1][z])
{
int t=m[k][z];
m[k][z]=m[k+1][z];
m[k+1][z]=t;
}
}
}
}
printf("Sort results:\n");
for (k=0; k<2; k++) {
for (z=0; z<4; z++)
printf("%5d",m[k][z]);
printf("\n");
}
return 0;
}
供参考:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define LINE 2 //行数
#define COLUMN 4 //列数
void bubble_sort(int a[], int n)
{
int i, j, temp;
for (j = 0; j < n - 1; j++)
for (i = j + 1; i < n; i++)
{
if (a[i] < a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
int main()
{
int arr[LINE][COLUMN] = { 0 };
int i, j;
srand((unsigned int)time(NULL));
for (i = 0; i < LINE; i++)
{
for (j = 0; j < COLUMN; ++j) {
arr[i][j] = rand() % 100 + 1;//利用随机数生成100以内整数
//scanf("%d",&arr[i][j]);//手工输入测试数据
}
bubble_sort(arr[i], COLUMN);//输入完一行,就对该行进行排序
}
printf("输出按行排序后结果:\n");
for (i = 0; i < LINE; i++)
{
for (j = 0; j < COLUMN; ++j) {
printf("%4d ", arr[i][j]);
}
printf("\n");
}
return 0;
}