for(i=0;i
#include "stdio.h"
main()
{
float w[10],t=0;
int i;
for(i=0;i<=9;i++)
scanf ("%f\n",&w[i]);
for(i=0;i<=9;i++)
t+=w[i];
t=t/10;
printf("%f",t);
getch();
}
----------------解决方案--------------------------------------------------------
发现你的问题了
把t=t/10
改成t=t/(float)10
没有进行强制类型转换就除很危险的
----------------解决方案--------------------------------------------------------
不是类型转换的问题,问题在循环里
而且我发现这个问题居然和\n有关系!
大家看这两个程序:
int i;
int a[3];
for(i=0;i<3;i++)
scanf("%d\n",&a[0]);
和
int i;
int a[3];
for(i=0;i<3;i++)
scanf("%d",&a[0]);
第一个程序,要求输入4个数字,调试发现前两个数字都是在i=0的情况下输入的。
第二个程序,要求输入3个数字,调试发现分别在各自循环中输入
不知道是什么原因?难道\n里面什么玄机?知道的人解释一下!谢啦!
[此贴子已经被作者于2006-1-23 12:03:23编辑过]
----------------解决方案--------------------------------------------------------
楼上的,我用vc编译的,对于/n没有这个现象发生,就是说在你说的那两个情况中,我都要求输入3个数字,你如果整个程序就是这样的,就不会发生什么错误,要不就不要写/n,直接写就好了,和/n没有关系,应该是和scanf有关系
----------------解决方案--------------------------------------------------------
我用的也是vc,试了很多次,是\n不是/n
----------------解决方案--------------------------------------------------------
还有LZ,以后写循环,不要在判断上写<=,这个比<的执行时间要长很多,尽量避免用<= or >=
----------------解决方案--------------------------------------------------------
我运行lz的程序,去掉\n,结果如下:
1
2
3
4
5
6
7
8
9
0
4.500000
----------------解决方案--------------------------------------------------------
你把你的整个程序都贴出来我看一下好吗?
我这边确实没有多输入一次的要求阿,我写/n是为了方便,输入法不好切换,呵呵
----------------解决方案--------------------------------------------------------
你试试不去掉/n,而是按照我哪种方法运行看看,我知道你的那种方法,但是和/n没有关系,不信你把/n改成空格试一下就知道了
----------------解决方案--------------------------------------------------------
对,是和\n没有关系,因该是scanf的问题
----------------解决方案--------------------------------------------------------