| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 831 人关注过本帖
标题:指针与数组的问题??????????????
只看楼主 加入收藏
knight110
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-4-13
收藏
 问题点数:0 回复次数:12 
指针与数组的问题??????????????
#include <stdio.h>
int max,min;
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void sort(int *b,int n)
{
int *p;
int i;
int *b_end;
b_end=b+n;
max=min=*b;
for(p=b+1;p<b_end;p++)
{ if(*p>max)max=*p;
else if(*p<min)min=*p;
}
swap(&b[9],&max);
swap(&b[0],&min);
return;
}
main()
{
int *p,i;
int a[10];
p=a;
printf("请输入10个整数");
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a;
sort(p,10);
for(p=a;p<a+10;p++)
printf("%d",*p);
}
搜索更多相关主题的帖子: 指针 
2006-04-23 07:43
knight110
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-4-13
收藏
得分:0 

怎么没有人帮忙啊,哎...........


2006-04-23 08:57
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
收藏
得分:0 
以下是引用knight110在2006-4-23 7:43:00的发言:
#include <stdio.h>
int max,min;
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void sort(int *b,int n)
{
int *p;
int i;
int *b_end;
b_end=b+n;
max=min=*b;
for(p=b+1;p<b_end;p++)
{ if(*p>max)max=*p;
else if(*p<min)min=*p;
}
swap(&b[9],&max);
swap(&b[0],&min);

return;
}
main()
{
int *p,i;
int a[10];
p=a;
printf("请输入10个整数");
for(i=0;i<10;i++,p++)
scanf("%d",p);
p=a;
sort(p,10);
for(p=a;p<a+10;p++)
printf("%d",*p);
}


我的原则很简单:不做不喜欢的事!
2006-04-23 09:25
haichuan
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2006-3-7
收藏
得分:0 

你的程序是要干什么?我刚才运行了以下,编译连接都没有错,实现了将最小的数放在最前面,最大的数防在最后面的功能

2006-04-23 13:33
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
没错啊.
你想问啥?

对不礼貌的女生收钱......
2006-04-23 14:37
knight110
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2006-4-13
收藏
得分:0 

首先感谢终于有人回复了,你没有看到结果是最小的数把你输入的第一个数替了吗,我只是想要交换啊,而出现了两个最小值,不知道怎么回事,等待中...........


2006-04-24 08:28
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

晕!我看了老半天,总算知道你要说啥了.
max and min 都是全局变量,它们早就被声明并赋与相应的空间,你做的交换函数是实现了交换功能,不过结果却不是你想要的,就因为,max和min是不同于数组的两个变量。
按你的意思,可以这样改:
#include <stdio.h>
void swap(int *p1,int *p2)
{ int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
void sort(int *b,int n)
{
int *p,*max,*min;
int i;
int *b_end;
b_end=b+n;
max=min=b;
for(p=b+1;p<b_end;p++)
{ if(*p>*max)
max=p;
if(*p<*min)
min=p;
}
swap(&b[9],max);
swap(&b[0],min);
return;

}
main()
{
int *p,i;
int a[10];
p=a;
printf("请输入10个整数");
for(i=0;i<10;i++,p++)
scanf("%d",p);
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
p=a;
sort(p,10);
for(p=a;p<a+10;p++)
printf("%d",*p);
getch();
}
不过,我仍是不知道这个程序除了语法没错误,还有啥意义,让它排序吗?
显然实现不了。可你又明明写了个sort,让俺,哎!


对不礼貌的女生收钱......
2006-04-27 19:39
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 

程序有问题
楼上的好象也不对
你输入4567981023看看符合他的要求吗


明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-04-28 00:13
gaga
Rank: 1
等 级:新手上路
威 望:2
帖 子:307
专家分:0
注 册:2006-4-5
收藏
得分:0 
不好意思啊

楼上改的非常正确

我的电脑出了点问题
请问为什么正确的程序在我的电脑上总是有错误的结果呢

有时候还没有结果

明天的明天还有明天。 可是今天却只有一个。 public Copy from 无缘今生
2006-04-28 00:34
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 

其实这题不需要那么多指针,7楼程序也是不对的,当你把最小的放最后一个
得到的结果肯定不对

[CODE]
#include <stdio.h>

void Swap(int *p1,int *p2)
{
int temp;

temp=*p1;
*p1=*p2;
*p2=temp;
}

void Sort(int *b,int n)
{
int i,max,min,c;

max=min=0;
for(i=1;i<10;i++)
{
if(b[i]>b[max])
max=i;
if(b[i]<b[min])
min=i;
}

Swap(&b[9],&b[max]);
if(min==9)
Swap(&b[0],&b[max]);
else
Swap(&b[0],&b[min]);
}

int main()
{
int i,a[10];

printf("请输入10个整数\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);

Sort(a,10);
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}



[/CODE]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-04-28 02:04
快速回复:指针与数组的问题??????????????
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026466 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved