C语言数组 输入n个数据(n由操作者从键盘输入,n<20)怎么输,要排序

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i,j;
int a[6];
char ans;
while(1)
{

for(i=0; i<5; i++)
scanf("%d",&a[i]);
if(a[0]>a[1])
{
for(i=0; i<4; i++)
for(j=i+1; j<5; j++)
{
if(a[i]<a[j])
{
int t=a[i];//大小
a[i]=a[j];
a[j]=t;
}
}
for(i=0; i<5; i++)
printf("%d ",a[i]);
printf("\n");
printf("Input a new number: ");
scanf("%d",&a[5]);
for(i=0; i<5; i++)
for(j=i+1; j<=5; j++)
{
if(a[i]<a[j])
{
int t=a[i];//大小
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i<6; i++)
printf("%d ",a[i]);
printf("\n");
}
else
{
for(i=0; i<4; i++)
for(j=i+1; j<5; j++)
{
if(a[i]>a[j])
{
int t=a[i];//大小
a[i]=a[j];
a[j]=t;
}
}
for(i=0; i<5; i++)
printf("%d ",a[i]);
printf("\n");
printf("Input a new number: ");
scanf("%d",&a[5]);
for(i=0; i<5; i++)
for(j=i+1; j<=5; j++)
{
if(a[i]>a[j])
{
int t=a[i];//大小
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i<6; i++)
printf("%d ",a[i]);
printf("\n");
}
printf("\n按Y键继续或按任意键退出");
ans=getch();
if (ans!='y'&&'Y')
break;
}
}
我自己写的程序只能输入固定的五个数据,请大家帮忙改一下,可以输入小于等于20个数据!
在线等,谢谢大家!

第1个回答  2012-05-26
数组的大小可以先固定为20,然后键盘输入一个n来确定输入数据的个数,然后这里用个循环,从键盘上依次给数组中的值赋值,最后用一个排序的函数来改变数组中的值就可以了。追问

详细程序给我给一下,谢谢

第2个回答  2012-05-26
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}

int main ()
{
int n;
int i;
int *values;
printf("请输入n:");
scanf("%d",&n);
assert(n>0);
values=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)scanf("%d",values+i);
qsort (values, n, sizeof(int), compare);
for (i=0; i<n; i++)printf ("%d ",values[i]);
printf("\n");
free(values);
system("pause");
return 0;
}本回答被网友采纳

相关了解……

你可能感兴趣的内容

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