|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
例题:运用指针,实三个整数从大到小排列。
为什么按照小甲鱼讲的打了,编译后没有结果显示?
#include <stdio.h>
void main()
{
void exchange(int *q1,int *q2,int *q3);
int a,b,c,*p1,*p2,*p3;
scanf("%d %d %d\n",&a,&b,&c);
p1 = &a;
p2 = &b;
p3 = &c;
exchange(p1,p2,p3);
printf("%d %d %d\n",a,b,c);
}
void exchange(int *q1,int *q2,int *q3)//使得a>b>c
{
void swap(int *pt1,int *pt2);
if(*q1 < *q2)
{
swap(q1,q2);
}
if(*q1 < *q3)
{
swap(q1,q3);
}
if(*q2 < *q3)
{
swap(q2,q3);
}
}
void swap(int *pt1,int *pt2)
{
int temp;
printf("Please waiting...\n");
temp=*pt1;
*pt1=*pt2;
*pt2=temp;
}
本帖最后由 jackz007 于 2019-11-16 17:08 编辑
这句代码有问题,格式描述字符串中不能出现回车符 ' \n'。最好也不要出现空格、逗号之类,总之,越简单越好,可以避免意外。
- scanf("%d %d %d\n" , & a , & b , & c) ;
复制代码
改成下面这样:
- scanf("%d%d%d" , & a , & b , & c) ;
复制代码
改完代码就没问题了
我把楼主的代码简化了一下,谨供楼主参考:
- #include <stdio.h>
- void swap(int * pt1 , int * pt2)
- {
- int temp ;
- temp = * pt1 ;
- * pt1 = * pt2 ;
- * pt2 = temp ;
- }
- void exchange(int * q1 , int * q2 , int * q3)
- {
- if(* q1 < * q2) swap(q1 , q2) ;
- if(* q1 < * q3) swap(q1 , q3) ;
- if(* q2 < * q3) swap(q2 , q3) ;
- }
- int main(void)
- {
- int a , b , c ;
- scanf("%d%d%d" , & a , & b , & c) ;
- exchange(& a , & b , & c) ;
- printf("%d %d %d\n" , a , b , c) ;
- return 0 ;
- }
复制代码
|
|