标题:错在那里///??
只看楼主
yeti3
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2006-2-21
 问题点数:0 回复次数:18 
错在那里///??

输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1) 输入10个数
2)进行处理 3)输出10个数

#include<stdio.h>
void shuru(int *p,int n) /*输入n个数字*/
{ int i;
printf("please input ten numbers");
for(i=0;i<n;i++,p++)
scanf("%d",*p);
}

void sort(int *p,int n) /*将其中最小的数与第一个数交换,把最大的数与最后一个交换*/
{int max,t1,t2,t,u,min,i;
t1=max=min=*p;
t2=*(p+n-1);p++;
for(i=1;i<n;i++,p++) /*找出最大值与最小值*/
if(*p>max) max=*p;
else if(*p<min) min=*p;

p=p-n;

for(i=0;i<n;i++,p++) /*最小的数与第一个数交换,把最大的数与最后一个交换*/
if(*p==max)
{t=t2;
t2=*p;
*p=t;
}
else if(*p==min)
{t=t1;
t1=*p;
*p=t;
}
}

void shuchu(int *p,int n) /*输出n个数*/
{int i;
for(i=0;i<n;i++,p++)
printf("%d\n",*p);
getch(); /*这个我不明白,乱加的,请求帮助*/
}

main()
{ int a[10]; int *q;
q=a;
shuru(q,10);
q=a;
sort(q,10);
q=a;
shuchu(q,10);
}

搜索更多相关主题的帖子: int void max min 
2006-03-07 07:03
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
得分:0 

#include<stdio.h>
#include<conio.h>//这个是函数getch()库
void shuru(int *p,int n) /*输入n个数字*/
{ int i;
printf("please input ten numbers\n");
for(i=0;i<n;i++,p++)
scanf("%d",p); //p是指针地址,在scanf函数里不要带*
}

void sort(int *p,int n) /*将其中最小的数与第一个数交换,把最大的数与最后一个交换*/
{int max,t1,t2,t,min,i;
t1=max=min=*p;
t2=*(p+n-1);p++;
for(i=1;i<n;i++,p++) /*找出最大值与最小值*/
if(*p>max) max=*p;
else if(*p<min) min=*p;

p=p-n;

for(i=0;i<n;i++,p++) /*最小的数与第一个数交换,把最大的数与最后一个交换*/
if(*p==max)
{t=t2;
t2=*p;
*p=t;
}
else if(*p==min)
{t=t1;
t1=*p;
*p=t;
}
}

void shuchu(int *p,int n) /*输出n个数*/
{int i;
for(i=0;i<n;i++,p++)
printf("%2d",*p);//让输出的数列不会挨在一起
printf("\n");
getch(); //getch()是一个函数,这个函数的作用是读取按键的值。一般放在程序末尾是为了起到暂停的作用。
}

void main()
{ int a[10]; int *q;
q=a;
shuru(q,10);
q=a;
sort(q,10);
q=a;
shuchu(q,10);
}

[此贴子已经被作者于2006-3-7 12:53:52编辑过]


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-07 12:51
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
得分:0 
getch()是一个函数,这个函数的作用是读取按键的值。一般放在程序末尾是为了起到暂停的作用。

好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-07 12:52
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
得分:0 

还是重新确定算法吧

[此贴子已经被作者于2006-3-8 21:54:50编辑过]


2006-03-07 13:29
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
得分:0 
以下是引用zhangjuan在2006-3-7 13:29:00的发言:

我也编了一个,不知道怎么回事运行不对,我自己都有点晕了,还是楼主的算法好一点,我对指针还不怎么熟,望大家给我指点指点
int input(int *p,int n)
{int i;
for(i=0;i<n;i++,p++)
scanf("%d",*p);
}
int sort(int *p,int n)
{int temp,t,i;
temp=*p;
for(i=1;i<n;i++,p++) /*求最小*/
if(temp>*p)t=i;
else t=0;
p=p-n-1;
*p=*(p+t);*(p+t)=temp;

p=p-t;
i=n-1;
temp=*(p+i);
p=p-i;
for(i=0;i<n-1;i++,p++) /*求最大*/
if(*p<temp)t=i;
*p=*(p-n+t);*(p-n+t)=temp;
}
int print1(int *p,int n)
{int i;
for(i=0;i<n;i++,p++)
printf("%2d",*p);
}
main()
{int a[10];
int *q;
q=a;
input(q,10);
q=a;
sort(q,10);
q=a;
print1(q,10);
getch();
}





你怎么还是犯了楼主的错误?
scanf函数里不能出现*p这种格式啊,要不就改成&*p


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-07 13:33
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
得分:0 
还是不对啊,我知道这种算法太复杂了,但是还是请你仔细看看有什么错误

2006-03-07 13:37
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
得分:0 

这好象是潭浩强那本C语言教材上的一道作业题是吧?


努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-03-07 13:41
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
得分:0 
是的,我和楼主同时做到了那道题,但是我们的思路不一样

2006-03-07 13:43
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
得分:0 
可以在定义一个变量,用新定义的去读入,然后在付过去嘛!问题不就解决了

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-03-07 13:45
cxwl3sxl
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:495
专家分:129
注 册:2005-11-12
得分:0 
在2000以上的系统中编译才要加getch(),2000以下的可以不加

努力,哈哈,总有一天会变成高手~~~~~~因为我相信:没有办不到,只有想不到!http://t..cn/fpress
2006-03-07 13:47



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




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

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