解题思路:这里主要是多行问题。如果单行很简单了。
使用二维数组,一行表示一组输入数据。其中第一个(a[i][0])保存的是这一组总共有多少个数据,真正的数据从a[i][1]开始
注意事项: 二维数组的第一列是不参与排序的。
参考代码:
#include <stdio.h>
#include <math.h>
void swap(int a[100][100],int n)
{ int i,j,k,t;
for(k=0;k<n;k++) //k表示组(行)
for(i=1;i<a[k][0];i++)//每一行的第一个数保存的是该行有效数据,不参与排序
for(j=1;j<=a[k][0]-i;j++)
{if (abs(a[k][j])>abs(a[k][j+1]))
{ t=a[k][j];
a[k][j]=a[k][j+1];
a[k][j+1]=t;
}
}
}
int main()
{ int a[100][100],i=0,j=0,k;
do
{j=0;
scanf("%d",&a[i][0]);//每一行第一个数据为每一行输入的个数n
if(a[i][0]==0) break;//按题意,当输入0时退出输入状态
do
{j++;
scanf("%d",&a[i][j]); //从a[i][1]开始输入需要排序的数据
}while(getchar()!='\n');//每一行遇到回车符结束该组数据的输入
i++;//准备下一行,循环结束时i中为输入的行数
}while(1); //输入
swap (a,i); //自定义了一给函数来交换,将行数i传递给形参n
//输出
for(k=0;k<i;k++)//i中保存了输入的行数
{ for(j=1;j<=a[k][0];j++)//a[k][0]中保存了每一行的数据个数n, a[k][0]不用输出
printf("%d ",a[k][j]);
printf("\n");//每输出一行,换行一下
}
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题8.8 (C++代码)浏览:551 |
C语言训练-角谷猜想 (C++代码)(3N+1问题)浏览:1750 |
汽水瓶 (C语言代码)浏览:607 |
【偶数求和】 (C语言代码)浏览:646 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:483 |
printf基础练习2 (C语言代码)浏览:646 |
C语言训练-数字母 (C语言代码)浏览:608 |
DNA (C语言代码)浏览:749 |
剪刀石头布 (C语言代码)浏览:1436 |
C语言训练-大、小写问题 (C语言代码)浏览:681 |