首页 > 解决方案 > 我的程序只在特定情况下才有效

问题描述

所以我试图制作一个程序,根据用户输入的分数对用户进行评分,它可以工作,但有时它不喜欢当我输入 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", &regNo);
    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);


}

标签: cif-statement

解决方案


您对marksCSC115 的检查包含两个研讨会。例如看第一个比较

if(marksCSC115 >= 0 && marksCSC111 <= 39){

这应该是

if(marksCSC115 >= 0 && marksCSC115 <= 39){

对所有比较都这样做,它应该可以工作。为避免此类错误,您可以添加带有错误消息的 else 案例,例如

} else {
    printf("Could not generate mark");
}

推荐阅读