请大家帮我看下这个小程序

u010886029 2013-05-29 09:55:45
请大家帮我看下这段代码,谢谢!
程序可以运行,但是每次输入结果总是不对:
每次输入90,91,91,91,92,总是得到572662305...,

#include<stdio.h>
#include<stdlib.h>
int main()
{
int avg;
int max;
int min;
int i=0;
int n[5];
int sum=0;
for(i=0;i<5;i++)
{
scanf("n[i]=%d",n[i]);
}

max=min=n[0];
for(i=0;i<5;i++)
{

max=max>n[i]?max:n[i];
}

for(i=0;i<5;i++)
{

min=min<n[i]?min:n[i];
}

for(i=0;i<5;i++)
{
sum+=n[i];
}
avg=(sum-max-min)/3;
printf("平均值为:%d",avg);

system("pause");
return 0;
}




...全文
142 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2013-05-30
  • 打赏
  • 举报
回复
printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方,而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
自信男孩 2013-05-30
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int avg;
	int max;
	int min;
	int i = 0;
	int n[5];
	int sum = 0;
	for(i = 0;i < 5; i++)
	{
		scanf("%d", &n[i]);
	}

	max = min = n[0];
    for(i = 0; i < 5; i++)
	{
		max = max > n[i] ? max : n[i];
	}

	for(i = 0; i < 5; i++)
	{
		min = min < n[i] ? min : n[i];
	}

	for(i = 0; i < 5; i++)
	{
		sum += n[i];
	}
	avg = (sum - max - min) / 3;
	printf("平均值为:%d", avg);

	//system("pause");
	return 0;
}
scanf("n[i]=%d",n[i]);没见过这么用scanf的.
u010886029 2013-05-30
  • 打赏
  • 举报
回复
谢谢大家
haha3218 2013-05-30
  • 打赏
  • 举报
回复
数组不是指针
u010886029 2013-05-30
  • 打赏
  • 举报
回复
先谢谢大家了。 我还有点不懂的就是,数组不就是指针吗?那为什么还要加取地址&符号呢?什么时候用,什么时候不用呢?
snake406635029 2013-05-30
  • 打赏
  • 举报
回复
scanf用法确实有问题,平均值的求法也有问题 如果那五个数是1,2,3,4,5你的平均数成立,如果是 1,2,5,6,9 你的平均值算法就不能得到正确答案了,多考虑考虑.
hugett 2013-05-29
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int avg;
	int max;
	int min;
	int i=0;
	int n[5];
	int sum=0;
	for(i=0;i<5;i++)
	{
		scanf("%d",&n[i]);//这句改成这样。。。
	}

	max=min=n[0];
	for(i=0;i<5;i++)
	{
		max=max>n[i]?max:n[i];
	}

	for(i=0;i<5;i++)
	{
		min=min<n[i]?min:n[i];
	}

	for(i=0;i<5;i++)
	{
		sum+=n[i];
	}
	avg=(sum-max-min)/3;
	printf("平均值为:%d",avg);

	system("pause");
	return 0;
}
折翼断JJ 2013-05-29
  • 打赏
  • 举报
回复
楼上已经说得很清楚了。以后要注意书写规范的。
bewinged 2013-05-29
  • 打赏
  • 举报
回复
小哥你的 scanf("n[i]=%d",n[i]); 不能这样用。 变成下面的。 scanf("%d",&n[i]);
DaiwjDev 2013-05-29
  • 打赏
  • 举报
回复
scanf("n[i]=%d",n[i]); 你scanf都是这么用的? 改成 scanf("%d",&n[i]);
Carl_CCC 2013-05-29
  • 打赏
  • 举报
回复
scanf("n[i]=%d",&n[i]); 输入要取地址。不能直接那整数输入。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧