穿拖鞋的兔子 大约9小时前 平静 的说 翘课   沙漠★寂寞 11月30日 平静 的说 机电那伙人又开始分钱了,刚刚又赚了很,见者有份,速度去抢!!!   一千年胡杨 11月30日 平静 的说 我爱你   穿拖鞋的兔子 11月30日 平静 的说 鼻子冻的红红的,不想上校内   鲍豪斯 11月30日 平静 的说 机电那伙正在分钱..要的都去看要吧!!!   小鱼游 11月30日 悲伤 的说 俺消失咧将近一整天,都米有个人想我   zdk6105 11月30日 无聊 的说 风好大,期待一场雪:天好冷,渴望一场爱   jacky200247 11月30日 平静 的说 输入要叽歪的内容_   农水007 11月30日 平静 的说 不生气,不发火,我难过,她的世界就会崩溃,就算为了她吧!   zhl2008 11月29日 生气 的说 哪 个鸟人 把我的头衔 签名给我搞没了.真是太气人了.发个牢骚还要凑够5个帖子.不仁道的家伙,好想骂你.   [查看全部 448 条唧唧歪歪...]


打印

帮帮忙!为什么我定义了16个数组元素!却要输入17个数据!(最后一个可以是任意数

帮帮忙!为什么我定义了16个数组元素!却要输入17个数据!(最后一个可以是任意数

  为什么我定义了16个数组元素!却要输入17个数据!(最后一个可以是任意数!)才能得到正确结果啊?
main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
  {scanf("%f\n",&fs);
  b+=a*fs;}
printf("%f\n",b/39.5*0.654);
}

TOP

main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
{scanf("%f",&fs);
  b+=a*fs;
}
printf("%f",b/39.5*0.654);
}

TOP

首先
你的程序是不编译不过的,因为你的fs指的应该是该数组的首地址,但你的程序中却是"b+=a*fs";请问这你的意思是什么??是想让两个数组的首地址相乘吗?
  你定义的int i,在循环中起到了什么作用呢?
如果你的意思是想让a数组和fs数组中对应的元素相乘,可以这样写:
main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
float num;
for(i=0;i<=15;i++)
{scanf("%f\n",&num);
  fs【i】=num;}
for(i=0;i<=15;i++)
  b+=a【i】fs【i】
printf("%f\n",b/39.5*0.654);
}//将其中的【i】换回英文状态
[fly]真正的天才更懂得刻苦学习![/fly]

TOP

我的程序是这样的!因为昨天疏忽!没有粘贴正确!谢谢了!
main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
  {scanf("%f\n",&fs);
  b+=a*fs;}
printf("%f\n",b/39.5*0.65);
}

TOP

哎!
系统有问题!
为什么我的
scanf("%f\n",&fs)
b+=a*fs
粘贴上去就变了!

TOP

呵呵,不是系统问题
是论坛的代码!!!
【i】表示斜体
我的也出问题了,对不住了
是那个的时候最好用汉语输"["
你说的问题是普遍现象,我"trace“了好几遍,是第一次循环中接受数据连着接受了两次,所以导致最终多了一次,但结果不影响
至于为什么第一次接收了两次数据,我还没查出为什么~~
[fly]真正的天才更懂得刻苦学习![/fly]

TOP

...老大,代码写成这样,我反正是不愿意看~~

TOP

main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
{scanf("%f\n",&fs);
  b+=a*fs;}
printf("%f\n",b/39.5*0.65);
}

TOP

错了,呵呵,楼主把scanf中的\n去掉就可以了
main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
{scanf("%f",&fs);
b+=a*fs;}
printf("%f\n",b/39.5*0.65);
}


2

main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
{scanf("%f",fs+i);
b+=a*fs;}
printf("%f\n",b/39.5*0.65);
}

TOP

哎呀!
谢谢上楼了!

TOP

客气了,呵呵
昨天晚上听说院长要来,赶紧把机子关了,没说明,现在我就说明一下,表说我灌水啊,哈
main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
{scanf("%f",fs+i);   /*数组名代表数组的首地址,可以加i来代表其他元素的地址,但它不能自增,可以定义一个float型的指针p,p=fs,这样就能通过p++来应用数组其他元素的地址了,楼主可以试试
b+=a*fs;}
printf("%f\n",b/39.5*0.65);
}

TOP

在scanf()函数中加了一个\n就会有这种现象,这是为什么啊?
[fly]毕业 ---- 开始终结[/fly] Welcome To 298.Net

TOP

具体什么原因我就不知道了,哈哈,反正编译器第一次数据没有算进循环里面(也许是编译器的问题哦,毕竟那也是个软件啊)
楼上的可以这样试试,
main()
{float fs[16],b=0,a[16]={4.0,4.5,3.5,1.5,3.5,1.5,1.5,3.0,2.0,1.5,3.5,2.0,2.0,3.5,1.0,1.0};
int i;
for(i=0;i<=15;i++)
{scanf("%f\n",fs+i);  //第一次输入1按回车没输出
printf("%f",fs);
}
}

TOP