我这程序错在哪里了?
#include "stdio.h"
void main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
{if(*p1<*p2)
{
p1=&a;p2=&b;}
else p2=&a;p1=&b;
}
{if(*p2>*p3)
{
p3=&a;p2=&c;}
else p2=&a;p3=&c;}
{if(*p1>*p2)
{
p1=&c;p2=&b;}
else p2=&c;p1=&b;}
printf("%d,%d,%d",*p1,*p2,*p3);
}
1、打开visual C++ 6.0-文件-新建-文件-C++ Source File。
2、输入预处理命令和主函数:#include<stdio.h> /*函数头:输入输出头文件*/void main() /*空类型:主函数*/。
3、定义变量并输入3个数:int a,b,c,t; /*定义变量的数据类型为整型*/
printf("输入3个数,中间用空格隔开:"); /*输出文字提示*/ scanf("%d%d%d",&a,&b,&c); /*输入3个数字*/。
4、判断数值大小:if(a<b) /*判断a是否小于b*/{t=a;a=b;b=t;} /*是,则a、b的值互换*/。
5、输出3个数从小到大和从大到小排列。
6、编译输出结果。
不用指针方法有很多种,,但是这题规定必须指针做。。我为的是错在哪里了
追答你的错误比较多,首先else后没有大括号,else后的第二个赋值语句必定会执行
另外,判断和赋值比较乱,判断用的是指针,然后给指针赋值,因为有多次判断和赋值,指针和变量已经不是简单的p1=&a;p2=&b;p3=&c;的关系了,除非你用嵌套的if语句来写,当然这样会更麻烦。
如下,不用临时变量,只用指针,相当的烦
#include "stdio.h"
void main()
{
int a,b,c,*p1,*p2,*p3;
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
{
if(*p1*p3)
{
p3=&a;
p2=&b;
p1=&c;
}
else if (*p2>*p3)
{
p1=&b;
p2=&c;
p3=&a;
}
}
}
printf("%d,%d,%d",*p1,*p2,*p3);
}
#include<stdio.h>
void main()
{
int a, b, c, t, *i, *j, *k;
scanf("%d%d%d", &a, &b, &c);
i = &a;
j = &b;
k = &c;
if (*i > *j)
{
t = *j;
*j = *i;
*i = t;
}
if (*i > *k)
{
t = *k;
*k = *i;
*i = t;
}
if (*j > *k)
{
t = *k;
*k = *j;
*j = t;
}
printf("%d,%d,%d", *i, *j, *k);
}