C语言编程:任意输入N个数,将它们由大到小排序输出。

C语言编程:任意输入N个数,将它们由大到小排序输出。

图丁丁的回答是错的,没有实现任意输入n个数的要求。
#include<stdio.h>
#include<stdlib.h>
int max=0;
struct listnode
{
int value;
struct listnode *nextptr;
};
typedef struct listnode LIST;
typedef LIST * LISTPTR;
void swap(LISTPTR,LISTPTR);
void insert(LISTPTR *sptr,int a)
{
LISTPTR newptr,preptr;
newptr=malloc(sizeof(LIST));
if(newptr!=NULL){
max+=1;
newptr->value=a;
newptr->nextptr=NULL;
if((*sptr)==NULL)
*sptr=newptr;
else{
preptr=(*sptr);
while(preptr->nextptr!=NULL)
preptr=preptr->nextptr;
preptr->nextptr=newptr;
}
}
else
printf("error\n");
}
void bobble(LISTPTR sptr,int total)
{
int i;
LISTPTR preptr,couptr;
preptr=sptr;
couptr=sptr->nextptr;
for(i=1;i<=total-1;i++){
while(couptr!=NULL){
if((preptr->value)<(couptr->value))
swap(preptr,couptr);
preptr=couptr;
couptr=couptr->nextptr;
}
preptr=sptr;
couptr=sptr->nextptr;
}
}
void swap(LISTPTR aptr,LISTPTR bptr)
{
int temp;
temp=aptr->value;
aptr->value=bptr->value;
bptr->value=temp;
}
void instruction(void)
{
printf("1.insert a value\n");
printf("2.print listnode\n");
printf("3.exit\n");
}
void printlist(LISTPTR sptr)
{
LISTPTR preptr;
preptr=sptr;
while(preptr!=NULL){
printf("%d ",preptr->value);
preptr=preptr->nextptr;
}
printf("\n");
}
int main()
{
int a,b;
LISTPTR startptr=NULL;
instruction();
scanf("%d",&a);
while(1){
switch(a){
case 1:
scanf("%d",&b);
insert(&startptr,b);
break;
case 2:
bobble(startptr,max);
printlist(startptr);
break;
case 3:
exit(0);
default:
printf("error\n");
break;
}
instruction();
scanf("%d",&a);
}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-01
# include <stdio.h>
# define N 10
/*N为输入的数字个数*/
main()
{
int i,m,j;
int a[N];
printf("please input the numbles:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{ m=a[i]; a[i]=a[j];a[j]=m;}
for(i=0;i<N;i++)
printf("%d ",a[i]);
getch();
}
第2个回答  2008-04-19
# include <stdio.h>
# define N 10
/*N为输入的数字个数*/
main()
{
int i,m,j;
int a[N];
printf("please input the numbles:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{ m=a[i]; a[i]=a[j];a[j]=m;}
for(i=0;i<N;i++)
printf("%d ",a[i]);
getch();
}本回答被提问者采纳
第3个回答  2019-08-05
#
include
<stdio.h>
#
define
N
10
/*N为输入的数字个数*/
main()
{
int
i,m,j;
int
a[N];
printf("please
input
the
numbles:\n");
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
m=a[i];
a[i]=a[j];a[j]=m;}
for(i=0;i<N;i++)
printf("%d
",a[i]);
getch();
}

c语言数组编程,输入n个整数,将这n个数按绝对值由大到小排序输出
else printf("%d\n",a[n-1]);} return0;}

c语言数组编程,输入n个整数,将这n个数按绝对值由大到小排序输出
int i,n,j,num,swap; printf("input the size of array:\\n"); scanf("%d",&n); int a[n]; for(i=0; i<n; i++) { printf("input the %d number:\\n",i+1); scanf("%d",&a[i]); } for(i=0; i<n; i++) { printf("%d ",a[i]); } printf("\\n"); for(i=0; i<n-...

C语言求算法,任意输入n个数(n为变量) 输出这几个数按从大到小排名时所 ...
printf("从大到小的位序为:\\n"); for(i = 0; i < n; i++) printf("%-4d", t[i]); printf("\\n原来的数据为:\\n"); for(i = 1; i <= n; i++) printf("%-4d", s[i]); printf("\\n");} 运行结果 ...

C语言 从键盘输入n个字符串,从大到小排序输出
include <stdio.h> include<string.h> int main(){int i,j,n;char s[100][20],t[20];scanf("%d",&n);for(i=0;i<n;i++)scanf("%s",s[i]);printf("=== After sort ===\\n");for(i=0;i<n-1;i++)for(j=0;j<n-1-i;j++)if(strcmp(s[j],s[j+1])>0){strcpy...

用c语言 任意输入n个数,输出其中最大数和最小数,并输出它们在序列中的...
intmain(){ inti,j,n,max_pos=0,min_pos=0;int*a;printf("Pleaseinputmaximumnumber:");scanf("%d",&n);a=(int*)malloc(sizeof(int)*n);printf("Pleaseinput%dnumbersnow:\\n",n);for(i=0;i<n;i++){ scanf("%d",&a[i]);if(a[max_pos]a[i])min_pos=i;} printf("Them...

任意输入n个数,输出其中最大值与最小值,并输出它在序列中的位置!C语 ...
—编程思想是定义五个变量,分别保存当前读入的值,以及保存最大值和最小值以及相应编号的变量。使用do while循环读入变量,首先把最大值和最小值初始化成第一个读入的值,后续的循环就是判断当前读入的值是否比最大值大或者最大值小,从而实时修改相应的值即可。最后设立一个结束的标识符。

c语言如何输入一个正整数N,再输入N个整数,按从小到大的顺序输出?
c语言程式设计:阵列:输入一个正整数n,再输入n个正整数并从大到小排序输出。 采用冒泡法,C语言书上应该有这样的例子的。原理其实很简单,就是将每个数依次比较,每次取最大的数,全部比较完成,就输出来,然后再比较剩下的。C语言 从键盘输入10个整数,将这10个整数按从小到大的顺序输出。 #...

C语言编程:将输入的N个整数采用冒泡排序按照从小到大的顺序排列并且输出...
void BubbleSort(int L[]) { \/\/ 对顺序表L作冒泡排序 int i,j,fini = 0;for (i = 1; i < n && !fini; i++) { fini = 1;for (j = 1; j <= n-i; j++)if (L[j] > L[j+1]) { L[0] = L[j];L[j] = L[j+1];L[j+1] = L[0];fini = 0;} } } ...

c语言编程:输入一个数字n,再输入n个数,将这个n个数从小到大输出。
int n,i;scanf(输入n的值);\/\/输入个数 int array;\/\/把需排序的数列定义为数组。这里需要指出的是,如果定义为array[n-1],因为你的n在编译时未赋值,所以编译是不会通过的。于是这里直接将它定义为一个指针,赋值方法跟数组相同。但是个数太多就不能这么做了 for(i = 0;i < n;i++){ \/...

c语言中从键盘输入N个字符串,将字符串按从小到大的顺序排列并输出
代码如下:define N 10 int main(){char str[N][100]; int i,j; for(i = 0; i < N; i ++) scanf("%s",str[i]); for(i = 0; i < N-1; i ++) { for(j = i+1; j < N; j ++){ if(strcmp(str[i],str[j])>0) { char temp[100]; strcpy(temp,str[i]);...

相似回答