| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 916 人关注过本帖
标题:[求助]请教程序中一句话的意思
只看楼主 加入收藏
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
 问题点数:0 回复次数:15 
[求助]请教程序中一句话的意思
程序要求输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.编写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数.
答案是这样的:
#include<stdio.h>
void main()
{void input(int *);
void max_min_value(int *);
void output(int *);
int number[10];
input(number);
max_min_value(number);
output(number);
}

void input(int number)
{int i;
printf("input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}

void max_min_value(int number)
{int *max,*min,*p,temp;
max=min=number;
for(p=number+1;p<number+10;p++)
if(*p>*max)max=p;
else if(*p<*min)min=p;
temp=number[0];number[0]=*min;*min=temp;
temp=number[9];number[9]=*max;*min=temp;
}

void output(int number)
{int *p;
printf(Now,they are: ");
for(p=number;p<number+10;p++)
printf("%d",*p);
printf("\n");
}


max=min=number;
这一步按我的理解是先把数组的第一个数给min,然后把min再把max,等于说把一个数先赋给min(一个最小的数),然后再把这个最小的数赋给max(最大的数),这样最大的数又变成最小的数了,搞糊涂了.高手能解释一下这不什么意思吗?和后面有什么联系吗?谢谢!

[此贴子已经被作者于2006-8-7 20:12:57编辑过]

搜索更多相关主题的帖子: 的意思 
2006-08-07 20:12
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
number是数组,函数在参数传递的时候出现了问题.应该写成int number[],而不是简单的就写int number.
至于max=min=number;您对这条语句的理解没错,但是这条语句是放在还没进行比较的地方。也就是说,最大值和最小值还没产生,把它们统一指向第一个数.
举个简单的例子来说,您要找出班上最高和最矮的同学,没有尺子,您先叫一个同学出来,然后让其他同学和他比较即可。

对不礼貌的女生收钱......
2006-08-07 20:21
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

#include<stdio.h>
#define N 50
void Input(int *a,int n)
{
int i;
for(i=0;i<n;i++)
{
scanf("%d",a+i);
}
}

void tiaohuan(int *a,int n)
{
int max=0,min=0,i,temp;

for(i=1;i<n;i++)
{
if(*(a+i)>*(a+max))
{
max=i;
}
if(*(a+i)<*(a+min))
{
min=i;
}
}
temp=*(a+min);
*(a+min)=*a;
*a=temp;
temp=*(a+max);
*(a+max)=*(a+n-1);
*(a+n-1)=temp;
}

void display(int *a,int n)
{
int i;

for(i=0;i<n;i++)
{
printf("%-3d",*(a+i));
}
printf("\n");
}

int main()
{
int data[N],n;
printf("输入元素个数,不超过%d:",N);
scanf("%d",&n);
printf("输入%d个元素:",n);
Input(data,n);
tiaohuan(data,n);
printf("输出处理后的%d个元素:",n);
display(data,n);
return(0);
}



倚天照海花无数,流水高山心自知。
2006-08-07 21:11
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
for(p=number+1;p<number+10;p++)
if(*p>*max)max=p;
else if(*p<*min)min=p;
那这三句话是什么意思?尤其是for(p=number+1;p<number+10;p++),我觉得是多余的,有if(*p>*max)max=p;
else if(*p<*min)min=p;
就够了,请指教!
2006-08-07 23:37
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
用指针做遍历循环,不可缺少!

倚天照海花无数,流水高山心自知。
2006-08-08 09:03
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
我是初学者,对遍历循环这个概念不是很懂,楼上的高手能不能结合这个程序解释一下?谢谢!
2006-08-08 14:58
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
DB

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-08-08 14:59
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 

有没有高手能解释一下啊?谢谢!

2006-08-08 22:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用inku在2006-8-7 23:37:34的发言:
for(p=number+1;p<number+10;p++)/*就是一个简单的循环,只不过用指针执行,p 的初值--->number[1],循环结束条件是p--->number[10];*/
if(*p>*max)max=p;/*将最大者的地址保存在max中*/
else if(*p<*min)min=p;/*将最小者的地址保存在min中*/
那这三句话是什么意思?尤其是for(p=number+1;p<number+10;p++),我觉得是多余的,有if(*p>*max)max=p;
else if(*p<*min)min=p;
就够了,请指教!



倚天照海花无数,流水高山心自知。
2006-08-08 23:04
inku
Rank: 1
等 级:新手上路
帖 子:122
专家分:0
注 册:2006-8-6
收藏
得分:0 
我知道这句话的意思是要执行10次循环,我是这样理解的:把数组的每个数都与max比,如果有比max大的就把那个值赋值给max,但我不明白的是,max不是一个确定值,说不定数组中不止一个数比max大怎么办?难道定义max是就已经默认它无穷大,请高手指教菜鸟,先谢谢各位高手了!
2006-08-09 18:54
快速回复:[求助]请教程序中一句话的意思
数据加载中...
 
   



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

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