输入3个整数要求设计3个指针变量p1p2p3使p1指向3个数的最大者, p2指向次大者p3指向最小由大到小输出3个数

二楼有六处错误,不能运行啊,麻烦再给改一下啊

#include<stdio.h>
int max(int x,int y);
int min(int x,int y);
int middle(int x,int y,int z);
void main()
{
int e,f,g;
int *p1,*p2,*p3;
printf("输入整数:\n");
scanf("%d%d%d",&e,&f,&g);
int i = max((max(e,f)),g);
int j = min((min(e,f)) ,g );
int m = middle(e,f,g);
p1 = &i;
p3 = &j;
p2 = &m;
printf("*p1 = %d\n*p2 = %d\n*p3 = %d\n",*p1,*p2,*p3);
}
int min(int x,int y)
{
int a,b,c;
a = x;
b = y;
if(a < b)
c = a;
else
c = b;
return c;
}
int max(int x,int y)
{
int a,b,c;
a = x;
b = y;
if(a >= b)
c = a;
else
c = b;

return c;
}

int middle(int x,int y,int z)
{
int a,b,c;
int d,e;
a = x;
b = y;
c = z;
d = max((max(a,b)),c);
e = min((min(a,c)),b);
if(a != d && a != e)
return a;
else if(b != d && b != e)
return b;
else if(c != d && c != e)
return c;
else
return 0;

}
我刚学习C ,程序挺乱的,但可以实现,很累啊,强烈要求给分 呵呵
但我这里没有错误阿,我用visual c++ 运行的阿,真的没错误,你先关闭所有的工作区间然后再重新建个工程(倒数第3项)和新的文件(c++ sourse file),然后再运行,有时候会和别的函数重复
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-05-14
#include "iostream.h"
void main()
{
int *p1,*p2,*p3;
int a[3];
int temp;
cout<<"输入三个数:"<<endl;
for(int i=0;i<3;i++)
cin>>a[i];
for(i=0;i<3;i++)
for(int j=i+1;j<=3-i;j++)
if(a[i]<a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
p1=&a[0];
p2=&a[1];
p3=&a[2];
cout<<*p1<<*p2<<*p3<<endl;
}
这样可以吧!先排序然后再把p1 p2 p3分别指向三个数.
第2个回答  2008-05-14
一楼的好

输入3个整数要求设计3个指针变量p1p2p3使p1指向3个数的最大者, p2...
int max(int x,int y);int min(int x,int y);int middle(int x,int y,int z);void main(){ int e,f,g;int *p1,*p2,*p3;printf("输入整数:\\n");scanf("%d%d%d",&e,&f,&g);int i = max((max(e,f)),g);int j = min((min(e,f)) ,g );int m = middle(e,f...

从键盘输入3个整数,要求设3个指针变量p1,p2,p3?
void main(){ int v[3];int *p1=&v[0];int *p2=&v[1];int &p3=&v[2];scanf("%d%d%d",p1,p2,p3);int t;if(*p1<*p2){ t=*p1;*p1=*p2;*p2=t;} if(*p1<*p3){t=*p1;*p1=*p3;*p3=t;} if(*p2<*p3){t=*p2;*p2=*p3;*p3=t;} printf("\\n%d,%d,%d",*p...

这道题怎么做:图中P1、P2、P3表示三
回答:(1)北 近地面 (2)低压 气旋 (3)冷锋 (4)甲 丁

从键盘输入3个整数,将3个数中的最大数和最小数交换,要求用指针作为函数...
include <stdio.h>void swap(int *p1,int *p2,int *p3){ int tmp; int *max,*min; max=p1; min=p1; if(*max<*p2) max=p2; if(*max<*p3) max=p3; if(*min>*p2) min=p2; if(*min>*p3) min=p3; \/\/交换*max和*min的内容 tmp=*max; *...

输入3个整数,按从小到大的顺序输出(用指针处理)
\/\/三个都一样printf("请输入3个整数\\n");scanf("%d%d%d",pa,pb,pc);if(*pa>*pb){x=*pa;*pa=*pb;*pb=x;}if(*pa>*pc){x=*pa;*pa=*pc;*pc=x;}if(*pb>*pc){x=*pb;*pb=*pc;*pc=x;}printf("这3个数由小到大的排列顺序为%d,%d,%d",*pa,*pb,*pc);} ...

C语言编程实现:利用指针,输入3个整数,按由小到大的顺序输出。
写法一、(交换指针指向的地址中存放的数据):include<iostream> usingnamespacestd;intmain(){ inta,b,c;int*p1,*p2,*p3;inttemp;cout<<"输入3个整数:"<<endl;cin>>a>>b>>c;p1=&a;p2=&b;p3=&c;if(*p1>*p2){ temp=*p1;p1=*p2;p2=temp;} if(*p1>*p3){ temp=*p1;p1=...

用指针实现输入3个整数,找出最大的数输出
int main(int argc,char*argv[]){ float a,b,c,*pa=&a,*pb=&b,*pc=&c,max;scanf("%f,%f,%f",pa,pb,pc);if(*pa>*pb){ max=*pa;printf("if1%f\\n",max);} else { max=*pb;printf("else\\n");} if(*pc>max){ max=*pc;printf("if2\\n");} printf("max=%f\\n",...

c++语言编程:输入三个整数,要求按照由小到大的顺序输出
\/\/头文件using namespace std; void swap(int *p1,int *p2); \/\/用于交换2个变量的功能函数int main(){ int n1,n2,n3; int *p1,*p2,*p3; cout<<"请依次输入3个整数:"; cin>>n1>>n2>>n3; p1=&n1; p2=&n2; p3=&n3; if(n1>n2) swap(p1,p2); if(n1...

三个进程P1、P2、P3互斥使用一个包含N(N>0)个单元的缓冲区。
解决要点如下:(1)由于缓冲区是共享空间,我们设置一个互斥信号量来保护它。设信号量为mutex。(2)P1、P2共享缓冲区的奇数数值,设同步信号量为odd。(3)P1、P3共享缓冲区的偶数数值,设同步信号量为even。(4)P1、P2、P3共享缓冲区的空位,设同步信号量为empty。(5)所有进程均需进行down(mutex)和up...

用C语言编写,输入三个数,由小到大的顺序输出
{ float a,b,c;float *P1,*P2,*P3;scanf("%f%f%f",&a,&b,&c);P1=ac?&c:P1; \/\/最小值 P3=a>b?&a:&b;P3=*P3>c?P3:&c; \/\/最大值 if (P1!=&a&&P3!=&a) { P2=&a;} else if (P1!=&b&&P3!=&b) { P2=&b;} else P2=&c; \/\/中间值 printf("%g %g...

相似回答