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
#include<stdio.h>
#include<malloc.h>
void main()
{
int n = 1, temp = 0;
int i = 0, j = 0;
printf("请输入个数n(n<20):");
scanf("%d",&n);
int *ptr = (int *)malloc(sizeof(int) * n);
printf("请输入%d个数:\n",n);
for(i = 0; i < n; i++)
scanf("%d",(ptr + i));
for(i = 0; i < n - 1; i++)
{
for(j = i + 1; j < n; j++)
{
if(*(ptr + j) < *(ptr + i))
{
temp = *(ptr + i);
*(ptr + i) = *(ptr + j);
*(ptr + j) = temp;
}
}
}
printf("排序后:\n");
for(i = 0; i < n; i++)
printf("%d ",*(ptr + i));
printf("\n");
}
第2个回答  2012-05-26
这个太复杂了,看不懂啊·

给你一个可用的呢·
#include <stdio.h>
#define MAX_RECORD 20

void ArraySortASC(int array[],int length);
void ArraySortDESC(int array[],int length);
void ArraySort(int array[],int length,int type);
void PrintArray(int array[],int length);

int main()
{
int i;
int array[MAX_RECORD];
int length = 0;

printf("Please enter the sum:");
scanf("%d",&length);

if(length > MAX_RECORD)
{
printf("Error!Can not Support > %d\n",MAX_RECORD);
return -1;
}

for(i = 0; i < length; i++)
{
printf("Enter the %d number:",i + 1);
scanf("%d",&array[i]);
}

printf("-----------------befor sort-----------------\n");
PrintArray(array,length);

ArraySort(array,length,1);
printf("-----------------sort ASC--------------------\n");
PrintArray(array,length);

ArraySort(array,length,-1);
printf("-------------sort DESC----------------\n");
PrintArray(array,length);

return 0;
}

void ArraySortASC(int array[],int length)
{
int i;
int j;

int temp;

for(j = length - 1; j > 0; j--)
{
for(i = 0; i < j; i++)
{
if(array[i] > array[i + 1])
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}

}

void ArraySortDESC(int array[],int length)
{
int i;
int j;

int temp;

for(j = length - 1; j > 0; j--)
{
for(i = 0; i < j; i++)
{
if(array[i] < array[i + 1])
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
}

void ArraySort(int array[],int length,int type)
{
if(type == 1)
{
ArraySortASC(array,length);
}
else if(type == -1)
{
ArraySortDESC(array,length);
}
else
{
printf("paramter error!\n");
}

}

void PrintArray(int array[],int length)
{
int i;
for(i = 0; i < length; i++)
{
printf("%d ",array[i]);

if((i % 5 == 0) && i > 5)
{
printf("\n");
}
}

printf("\n");
}
第3个回答  2012-05-26
(1)
int a[6];
改为
int n,a[20];
scanf("%d",&n);
if(n>20) {
printf("Error!\n");
return 1;
}

(2)
将后面各有关语句中的:
5 改为 n
4 改为 n-1
6 改为 n+1本回答被提问者采纳

相关了解……

你可能感兴趣的内容

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