|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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 ;
}
|
|