(c语言)用宏函数排列输入整数的顺序,从小到大和从大到小,我的这程序哪里错了,输出的是垃圾数据

#include <stdio.h>
#define SORT1(s,n) {int a,b,t;for(a=0;a<(n-1);a++){for(b=(a+1);b<n;b++){if(s[a]>s[b]){t=s[a];s[a]=s[b];s[b]=t;}}printf("%d",s[a]);}}
#define SORT2(s,n) {int c,d,k;for(c=0;c<(n-1);c++){for(d=(c+1);d<n;d++){if(s[c]<s[d]){k=s[c];s[c]=s[d];s[d]=k;}}printf("%d",s[c]);}}
int main()
{
int n,i;
int s[100];
do{
printf("输入要排列顺序的整数个数'n':\n");
scanf("%d",&n);
printf("输入整数具体内容:\n");
for(i=0;i<n;i++)
scanf("%d",s);
}while(n<2);
printf("Min to max:\n");
SORT1(s,n);
printf("\n");
printf("Max to min:\n");
SORT2(s,n);
return 0;
}

第1个回答  2011-07-24
#include <stdio.h>
#define SORT1(s,n) {int a,b,t;for(a=0;a<(n-1);a++){for(b=(a+1);b<n;b++){if(s[a]>s[b]){t=s[a];s[a]=s[b];s[b]=t;}}printf("%d",s[a]);}}
#define SORT2(s,n) {int c,d,k;for(c=0;c<(n-1);c++){for(d=(c+1);d<n;d++){if(s[c]<s[d]){k=s[c];s[c]=s[d];s[d]=k;}}printf("%d",s[c]);}}
int main()
{
int n,i;
int s[100];
do{
printf("输入要排列顺序的整数个数'n':\n");
scanf("%d",&n);
printf("输入整数具体内容:\n");
for(i=0;i<n;i++)
!!!!!!!!!!! scanf("%d",&s[i]);!!!!!!!!!!!!!!!!!!!!!
}while(n<2);
printf("Min to max:\n");
SORT1(s,n);
printf("\n");
printf("Max to min:\n");
SORT2(s,n);
return 0;
}
注意用!!标号的行对比
还有你输出数据只有n-1个 试着将宏中的a的范围调为for(a=0;a<n;a++)
如要修改后程序请追问
谢谢采纳本回答被提问者采纳

相关了解……

你可能感兴趣的内容

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