c语言求助!

scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("credit:");
scanf("%f\n",credit);
printf("score:");
scanf("%f\n",score);
sums+=(score[i]*credit[i]);
sumg+=credit[i];
}

printf("GPA=%f",sums/sumg);
高人帮我看看是什么地方出了问题,编译的时候总是无法正常工作.
score[i]和credit[i]均为浮点数组,并且必须要满足想同的数位的数组元素相乘这一功能比如score[3]*credit[3];编译出现的问题是能输入,编译器能通过语法检测,但是答案结果跟我预期的不一样,我要算的其实是一个加权算法,就是大学里算GPA的方法.你们的答案我试了似乎都不行.
完整代码:
#include<string.h>
#include<stdio.h>
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<m;i++)
{
printf("credit:");
scanf("%f\n",credit);
printf("score:");
scanf("%f\n",score);
sums+=(score[i]*credit[i]);
sumg+=credit[i];
}

printf("GPA=%f",sums/sumg);
getch();
}你们可以自己复制试一下

你都没完成赋值操作啊!scanf()函数里是接地址没错,但是credit和score只是数组第一个数据的地址而已,你是循环了m次,但每次只是把数据写到了第一个元素里,后面还是初始值0。
应该改成
for(i=0;i<m;i++){
...
scanf("%f",&credit[i]);
...
scanf("%f",&score[i]);
....
}//i的自加实现数组向后赋值
还有你写的scanf("%f\n",credit); scanf是屏幕输入函数,把\n加在后面就会出错,真想加就在后面再加个printf专门输出\n,这两个改了就好了。

这是我改了的代码,能运行,你自己再拿去试一下:
#include<string.h>
#include<stdio.h>
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<m;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();
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-02-04
scanf("%f\n",credit)和scanf("%f\n",score)中的两个变量定义应该是浮点型的,
但后面的又把它当成浮点型的数组.有冲突.把后面的改为
sums+=(score*credit)和sumg+=credit.
第2个回答  2008-02-04
小朋友要打pp了,看看下面这两句:
scanf("%f\n",credit);
scanf("%f\n",score);
应该是:
scanf("%f\n",&credit);
scanf("%f\n",&score);
这个错误一定要避免,不然以后要吃大亏的.
第3个回答  2008-02-04
sums+=(score[i]*credit[i]);
sumg+=credit[i]; 改为sums+=(score*credit);
sumg+=credit;
第4个回答  2020-01-13

C语言啊。。。求助。。帅哥美女们,大哥大姐们会的帮下忙。无限感激...
include<stdio.h> int main(){ int a[3];int i,max;int n;scanf("%d",&n);while(n--){ for(i=0;i<3;i++)scanf("%d",&a[i]);max=a[0];for(i=0;i<3;i++)if(a[i]>=max)max=a[i];printf("%d\\n",max);} return 0;} ...

C语言作业求助,十分感谢
C代码和运行结果如下:输如10个数,成功输出了它们的最大值、最小值和平均值,望采纳~附源码:include <stdio.h> int main() { int max, min, sum, num, i;scanf("%d", &num); \/\/ 先输入一1个数 max = min = sum = num;for (i = 0; i < 9; i++) { \/\/ 再输入剩下9...

求助C语言中关于“!”的问题
n!是求N的阶乘。就是1*2*3*4...*N“!”就两个意思,一个是非的意思,一个是阶乘的意思,不知你说的是哪个?全句是什么,我没有那本书。

C语言求助求助求大佬救命
第一空:int MAX,MIN;int input_function(int *);int sorting_function(int *);int output_function(int *);第二空:array_data 第三空:array_data[i]=value;第四空:array_data[j-1]>array_data[j]第五空:(i+1)%5==0 另每一个函数最后一个}前加一句return 0;或把函数名前的int...

c语言编程求助,越多越好我可以加,一题也行,感谢大神!
scanf("%d",&t); if(prime(t)) printf("%d是素数\\n",t); else printf("%d不是素数\\n",t); return 0;}2#include<stdio.h>int fac(int n){ if(n==0 || n==1) return 1; return n*fac(n-1);}int main(){ int n; float sum=0.0; scanf("%d...

C语言菜鸟求助:执行语句for(i=0;i++
C语言菜鸟求助:执行语句for(i=0;i++<3;) printf("%d",i);后,程式输出为? 程式执行过程如下 第一次:i=0, 比较0<3,然后i++,i=1,执行输出1 第二次:i=1, 比较1<3,然后i++,i=2,执行输出2 第三次:i=2, 比较2<3,然后i++,i=3,执行输出3 第四次:i=3, ...

C语言习题求助,编译通过,运行错误,高分求解
由于 C 语言本身的最大特点就是:其不仅是编程格式上非常地自由,而且在对其进行编译时也是非常自由的(编译器能够放过去很多它认为不是问题的问题),但自由的同时也给程序员带来了程序调试和运行上的困难。有些错误在编译的时候是能够发现的(例如:程序语法错误)、而有些错误在编译程序的时候却是不...

c语言问题求助
文中说的是10000000代表-128。详细描述如下:[+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 计算机将第1位作为符号位,0表示正数,1表示负数。原码:原码很好理解,第1位是符号位,其余位表示数值。反码:(1)正数:正数反码是其...

c语言代码求助
代码文本:include "stdio.h"int main(int argc,char *argv[]){ char a[80];int i,j,k;while(1){ printf("Please enter a string(Length<80)...\\n");if((a[0]=getchar())==EOF)break;for(i=1;i<80;i++)if((a[i]=getchar())=='\\n')a[i]='\\0',i=79;for(i=j=...

求助c语言代码
首先,我们需要定义一个结构体来存储学生的成绩信息,然后创建一个二维数组来存储20个班的40名学生的5门课程的成绩。接着,我们需要编写一个函数来生成随机成绩,并计算每个班、每门课程的平均分。最后,我们需要对平均分进行排序并输出结果。include <stdio.h> include <stdlib.h> include \/\/ 定义结...

相似回答