C语言利用指针实现三个数从大到小输出。

利用指针实现三个数从大到小输出。交换2个数的函数可以利用你在2453上写好的哦。省事多了吧。多组测试数据,每组一行输入三个数

用最基础的循环和指针做的这道题。如何退出程序那种基础东西,你自己应该会弄吧。我是初学编程,这已经是我目前的最大能力了。。。如果有更好的方法,我也是非常乐意接受的。。题目难就难在找中间那位数(也可能是其它更简单的方法我没想到)

#include<stdio.h>

#define SIZE 3

 int main()

{   

int index;

int num[SIZE];

int max, mid, min;

int get_mid;

int max_mid; //max与mid相等时

int min_mid; //min与mid相等时


a: printf("请输入3个数字: ");


for(index = 0; index < SIZE; index++)

scanf("%d", &num[index]);


for(max = num[0], index = 0; index < SIZE; index++)

max = max > num[index] ? max : num[index];

for(min = num[0], index = 0; index < SIZE; index++)

min = min < num[index] ? min : num[index];

for(index = 0, max_mid = 0, min_mid = 0, get_mid = 0; index <SIZE; index++)

{

if(max == num[index])

{

max_mid++;

continue;

}

if(min == num[index])

{

min_mid++;

continue;

}

mid = num[index];

get_mid = 1;

}

if(get_mid == 0 && max_mid > 1)

mid = max;

if(get_mid == 0 && min_mid > 1)

mid = min;


printf("%d %d %d\n", max, mid, min);

goto a;


system("pause");

return 0;

}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-26
#include<stdio.h>
#define N 5
int f(int *q)
{
int i,j,*u,t;
u=q;
for(i=0;i<N;i++)
for(j=0;j<N-1;j++)
if(u[i]>u[j])
{
t=u[i];
u[i]=u[j];
u[j]=t;
}
}
print(int *q)
{
int i;
for(i=0;i<N;i++)
printf("%d\t",*(q+i));
printf("\n");
}
int main(void)
{
int a[N],i,*p;
p=a;
printf("input %d datas:\n",N);
for(i=0;i<N;i++)
scanf("%d",&p[i]);
f(p);
print(p);
}
是指针,中间调用了函数 应该懂吧本回答被提问者和网友采纳

请问C语言输入3个数,按从大到小输出?(用指针)谢谢
\/\/有数组!!!include<stdio.h> void main(){ char a[14]={"HOW DO YOU DO"};char *p=&a[12];int i;for(i=0;i<13;i++){ printf("%c",*p);p--;} printf("\\n");} \/\/或者:不含数组 include<stdio.h> include<string.h> void main(){ char *p=&a[12];int i;for(...

C语言利用指针实现三个数从大到小输出。
int main(){ int index;int num[SIZE];int max, mid, min;int get_mid;int max_mid;\/\/max与mid相等时 int min_mid;\/\/min与mid相等时 a:printf("请输入3个数字: ");for(index = 0; index < SIZE; index++)scanf("%d", &num[index]);for(max = num[0], index = 0; index ...

c语言 输入三个整数,输出最大值最小值,要求使用指针的方式,要具体的分...
if (*c < *mi) *mi=*c;printf("max = %d min = %d\\n", *mx, *mi); \/\/ 输出 最大最小值,带星号的是 值 return 0; } 追问 带星号的是什么值 追答 声明里,带星号的形式表示那是指针。同语句里带星号的表示,外表一样,含意不同。C 语言,形式逻辑 不成立,初学者要注意。 语句里,指针指向的...

利用C语言指针比较三个数并且从小到大输出
int main(){ int a,b,c,*p1,*p2,*p3,*t;p1=&a;p2=&b;p3=&c;printf("请输入三个整数:");scanf("%d%d%d",p1,p2,p3);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("%d %d %d\\n",*p1,*p2,...

用指针编写C语言程序输入a,b,c三个数按从小到大顺序输出的流程图
void main(void){ float x[3],*p=x;printf("请输入三个数\\n");for(int i=0;i<3;i++)\/\/键盘接收数据 { printf("第%d个数:",i+1);scanf("%f",p++);} for(i=0;i<2;i++)\/\/冒泡法排序 { p=x;for(int j=0;j<2-i;j++,p++)if(*p>*(p+1)){ float t=*p;p=...

关与C语言编程的 输入3个数,用指针编程实现按从到小输出
int main(){ int x,y,z;int *p1,*p2,*p3,*temp;cout<<"请输入三个整数:"<<endl;cin>>x>>y>>z;p1=&x;p2=&y;p3=&z;if(*p1<*p2){ temp=p1;p1=p2;p2=temp;} if(*p1<*p3){ temp=p1;p1=p3;p3=temp;} if(*p2<*p3){ temp=p2;p2=p3;p3=temp;} cout<<*p1<<" ...

C语言的编程题:输入三个整数,按从大到小的顺序输出
include <stdio.h> main(){ int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x<y){t=x;x=y;y=t;} if(x<z){t=z;z=x;x=t;} if(y<z){t=y;y=z;z=t;} printf("%d %d %d\\n",x,y,z);}

C语言,用指针方法,将3个数按有小到大输出顺序!
void swap(int *p1,int *p2){ int t;t=*p1;p1=*p2;p2=t;} void main(){ int *pa,*pb,*pc;int a,b,c;printf("enter a,b,c:");scanf("%d,%d,%d",&a,&b,&c);pa=&a;pb=&b;pc=&c;if(*pa>*pb)swap(pa,pb);if(*pa>*pc)swap(pa,pc);if(*pb>*pc)swap(pb,...

...操作指针使数组中的数按从大到小的次序输出。
首先,输入三个数,你的数组开才开了2,数组开小了!a[3]其次,scanf ("%d", &a[i]);这里要使用取地址符号才能进行输入 再次,你加的else ;这些语句都没有用,直接删除 include<stdio.h>int main(){int *p,a[3],temp,i;p=a;printf("请输入三个数字");for(i=0;i<=2;i++)scanf...

C语言试题!输入3个整数,按从大到小的顺序输出
指针方式:include<stdio.h> define M 3 int main(){ int a[M];int *p=a;int i,j,temp;for(i=0;i<M;i++){printf("input the NO.%d number:\\n",i+1);scanf("%d",p+1);} for(i=0;i<M-1;i++)for(j=0;j<=M-i-1;j++)if(*(p+j)>*(p+j+1)){temp=*(p+j)...

相似回答