所以我試圖制作一個程式,根據他們輸入的分數對用戶進行評分,它可以作業,但有時它不喜歡當我輸入 67 作為 CSC111 的分數和 45 作為 CSC115 的分數時,它不顯示成績CSC115,但是當我為兩者輸入 45 時,它會顯示兩者的等級。
#include<stdio.h>
int main()
{
char firstName[100];
char lastName[100];
int regNo;
int marksCSC115;
int marksCSC111;
char grade11;
char grade15;
printf("Enter your name (first and last)> ");
scanf("%s %s", firstName, lastName);
printf("Enter your registration number> ");
scanf("%d", ®No);
printf("Enter your marks in CSC111> ");
scanf("%d", &marksCSC111);
printf("Enter your marks in CSC115> ");
scanf("%d", &marksCSC115);
if(marksCSC111 >= 0 && marksCSC111 <= 39){
grade11 = 'F';}
else if(marksCSC111 >39 && marksCSC111 <= 49){
grade11 = 'E'
;}
else if(marksCSC111 >49 && marksCSC111 <= 59){
grade11 = 'D'
;}
else if(marksCSC111 >59 && marksCSC111 <= 69){
grade11 = 'C'
;}
else if(marksCSC111 >69 && marksCSC111 <= 79){
grade11 = 'B'
;}
else if(marksCSC111 >79) {
grade11 = 'A'
;}
if(marksCSC115 >= 0 && marksCSC111 <= 39){
grade15 = 'F';}
else if(marksCSC115 >39 && marksCSC111 <= 49){
grade15 = 'E'
;}
else if(marksCSC115 >49 && marksCSC111 <= 59){
grade15 = 'D'
;}
else if(marksCSC115 >59 && marksCSC111 <= 69){
grade15 = 'C'
;}
else if(marksCSC115 >69 && marksCSC111 <= 79){
grade15 = 'B'
;}
else if(marksCSC115 >79) {
grade15 = 'A'
;}
printf("\nSTUDENT NAME: %s %s\n\nSTUDENT IDNO: %d\n\nCOURSE CODE MARKS GRADE\n\nCCS111 %d %c\n\nCCS115 %d %c",firstName,lastName, regNo, marksCSC111, grade11, marksCSC115, grade15);
}
uj5u.com熱心網友回復:
您對 CSC115 的檢查包含兩個研討會。例如看第一個比較
if(marksCSC115 >= 0 && marksCSC111 <= 39){
這應該是
if(marksCSC115 >= 0 && marksCSC115 <= 39){
為所有比較做它,它應該作業。為避免此類錯誤,您可以添加帶有錯誤訊息的 else 案例,例如
} else {
printf("Could not generate mark");
}
uj5u.com熱心網友回復:
這似乎是一個錯字。
在 if-else 樹中,您應該計算grade15if 陳述句后半部分的值,marksCSC111而不是marksCSC115。
對于這樣的問題。查看在您的問題下評論的鏈接@Biffen。它可能非常有幫助。
uj5u.com熱心網友回復:
如前所述,發布的程式中有多個錯別字,這是重復代碼的風險之一。
OP 可以撰寫(并測驗)一個函式,而不是(錯誤地)重新輸入從分數到等級的轉換邏輯,只更改所涉及變數的名稱:
char grade_from_mark(int mark)
{
// You may want to validate the input.
if ( mark < 0 || mark > 100 )
return '?';
if ( mark < 40 )
return 'F';
else if ( mark < 50 )
return 'E';
else if ( mark < 60 )
return 'D';
else if ( mark < 70 )
return 'C';
else if ( mark < 80 )
return 'B';
return 'A';
}
// Then, in `main`, you could just call them to assign the grades:
// ...
char grade11 = grade_from_mark(marksCSC111);
char grade15 = grade_from_mark(marksCSC115);
// ...
顯示的scanf. 見例如:
我們如何測驗 scanf() 函式的回傳值?
你如何允許使用 scanf 輸入空格?
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/336488.html
上一篇:在voidfunc()中回傳結構
