| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 666 人关注过本帖
标题:[求助]为什么交换是无效的
只看楼主 加入收藏
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
 问题点数:0 回复次数:3 
[求助]为什么交换是无效的

#include <stdio.h> #include <malloc.h> #include <conio.h>

void swap(int *,int *); void input(int *,int); void process(int *,int); void output(int *,int);

int main() { int *n; n=(int*)malloc(10*sizeof(int)); if(!n) { printf("Cannot allocate memory!\n"); return 0; } input(n,10); printf("Before processing\n"); output(n,10); process(n,10); printf("After processing\n"); output(n,10); free(n); getch(); return 1; }

void swap(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; }

void input(int *num,int size) { register int i; printf("Please input %d numbers\n",size); for(i=0;i<size;i++) scanf("%d",num++); }

void process(int *num,int size) { register int i; int *p,*maxp=num,*minp=num; int maxnum=*num,minnum=*num; int *bkbegin=num,*bkend=num+size-1; for(p=num;p<=bkend;p++) { if(maxnum<*p) maxp=p; if(minnum>*p) minp=p; } /* 为什么交换是无效的? */ swap(minp,bkbegin); swap(maxp,bkend); }

void output(int *num,int size) { register int i; for(i=0;i<size;i++) printf("%4d",*num++); printf("\n"); }

[此贴子已经被作者于2005-6-1 19:13:05编辑过]

搜索更多相关主题的帖子: void include process memory 
2005-06-01 19:11
yuki
Rank: 2
等 级:新手上路
威 望:5
帖 子:508
专家分:0
注 册:2005-2-4
收藏
得分:0 
问题已经解决了,是我输入的测试数据有点问题。。

我们都在命运湖上荡舟划桨,波浪起伏使我们无法逃离孤行;如果我们迷失方向,波浪将指引我们穿过另一天曙光
2005-06-01 21:15
mingyue
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2004-5-13
收藏
得分:0 
我看不是数据输入的问题。
交换是有效的,只是minp,maxp没有找出数列中的最小和最大的数。

2005-06-01 21:42
musicml
Rank: 1
等 级:新手上路
帖 子:273
专家分:0
注 册:2005-4-2
收藏
得分:0 

#include <stdio.h> #include <malloc.h> #include <conio.h>

void swap(int *,int *); void input(int *,int); void process(int *,int); void output(int *,int);

int main() { int *n; n=(int*)malloc(10*sizeof(int)); if(!n) { printf("Cannot allocate memory!\n"); return 0; } input(n,10); printf("Before processing\n"); output(n,10); process(n,10); printf("After processing\n"); output(n,10); free(n); getch(); return 1; }

void swap(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; }

void input(int *num,int size) { register int i; printf("Please input %d numbers\n",size); for(i=0;i<size;i++) scanf("%d",num++); }

void process(int *num,int size) { register int i; int *p,*maxp=num,*minp=num; //int maxnum=*num,minnum=*num; int *bkbegin=num,*bkend=num+size-1; for(p=num;p<=bkend;p++) { if(*maxp<*p) maxp=p; if(*minp>*p) minp=p; } /* 为什么交换是无效的? */ swap(minp,bkbegin); swap(maxp,bkend); }

void output(int *num,int size) { register int i; for(i=0;i<size;i++) printf("%4d",*num++); printf("\n"); }


Every thing is possible.
2005-06-02 00:12
快速回复:[求助]为什么交换是无效的
数据加载中...
 
   



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

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