Оценочная точка в C - PullRequest
0 голосов
/ 02 февраля 2019

Это мой код. Все работает нормально, но когда я ставлю любой алфавит, а не цифры, он показывает A-.Я просто хочу знать, почему это происходит. Почему это показано только А. Кто-нибудь может объяснить, почему это происходит?

#include<stdio.h>
int main(){
int num;
printf("Enter Your number ");
scanf("%d" ,& num);
    if(num>79)
    {
   printf("Congratulation you got A+");
}

else if(num>69)
{
printf("Congratulation you got A ");
}
else if(num>59)
{
printf("Congratulation you got A-");
}
else if(num>49)
    {
    printf("Congratulation you got B");
}
else if(num>39)
{
    printf("Congratulation you got C");
}

else if(num>32)
    {
    printf("Congratulation you got D");
}
else
{
    printf("You are a student like me(Shuvo) \nBetter Luck next time");

}
return 0 ;
}

Ответы [ 5 ]

0 голосов
/ 03 февраля 2019
#include <stdio.h>
int main(void){
  int num;
  printf("Enter your mark ");
  scanf("%d",&num);
  printf(" You entered %d", num); // printing outputs

  if(num >= 80){
    printf(" You got A grade"); // printing outputs
  }
  else if ( num >=60){ // Note the space between else & if
    printf(" You got B grade");
  }
  else if ( num >=40){
    printf(" You got C grade");
  }

  else if ( num < 40){
    printf(" You Failed in this exam");
  }
  return 0;
}
0 голосов
/ 03 февраля 2019
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
      char str[100], ch;
      int i, grade[5];
      float credit[5], gpa = 0.0, totCredit = 0.0;

      /* get the letter grade and credits from the user */
      printf("Letter Grade and Credits for each subject:\n");
      for (i = 0; i < 5; i++) {
              printf("Subject %d(Grade|Credit):", i + 1);
              ch = getchar();
              grade[i] = ch;
              scanf("%f", &credit[i]);
              getchar();
      }

      /* print the input grades and credits */
      printf("\nSubject | Grade | Credit\n");
      for (i = 0; i < 5; i++) {
              printf("   %d    |  %c    | %.0f\n", i + 1, grade[i], credit[i]);
      }

      /* calculate gpa value */
      for (i = 0; i < 5; i++) {
              switch (grade[i]) {
                      case 'S':
                              gpa = gpa + 10 * credit[i];
                              totCredit = totCredit + credit[i];
                              break;
                      case 'A':
                              gpa = gpa + 9 * credit[i];
                              totCredit = totCredit + credit[i];
                              break;

                      case 'B':
                              gpa = gpa + 8 * credit[i];
                              totCredit = totCredit + credit[i];
                              break;

                      case 'C':
                              gpa = gpa + 7 * credit[i];
                              totCredit = totCredit + credit[i];
                              break;

                      case 'D':
                              gpa = gpa + 6 * credit[i];
                              totCredit = totCredit + credit[i];
                              break;

                      case 'E':
                              gpa = gpa + 5 * credit[i];
                              totCredit = totCredit + credit[i];
                              break;

                      default:
                              printf("Given Wrong grade!!\n");
                              exit(0);

              }
      }
      printf("GPA: %f\tcredit: %f\n", gpa, totCredit);
      gpa = gpa / totCredit;
      printf("GPA for your score: %.2f\n", gpa);
      return 0;
}
0 голосов
/ 02 февраля 2019

scanf отбрасывает любой ввод во входном потоке, если данные не соответствуют спецификатору формата.

Спецификатор scanf в вашем коде -% d, отбрасывает любые символы, кроме целых.Чтобы проверить, сколько символов читается функцией scanf (), лучше распечатайте scanf () и верните данные.

int count = scanf (...);

0 голосов
/ 02 февраля 2019

Что ж, ожидаемый ввод - любое целое число, а вывод - информация о отметке.Если ваш ввод является неожиданным, как символ, тогда вы получите что-то неожиданное, верно?

scanf("%d" ,& num);

Заполнитель% d в scanf требует целочисленного ввода, поэтому он не будет читать целочисленные значения, если вы предоставите егосимвол.

, чтобы исправить это, вы можете добавить оператор проверки ошибки:

#include<stdio.h>
#include<stdlib.h> /*for exit*/
int main(){
    int num;
    printf("Enter Your number ");

    if(scanf("%d" ,& num) <= 0)
    {
        printf("Bad input!\n");
        exit(1);
    }
    if(num>79)
    {
        printf("Congratulation you got A+");
    }
    else if(num>69)
    {    
        printf("Congratulation you got A ");
    }
    else if(num>59)
    {
        printf("Congratulation you got A-");
    }
    else if(num>49)
    {
        printf("Congratulation you got B");
    }
    else if(num>39)
    {
        printf("Congratulation you got C");
    }
    else if(num>32)
    {
        printf("Congratulation you got D");
    }
    else
    {
        printf("You are a student like me(Shuvo) \nBetter Luck next time");
    }
    return 0 ;
}
0 голосов
/ 02 февраля 2019

Инициализируйте переменную num перед тем, как ее использовать.Я имею в виду заменить строку "int num;""int num = 0;"Вот мое решение

 #include <stdio.h>

int main(){
    int num = 0;
    printf("Enter Your number ");
    scanf("%d", &num);
    if (num > 79)
    {
        printf("Congratulation you got A+");
    }

    else if (num > 69)
    {
        printf("Congratulation you got A ");
    }
    else if (num > 59)
    {
        printf("Congratulation you got A-");
    }
    else if (num > 49)
    {
        printf("Congratulation you got B");
    }
    else if (num > 39)
    {
        printf("Congratulation you got C");
    }

    else if (num > 32)
    {
        printf("Congratulation you got D");
    }
    else
    {
        printf("You are a student like me(Shuvo) \nBetter Luck next time");

    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...