C语言中char变量Gr无法输出?多函数编程问题求助
问题分析与解决方案
核心问题1:fnComputeGrade函数逻辑错误
你在fnComputeGrade里误用了相等比较运算符==而非赋值运算符=,导致Gr指针指向的变量从未被赋值为对应的等级字符,函数返回的只是比较结果(0或1,对应不可见的ASCII控制字符),所以输出时看不到等级。
错误代码片段:
if (Ts >= 80) return (*Gr == 'A'); // 此处是比较操作,未给Gr赋值
正确写法:先给*Gr赋值,再返回符合函数设计的浮点值:
if (Ts >= 80) { *Gr = 'A'; return Ts; }
核心问题2:main函数中函数调用的语法错误
调用fnPrintAll和fnPrintMatrixGrade时,错误地写了**Gr**,这两个函数的参数是char类型,直接传入变量Gr即可。
错误调用:
fnPrintAll(Mx, Ts, **Gr**); fnPrintMatrixGrade (Mx, **Gr**);
正确调用:
fnPrintAll(Mx, Ts, Gr); fnPrintMatrixGrade(Mx, Gr);
修正后的完整代码
#include <stdio.h> void fnInput (long int*, float*, float*, float*); float fnSumMarks (float, float, float, float*); float fnComputeGrade (float, char*); void fnPrintAll (long int, float, char); void fnPrintMatrixGrade (long int, char); void fnInput (long int*Mx, float*T1, float*T2, float*Tf) { printf("Enter your matrix number:"); scanf("%ld", Mx); printf("\nEnter your marks for Test 1(/25):"); scanf("%f", T1); printf("\nEnter your marks for Test 2(/25):"); scanf("%f", T2); printf("\nEnter your marks for Final Test(/50):"); scanf("%f", Tf); } float fnSumMarks(float T1, float T2, float Tf, float*Ts) { *Ts = T1 + T2 + Tf; return(*Ts); } float fnComputeGrade (float Ts, char*Gr) { if (Ts >= 80) *Gr = 'A'; else if (Ts >= 65) *Gr = 'B'; else if (Ts >= 50) *Gr = 'C'; else if (Ts >= 40) *Gr = 'D'; else if (Ts >= 25) *Gr = 'E'; else *Gr = 'F'; return Ts; } void fnPrintAll(long int Mx, float Ts, char Gr) { printf("\nTotal marks for %ld is %f and the grade is %c", Mx, Ts, Gr); } void fnPrintMatrixGrade(long int Mx, char Gr) { printf("\nMatrix No.: %ld\nGrade: %c", Mx, Gr); } int main(void) { float T1, T2, Tf, Ts; long int Mx; char Gr; fnInput(&Mx, &T1, &T2, &Tf); fnSumMarks(T1, T2, Tf, &Ts); fnComputeGrade(Ts, &Gr); fnPrintAll(Mx, Ts, Gr); fnPrintMatrixGrade(Mx, Gr); return 0; }
测试输出
输入你提供的测试数据后,输出会变为:
Enter your matrix number:222123223 Enter your marks for Test 1(/25):22 Enter your marks for Test 2(/25):23 Enter your marks for Final Test(/50):46 Total marks for 222123223 is 91.000000 and the grade is A Matrix No.: 222123223 Grade: A
内容的提问来源于stack exchange,提问作者KAUSHAL SINGH AL CHAMKOR SINGH
相关产品推荐
相关产品推荐

