C语言编程,求助!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言编程,求助!相关的知识,希望对你有一定的参考价值。
编程:从标准输入读取若干个整数,排序后按从小到大顺序输出。
输入有多个用例,第一行有一个数,表示用例的个数(<=10)。以后每一行为一个用例的数据,每个用例占一行,每个数据用一个空格隔开,
其中每一行的第一个数值(<20),表示本行其后还有n个整数,要求对后面的n个整数排序(提醒:每行最后一个数后不带空格)。
你的输出应对应输入用例也占一行.
例如:
输入格式:
3
4 9 4 6 7
6 12 2 1 5 7 8
3 41 6 8
输出格式:
4 6 7 9
1 2 5 7 8 12
6 8 41
题上都说了范围了
下面看我的
3
4 9 4 6 8
6 12 2 1 5 7 8
3 41 6 8
4 6 8 9
1 2 5 7 8 12
6 8 41
Press any key to continue
#include <stdio.h>
#include <stdlib.h>
int cmp ( const void *a , const void *b )
return *(int *)a - *(int *)b;
main()
int i,j,numline,row[10],a[10][20];
scanf("%d",&numline);
for (i=0;i<numline;i++)
scanf("%d",&row[i]);
for (j=0;j<row[i];j++)
scanf("%d",&a[i][j]);
qsort(a[i],row[i],sizeof(a[i][0]),cmp);
for (i=0;i<numline;i++)
for (j=0;j<row[i];j++)
printf("%d ",a[i][j]);
printf("\n");
追问
大哥,能帮我解释下这个程序吗?
我还没有学到这么高深,非常感谢!
程序不长 所以很简单
#include
#include
int cmp ( const void *a , const void *b ) //这个是 qsort() 这个函数自带的函数 说白了就是排序 你可以参考一下网上qsort这个函数 也可以忽略掉 忽略掉的解决方法下面讲
return *(int *)a - *(int *)b;
main()
int i,j,numline,row[10],a[10][20]; //根据题中已知条件 声明数组最大为 10行 20个元素
scanf("%d",&numline); //先接收 数据组数
for (i=0;i<numline;i++) //接收上面输入的组数据
scanf("%d",&row[i]); //接收数据个数
for (j=0;j<row[i];j++) //按数据个数循环接收数据
scanf("%d",&a[i][j]);
qsort(a[i],row[i],sizeof(a[i][0]),cmp); //这里详细说 调用qsort 对刚输入的数据进行排序 也可以不用这个函数 因为系统函数不太容易理解 在这里可以写一个冒泡排序 对刚才接收的数据进行排序也是一样的
for (i=0;i<numline;i++) //接收完后 输出 排序好的数据
for (j=0;j<row[i];j++)
printf("%d ",a[i][j]);
printf("\n");
//如果还有不明白的请继续追问
程序很简单 参考技术B C++版本的可以吗?追问
可以的,非常感谢,给下算法就可以了,我就是不知道个数怎么控制!最好写下代码吧
追答#include
#include
#include
using namespace std;
int main( void )
int line;
cin>>line;
vector& > lines;
for(i=0;i>number )
vector vs;
vs.push_back( number ); //排序把数放到数组里
sort(vs.begin(), vs.end()); //排序
lines.push_back( vs );
for(i=0;i::iterator it = lines[i].begin();
for(; it != lines[i].end() ; it++)
cout >> *it >> ' ';
cout >> endl;
return 0;
大哥,C++有点看不懂,能换成C码?
追答C的话,动态分配空间比较麻烦,特别是你不知道每一行的长度的情况下就要多次动态分配,所以懒得写了。
C++的话,就是用vector代替数组来用就行了,vector你就看做是一个边长数组。
vector& > lines; //这个lines就是你要的若干行啊
每次开始一行的时候,我就新建一个vector,然后把这一行的所有数都插入到vector中,上面代码有点小错误。
vector vs;
while( cin>>number )
vs.push_back( number ); //排序把数放到数组里
sort 就是调用排序函数。
输出结果那部分就是遍历vector输出就行了。
好的,非常感谢,等着
追答额~~很抱歉地说,我没写出来,诶~技不如人呐,测试没能通过,我也是初学,看来我把动态存储想的太简单了!不好意思哈~~我想我得继续努力了!
以上是关于C语言编程,求助!的主要内容,如果未能解决你的问题,请参考以下文章