【发布时间】:2019-11-02 20:35:43
【问题描述】:
这里的目标是打印一个基于平均音符的等级(A、R 或 F),一个值表示存在,另一个表示平均音符,使用指向 avg 和存在的指针。但是编译后只打印char返回值,其他都打印0。
我尝试在 *avg 和 *presence 的指针上打印存储的值,但程序在崩溃之前获取等级值和存在值。
#include <stdio.h>
char situation(float n1,float n2,float n3,int misses, int classes, float
*avg, float *presence);
int main()
{
float *avg,*presence,vet[3];
int f,a,x;
printf("Write the value of your notes \n");
for(x=0;x<=2;x++)
{
printf("Note %d:",x+1);
scanf("%f",&vet[x]);
}
printf("Misses: ");
scanf("%d",&f);
printf("Given: ");
scanf("%d",&a);
char outcome=situation(vet[0],vet[1],vet[2],f,a,&avg,&presence);
printf("With an average of %f and presence of %f percent, your situation is %c",avg,presence,outcome);
return 0;
}
char situation(float n1,float n2,float n3,int misses, int classes, float
*avg, float *presence)
{
char result;
*presence=((classes-misses)/classes)*100;
*avg=(n1+n2+n3)/3;
if(*presence>=0 && *presence<75)
{
result='F';
}
if(*presence>=75 && *presence <=100)
{
if(*avg>=0 && *avg<6);
{
result='R';
}
if(*avg>=6 && *avg<=10)
{
result='A';
}
if(*avg<0 || *avg>10)
{
result='x';
}
}
if(*presence<0 || *presence>100)
{
result='x';
}
return result;
}
我希望屏幕上的存在、平均值和结果打印给用户,但它只给出 char 结果值
【问题讨论】:
-
⟼如果您采用indentation style 并始终如一地应用它,此代码将受益匪浅。缩进传达了结构和意图,使我们更容易理解您的代码,而无需花费大量时间来破译它。
-
您的编译器不会为
char outcome=situation(vet[0],vet[1],vet[2],f,a,&avg,&presence);调用发出警告吗? -
是的。我正在使用 dev c++,他从不兼容的指针类型中给出了“情况”的 pass6
-
我是一个新程序员,我真的不知道如何解决它
-
如果修复它删除 avg 上的指针和 main 开头的存在,并且只将它们放在函数调用中。