定义宏函数给数组排序老是出错给位大神能帮小弟我看看吗
定义宏函数给数组排序老是出错给位大神能帮我看看吗
看了达内的c教程里面课后作业有道题是要求编写一个宏函数SORT(p1,n)第一个参数是数组名第二个参数是输入“>”或“<”来确定数组是按从小到大还是从大到小排列这是我写的代码求各位大神给我解答一下
------解决思路----------------------
给个参考:

------解决思路----------------------
理解和讨论之前请先学会如何观察!
VC编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E http://bbs.****.net/topics/391003898
看了达内的c教程里面课后作业有道题是要求编写一个宏函数SORT(p1,n)第一个参数是数组名第二个参数是输入“>”或“<”来确定数组是按从小到大还是从大到小排列这是我写的代码求各位大神给我解答一下
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#define SIZE(n) (n = sizeof(p1)/sizeof(*p1)));
#define ARR_MAX(p1,n) {int i,j,t;for(i=0;i<(SIZE(n)-1);i++){for(j=i+1;j<SIZE(n);j++){if(p1[i]<p1[j]){t=p1[i];p1[i]=p1[j];pl[j]=t;}}printf("%d",p1[i]);}}
#define ARR_MIN(p1,n) {int i,j,t;for(i=0;i<(SIZE(n)-1);i++){for(j=i+1;j<SIZE(n);j++){if(p1[i]>p1[j]){t=p1[i];p1[i]=p1[j];pl[j]=t;}}printf("%d",p1[i]);}}
#define SORT(p1,c) (c == '>'?ARR_MAX(p1,n):ARR_MIN(p1,n))
int main()
{
char c;
int p1[]={23,32,21,11,45};
printf("请输入大于号或小于号\n");
scanf("%c",&c);
SORT(p1,c);
return 0;
}
------解决思路----------------------
给个参考:
#include <stdio.h>
#define PRINT(p) \
{ \
for(int i=0;i<sizeof(p)/sizeof(*p);++i) \
{ \
printf("%d\t",p[i]); \
} \
}
#define SORT(p,c) \
{ \
for(int i=0;i<sizeof(p)/sizeof(*p)-1;++i) \
{ \
for(int j=i+1;j<sizeof(p)/sizeof(*p);++j) \
{ \
if(c=='<'&&p[i]<p[j]
------解决思路----------------------
c=='>'&&p[i]>p[j]) \
{ \
p[i]+=p[j]; \
p[j]=p[i]-p[j]; \
p[i]-=p[j]; \
} \
} \
} \
PRINT(p); \
}
int main()
{
char c;
int p1[]={23,32,21,11,45};
printf("请输入大于号或小于号\n");
scanf("%c",&c);
SORT(p1,c);
return 0;
}
------解决思路----------------------
VC编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。gcc加-E http://bbs.****.net/topics/391003898