如题所述
/* 在命令 行输入 排序的数字 */
#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;
}
}
}
#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 <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;
}
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");
}追问
回车
追答#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
给邮箱,我发给你。。。