C语言题目 输入一组数字。 数字个数不确定。然后将其从大到小排序。。求代码 谢谢

如题所述

/* 在命令 行输入 排序的数字 */

#include<stdio.h>
#include<stdlib.h>
void sort_(float *,int);
void printf_(char *,float *);
int
main(int argc ,char *argv[])
{ int i;
int b=0;
float *ptr;
char *endptr;
if(argc == 1)
{
printf("请输入要排序的数字\n");
exit(1);
}
if( (ptr = malloc(sizeof(float) * (argc-1)) ) == NULL){
perror("malloc \n");
exit(1);
}
/*将字符串 转变为数字*/
for( i = 1; i<argc ; i++)
{
ptr[b] = strtof(argv[i],&endptr);
if(strcmp(argv[i],endptr) == 0)
{printf("你输入的%s 是错误的\n",argv[i]);
continue;
}
b++;
}
ptr[b]='\0';
/*排序所得数字串,把输入错的丢弃*/
sort_(ptr,b);
printf_("最后的排序结果是 \n",ptr);
return(0);
}
void
printf_(char *str , float *ptf)
{
printf("%s",str);
int i;
for(i = 0; ptf[i] != '\0' ; i++)
printf("%12.3f",ptf[i]);
printf("\n");
}

/*冒泡排序*/
void
sort_(float* a,int n)//n为数组a的元素个数
{int i,j;

float temp;
for(j=0;j<n-1;j++)
for(i=0;i<n-1-j;i++)
{
if(a[i]<a[i+1])//数组元素大小按升序排列
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-23
以什么为数字的结束符?追问

回车

追答#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int v;
struct node *next;
}node,*list;

list insert(int v, list h)
{
list p = malloc(sizeof *p), p1, last = NULL;
p->v = v;

p1 = h;
while(p1)
{
if(p1->v < v) break;
last = p1;
p1 = p1->next;
}
if(last == NULL) 
{
p->next = h;
h = p;
}
else 
{
last->next = p;
p->next = p1;
}
return h;
}
void print(list h)
{
while(h)
{
printf("%d ", h->v);
h = h->next;
}
}

void destroy(list h)
{
if(h == NULL) return;
destroy(h->next);
free(h);
}
int main()
{
list h = NULL;
int v;
do
{
scanf("%d",&v);
h = insert(v, h);
}while(getchar()!='\n');
print(h);
destroy(h);
return 0;
}

你试试

追问

我要的是数组

不是连表

追答

你又不说

追问

那我自己在看看

追答#include <stdio.h>
int l[10000];
int main()
{
int n = 0,i, j, t;
do
{
scanf("%d",&l[n++]);
}while(getchar()!='\n');
for(i = 0; i < n-1; i ++)
for(j = i+1; j < n; j ++)
{
if(l[i] < l[j])
{
t = l[i];
l[i] = l[j];
l[j] = t;
}
}
for(i = 0; i < n; i ++)
printf("%d ", l[i]);
printf("\n");

}

追问

嗯嗯 我也会了

谢谢啦

本回答被提问者采纳
第2个回答  2015-04-23
给邮箱,我发给你。。。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网