标题:帮帮我看看着个程序吧!!!
只看楼主
wce10000
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-10-16
 问题点数:0 回复次数:10 
帮帮我看看着个程序吧!!!

/* HELLO.C -- Hello, world */

#include "stdio.h"

main() {int a[10]; printf("enter 10 datas:\n"); getch(); in(a); maxmin(a); show(a); } in(int *p) {int i=10; for(i=0;i<10;i++) {scanf("%d",p++); } }

maxmin(int *p) {int *m,*n,i,t; m=n=p; for(i=0;i<9;i++,p++) { if (*p<*(p+1)) m=p+1; } t=*m; *m=*p; *p=t; p=p-9; for(i=0;i<9;i++,p++) { if (*p>*(p+1)) n=p+1; } p=p-9; t=*n; *n=*p; *p=t; } show(int *p) { int i; for(i=0;i<10;i++) { printf("%4d",*p++); getch(); } }

请各位大虾帮我看看这个程序,不能得到正确的结果,输入十个数,能够自动将最大的数与最后一个数对换,最小的数与第一个数兑换,请帮帮忙!!!

搜索更多相关主题的帖子: include world 
2004-10-16 23:00
竹本鸟
Rank: 1
等 级:新手上路
帖 子:72
专家分:0
注 册:2004-10-5
得分:0 
我回去试试!!

个人主页:wwweye. C语言正在学习中...... --------------------------------------------------
2004-10-17 06:30
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 

#include<stdio.h>

void input(int *p); void maxmin(int *p); void show(int *p);

void main() { int a[10]; printf("enter 10 datas:\n"); input(a); maxmin(a); show(a);

printf("\n"); }

void input(int *p) { int i=10; for(i=0;i<10;i++) scanf("%d",p++); }

void maxmin(int *p) { int *m,*n,i,t; m=n=p; for(i=0;i<10;i++,p++) //最大循环10次 { if(*p<*(p+1)) m=p+1; } t=*m; *m=*p; *p=t; p=p-9; for(i=0;i<10;i++,p++) //最小循环10次 { if(*p>*(p+1)) n=p+1; } p=p-9; t=*n; *n=*p; *p=t; }

void show(int *p) { int i; for(i=0;i<10;i++) printf("%4d",*p++); }

[此贴子已经被作者于2004-10-17 09:44:01编辑过]

2004-10-17 09:36
liang30890136
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2004-9-29
得分:0 
int型怎么可以getchar呢
2004-10-17 11:27
liang30890136
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2004-9-29
得分:0 
不好意思,原来你是在win-tc下做的,我看看程序,抱歉,抱歉;
2004-10-17 11:31
CoolFlyTow
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2004-9-16
得分:0 

live41 你真的是版主吗?太没水平了吧,搞都搞错了。这是我改的,太简单了吧!!!不去实践信口开河!!!

/* HELLO.C -- Hello, world */

#include "stdio.h" #include "conio.h"

in(int *p); maxmin(int *p); show(int *p);

main() { int a[10]; printf("enter 10 datas:\n"); getch(); in(a); maxmin(a); show(a); }

in(int *p) { int i=10; for(i=0;i<10;i++) { scanf("%d",p++); } }

maxmin(int *p) { int *m,*n,i,t; m=n=p; for(i=0;i<9;i++,p++) { if (*m<*(p+1))//<<----------原体的错误之处 m=p+1; } t=*m; *m=*p; *p=t; p=p-9; for(i=0;i<9;i++,p++) { if (*n>*(p+1))//<<----------原体的错误之处 n=p+1; } p=p-9; t=*n; *n=*p; *p=t; }

show(int *p) { int i; for(i=0;i<10;i++) { printf("%4d",*p++); getch(); } }


2004-10-17 12:09
wce10000
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-10-16
得分:0 
这位大虾,我回去把你的程序运行了一下,还是得不到结果。不过还是几万分感谢你哦
2004-10-17 12:09
wce10000
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-10-16
得分:0 
不好意思,我说的是live41.
2004-10-17 12:11
wce10000
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2004-10-16
得分:0 

CoolFlyTow 你太酷了吧。一下搞定。不过你可以告诉我为什么这么改吗?

为什么不能用*P,要而用*m,*n吗???????

期待多多的大虾HELP。SOS!!!!!1

2004-10-17 12:20
CoolFlyTow
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2004-9-16
得分:0 

太简单了,

if (*p<*(p+1)) m=p+1;说的是相邻的元素那个大

而题目说的是整个数组中最大的所以应该使用我的嘛。

简单的说就是*p<*(p+1)为真时m确实是指向了一个大的,但是当*p<*(p+1)再次为真时你能保证*(p+1)一定比*m

大吗?????????


2004-10-17 13:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-6643-1-1.html




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

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