C语言练习题.输入3个整数,按从大到小的次序输出.要求用指针变量来处理3个整数.
输入3个整数,按从大到小的次序输出.要求用指针变量来处理3个整数.#include<stdio.h>voidmain(){inti,j,a[3],*p[3],*x;for...
输入3个整数,按从大到小的次序输出.要求用指针变量来处理3个整数.
#include<stdio.h>
void main()
{
int i,j,a[3],*p[3],*x;
for(i=0;i<3;i++)
{
p[i]=&a[i];
scanf("%d",&a[i]);
}
for(i=0;i>3;i++)
{
for(j=i;j>2;j++)
{
if(p[j]>p[j+1])
{
x=p[j];
p[j]=p[j+1];
p[j+1]=x;
}
}
}
printf("%d>%d>%d",p[0],p[1],p[3]);
}
帮忙看看那错了! 展开
#include<stdio.h>
void main()
{
int i,j,a[3],*p[3],*x;
for(i=0;i<3;i++)
{
p[i]=&a[i];
scanf("%d",&a[i]);
}
for(i=0;i>3;i++)
{
for(j=i;j>2;j++)
{
if(p[j]>p[j+1])
{
x=p[j];
p[j]=p[j+1];
p[j+1]=x;
}
}
}
printf("%d>%d>%d",p[0],p[1],p[3]);
}
帮忙看看那错了! 展开
展开全部
我帮你下午写一个吧 很简单的
#include"stdio.h"
void main()
{
void exchange(int *pt1,int *pt2,int*pt3);
int a,b,c,*p1,*p2,*p3;
printf("input 3 numbers:\n");
scanf("%d%d%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
exchange(p1,p2,p3);
printf("the result is:%d %d %d\n",*p1,*p2,*p3);
}
void exchange(int *pt1,int *pt2,int *pt3)
{
void swap(int *q1,int *q2);
if(*pt1<*pt2) swap(pt1,pt2);
if(*pt1<*pt3) swap(pt1,pt3);
if(*pt2<*pt3) swap(pt2,pt3);
}
void swap(int *q1,int *q2)
{
int temp;
temp=*q1;
*q1=*q2;
*q2=temp;
}
运行过了,是正确的 结果:
展开全部
你的思路很混乱,而且错的地方很多的。不好改,我给你写个程序吧。
#include <stdio.h>
void swap(int *p1,int *p2)
{
int tmp;
tmp=*p1;
*p1=*p2;
*p2=tmp;
}
void sort (int *p1,int *p2,int *p3)
{
if (*p1>*p2)
swap(p1,p2);
if (*p1>*p3)
swap(p1,p3);
if (*p2>*p3)
swap(p2,p3);
}
int main (int argc,char * argv[])
{
int a,b,c;
int *p1=&a,*p2=&b,*p3=&c;
scanf("%d%d%d",p1,p2,p3);
sort(p1,p2,p3);
printf("%d %d %d\n",*p1,*p2,*p3);
return 0;
}
这个程序我已经试过了 ,没问题的。
#include <stdio.h>
void swap(int *p1,int *p2)
{
int tmp;
tmp=*p1;
*p1=*p2;
*p2=tmp;
}
void sort (int *p1,int *p2,int *p3)
{
if (*p1>*p2)
swap(p1,p2);
if (*p1>*p3)
swap(p1,p3);
if (*p2>*p3)
swap(p2,p3);
}
int main (int argc,char * argv[])
{
int a,b,c;
int *p1=&a,*p2=&b,*p3=&c;
scanf("%d%d%d",p1,p2,p3);
sort(p1,p2,p3);
printf("%d %d %d\n",*p1,*p2,*p3);
return 0;
}
这个程序我已经试过了 ,没问题的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p[ ]是一个指针数组,里面存的是地址。*p[i]是取出地址里面存的内容,既你输入的整数。第三个for循环比较的时候要用*p[i],因为要比较的是存在这个地址里面的数的大小,而不是比较地址的大小。第三个for循环中还有其他一些错误,详情请看代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,a[3],*p[3],*x;
for(i=0; i<3; i++)
{
p[i]=&a[i];
scanf("%d",&a[i]);
}
for(i=0; i<3; i++)
{
for(j=i+1; j<3; j++)
{
if(*p[j]>*p[i])
{
x=p[j];
p[j]=p[i];
p[i]=x;
}
}
}
printf("%d>%d>%d",*p[0],*p[1],*p[2]);
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,a[3],*p[3],*x;
for(i=0; i<3; i++)
{
p[i]=&a[i];
scanf("%d",&a[i]);
}
for(i=0; i<3; i++)
{
for(j=i+1; j<3; j++)
{
if(*p[j]>*p[i])
{
x=p[j];
p[j]=p[i];
p[i]=x;
}
}
}
printf("%d>%d>%d",*p[0],*p[1],*p[2]);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我突然发现。。。这个是08年的题目啊。。。
你就搞个指针 指向数组 然后输入数组
然后就用起泡法 排序 再来个判断语句 决定从小到大还是从大到小
你就搞个指针 指向数组 然后输入数组
然后就用起泡法 排序 再来个判断语句 决定从小到大还是从大到小
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出的应该是*p[0],*p[1],*p[3].
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询