C语言高手进~~~

一个函数为了求数组中最大和最小的数的差#include<stdio.h>voidmain(){intsum,i,array[5],min,max,diff;for(i=0... 一个函数 为了求数组中最大和最小的数的差
#include <stdio.h>
void main()
{

int sum,i,array[5],min,max,diff;
for(i=0;i<5;i++)
scanf("%d",&array[i]);
sum=diff(array,i); //错哪里了呢?
printf("diff=%d",sum);

}

int diff(int array[],int n)
{
int max=array[0],min=array[0],j=0;
for(;j<n;j++)\
{if(array[j]>max)
max=array[j];
else if (array[j]<min)
min=array[j];
}
return (max-min);
}
一运行就出这个 帮解释 谢谢
展开
 我来答
百度网友34a7d2d
2011-06-19 · 超过17用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:52万
展开全部
int diff(int array[],int n)
{
int max=array[0],min=array[0],j=0;
for(;j<n;j++)\
{if(array[j]>max)
max=array[j];
else if (array[j]<min)
min=array[j];
}
return (max-min);
}
把这个函数放到main函数之上就行了,并且你这里还有这样一个错误,你在main函数中定义了一个变量和函数名相同了,所以会出现这个错误:term does not evaluate to a function
或者你在main函数之上把这个函数先定义下如:
#include <stdio.h>
int diff(int array[],int n);
void main()
{

int sum,i,array[5],min,max;
for(i=0;i<5;i++)
scanf("%d",&array[i]);
sum = diff(array,i);
printf("diff=%d",sum);

}

int diff(int array[],int n)
{
int max=array[0],min=array[0],j=0;
for(;j<n;j++)
{if(array[j]>max)
max=array[j];
else if (array[j]<min)
min=array[j];
}
return (max-min);
} //这段代码应该没有问题了
qyjubriskxp
2011-06-19 · TA获得超过892个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:750万
展开全部
diff没有在调用之前声明
修改方法是把diff的函数体放到main前面去或者在第8行之前加上一行int diff(int array[], int n);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友a783dd1
2011-06-19
知道答主
回答量:42
采纳率:0%
帮助的人:15.1万
展开全部
也可以把调用的子程序在主程序之前写
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
回忆的音律
2011-06-19
知道答主
回答量:10
采纳率:0%
帮助的人:0
展开全部
给你个建议 主函数别写成 void main()

一般都是 int main(void)
...

不过对于要求不严的编译器 以上两种都可通过,但为了以后,还是规范代码。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沧海雄风2009
2011-06-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8525
采纳率:79%
帮助的人:2886万
展开全部
1 2 3 4 5
diff=4Press any key to continue

#include <stdio.h>

int diff(int array[],int n); //函数在main前面声明一下

void main()
{
int sum,i,array[5]; // min,max,diff; 这三个去掉 min max 用不着 diff 跟函数重名导致这个错误

for(i=0;i<5;i++)
scanf("%d",&array[i]);
sum=diff(array,i); //错哪里了呢?
printf("diff=%d",sum);
}

int diff(int array[],int n)
{
int max=array[0],min=array[0],j=0;
for(;j<n;j++)
{
if(array[j]>max)
max=array[j];
else if (array[j]<min)
min=array[j];
}
return (max-min);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
285pqgwoe
2011-06-19 · TA获得超过899个赞
知道小有建树答主
回答量:1941
采纳率:0%
帮助的人:0
展开全部
一笔画问题是柯尼斯堡问题经抽象化后的推广,是图遍历问题的一种。在柯尼斯堡问题中,如果将桥所连接的地区视为点,将每座桥视为一条边,那么问题将变成:对于一个有着四个顶点和七条边的连通图 G(S,E),能否找到一个恰好包含了所有的边,并且没有重复的路径。欧拉将这个问题推广为:对于一个给定的连通图,怎样判断是否存在着一个恰好包含了所有的边,并且没有重复的路径?这就是一笔画问题。用图论的术语来说,就是判断这个图是否是一个能够遍历完所有的边而没有重复。这样的图现称为欧拉图。这时遍历的路径称作欧拉路径(一个圈或者一条链),如果路径闭合(一个圈),则称为欧拉回路[1]。

一笔画问题的推广是多笔画问题,即对于不能一笔画的图,探讨最少能用多少笔来画成。
一笔画定理

对于一笔画问题,有两个判断的准则,它们都由欧拉提出并证明[1]。
[编辑] 定理一

有限图 G 是链或圈的充要条件是:G为连通图,且其中奇顶点的数目等于0或者2。有限连通图 G 是圈当且仅当它没有奇顶点[2]。

证明[2][3]:

必要性:如果一个图能一笔画成,那么对每一个顶点,要么路径中“进入”这个点的边数等于“离开”这个点的边数:这时点的度为偶数。要么两者相差一:这时这个点必然是起点或终点之一。注意到有起点就必然有终点,因此奇顶点的数目要么是0,要么是2。
充分性:
如果图中没有奇顶点,那么随便选一个点出发,连一个圈 C1。如果这个圈就是原图,那么结束。如果不是,那么由于原图是连通的,C1 和原图的其它部分必然有公共顶点 s1。从这一点出发,在原图的剩余部分中重复上述步骤。由于原图是有限图,经过若干步后,全图被分为一些圈。由于两个相连的圈就是一个圈,原来的图也就是一个圈了。
如果图中有两个奇顶点 u 和 v,那么加多一条边将它们连上后得到一个无奇顶点的有限连通图。由上知这个图是一个圈,因此去掉新加的边後成为一条链,起点和终点是 u 和 v。

[编辑] 定理二

如果有限连通图 G 有 2k 个奇顶点,那么它可以用 k 笔画成,并且至少要用 k 笔画成[2]。

证明[2][3]:将这 2k 个奇顶点分成 k 对後分别连起,则得到一个无奇顶点的有限连通图。由上知这个图是一个圈,因此去掉新加的边後至多成为 k 条链,因此必然可以用 k 笔画成。但是假设全图可以分为 q 条链,则由定理一知,每条链中只有两个奇顶点,于是 2q \ge 2k。因此必定要 k 笔画成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式