我正在尝试根据学生的总分分配字母等级。然后尝试打印该字母等级,但我打印的是空值。这是我正在使用的代码:
int FinalScore;
FinalScore = q1w+q2w+q3w+q4w+midiw+midiiw+finalw;
// Determine the letter Grade
if (FinalScore>=0 && FinalScore <= 59)
{
char LetterGrade[20];
strcpy(LetterGrade,"F");
}
if(FinalScore>=60 && FinalScore <=69)
{
char LetterGrade[20];
strcpy(LetterGrade,"D");
}
if(FinalScore>=70 && FinalScore <=79)
{
char LetterGrade[20];
strcpy(LetterGrade,"C");
}
if(FinalScore>=80 && FinalScore <=89)
{
char LetterGrade[20];
strcpy(LetterGrade,"B");
}
if(FinalScore>=90 )
{
char LetterGrade[20];
strcpy(LetterGrade,"A");
}
printf("%s",&LetterGrade);
知道为什么我会得到 null 吗??谢谢。
最佳答案
我没有看到创建字符串 (char[20]
) 的任何实用程序,而不是简单的 char
,因为它最终只有一个性格到底。我写了code这似乎工作得很好。
您的代码的问题是 LetterGrade
是在 if
的范围内声明的,因此,当您尝试打印它时,它已经超出了范围,正如我在评论中提到的。
非常重要!正如@Jite 在他的评论中提到的那样,请注意 %c
格式说明符而不是 %s
,在printf
.
希望能满足您的需求。
#include <stdio.h>
int main()
{
int FinalScore = 60;
char LetterGrade;
// Determine the letter Grade
if(FinalScore>=0 && FinalScore <= 59) LetterGrade = 'F';
else if(FinalScore>=60 && FinalScore <=69) LetterGrade = 'D';
else if(FinalScore>=70 && FinalScore <=79) LetterGrade = 'C';
else if(FinalScore>=80 && FinalScore <=89) LetterGrade = 'B';
else LetterGrade = 'A';
printf("%c", LetterGrade);
return 0;
}
关于c - 在 C 中分配一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32927057/