你都没完成赋值操作啊!scanf()函数里是接地址没错,但是credit和score只是数组第一个数据的地址而已,你是循环了m次,但每次只是把数据写到了第一个元素里,后面还是初始值0。
应该改成
for(i=0;i
scanf("%f",&credit[i]);
...
scanf("%f",&score[i]);
....
}//i的自加实现数组向后赋值
还有你写的scanf("%f\n",credit); scanf是屏幕输入函数,把\n加在后面就会出错,真想加就在后面再加个printf专门输出\n,这两个改了就好了。
这是我改了的代码,能运行,你自己再拿去试一下:
#include
#include
void main()
{
float credit[50]={0},score[50]={0},sumg=0,sums=0;
unsigned int i,m;
clrscr();
puts("how many courses you want to calculate?");
scanf("%d",&m);
for(i=0;i
printf("credit:");
scanf("%f",&credit[i]);
printf("score:");
scanf("%f",&score[i]);
sums+=(score[i]*credit[i]);
sumg+=credit[i];
}
printf("GPA=%f",sums/sumg);
getch();
}
scanf("%f\n",credit)和scanf("%f\n",score)中的两个变量定义应该是浮点型的,
但后面的又把它当成浮点型的数组.有冲突.把后面的改为
sums+=(score*credit)和sumg+=credit.
小朋友要打pp了,看看下面这两句:
scanf("%f\n",credit);
scanf("%f\n",score);
应该是:
scanf("%f\n",&credit);
scanf("%f\n",&score);
这个错误一定要避免,不然以后要吃大亏的.
sums+=(score[i]*credit[i]);
sumg+=credit[i]; 改为sums+=(score*credit);
sumg+=credit;