c语言:输入一个正整数n,再输入n个整数,将它们排序后由小到大输出

#include <stdio.h>
void main()
{ int i,j,num,a[num];
int change,t;
printf("Enter Number: ");
scanf("%d",&num);
printf("Enter Data: \n");
for(i=0;i<num;i++)
scanf("%d",&a[i]);
for(i=num-1,change=1;i>0 && change;i--)
{ change=0;
for(j=0;j<=i;j++)
if(a[j]>a[j+1])
{
t=a[j]; a[j]=a[j+1];
a[j+1]=t; change=1;
}
}
printf("Sorted data:\n");
for(i=0;i<num;i++)
printf("%d ",a[i]);
printf("\n");
}
这个程序哪里出错了求解!!

#include "stdafx.h"
#include <stdio.h>
#define N 10 //数组长度固定
void main()
{
int i, j, num, a[N];//
int change, t;
printf("Enter Number: ");
scanf("%d", &num);
printf("Enter Data: \n");
for (i = 0; i<num; i++)
scanf("%d", &a[i]);
for (i = num - 2, change = 1; i>0 && change; i--)//num-1
{
change = 0;
for (j = 0; j <= i; j++)
if (a[j]>a[j + 1])
{
t = a[j]; 
a[j] = a[j + 1];
a[j + 1] = t;  
change = 1;
}
}
printf("Sorted data:\n");
for (i = 0; i<num; i++)
printf("%d ", a[i]);
printf("\n");
}

追问

为什么第十三行是num-2呢

追答 (a[j]>a[j + 1])->
                      j+1<num-1

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-11-22
a[num];

数组不允许元素为变量。本回答被网友采纳
第2个回答  2014-11-22
int i,j,num;
int change,t;
printf("Enter Number: ");
scanf("%d",&num);
int *a=new int[num];
前面几句改一下试试

相关了解……

你可能感兴趣的内容

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