首页 > 解决方案 > 所以我有这个代码,但它的某些部分不能正常工作

问题描述

所以损坏的部分在等级要求中,你能帮我解决吗?所以级别要求是 S 需要 80,A 需要 60,B 需要 40,C 需要 20,D 需要 10,E 需要 2。并且代码必须使用结构,我认为错误的部分在结构中。谢谢(只是不要阅读其余部分)

所以损坏的部分在等级要求中,你能帮我解决吗?所以级别要求是 S 需要 80,A 需要 60,B 需要 40,C 需要 20,D 需要 10,E 需要 2。并且代码必须使用结构,我认为错误的部分在结构中。所以损坏的部分在等级要求中,你能帮我解决吗?所以级别要求是 S 需要 80,A 需要 60,B 需要 40,C 需要 20,D 需要 10,E 需要 2。并且代码必须使用结构,我认为错误的部分在结构中。所以损坏的部分在等级要求中,你能帮我解决吗?所以级别要求是 S 需要 80,A 需要 60,B 需要 40,C 需要 20,D 需要 10,E 需要 2。并且代码必须使用结构,我认为错误的部分在结构中。所以损坏的部分在级别要求中,你能帮我解决吗?所以级别要求是 S 需要 80,A 需要 60,B 需要 40,C 需要 20,D 需要 10,E 需要 2。并且代码必须使用结构,我认为错误的部分在结构中。

#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <windows.h>

struct Hero
{
   char nama[50];
   int level;
   char job[10];
};

struct Quest
{
   char nama[100];
   int reward;
   char ranking[2];
};

int main()
{
   int pilih,jhero=1,jquest=1;
   struct Hero hiro[10];
   struct Quest questo[10];
   do
   {
       system("cls");
       printf("============================================\n");
       printf("                 HERO GUILD\n");
       printf("============================================\n");
       printf("1. Member Registration\n");
       printf("2. Post a quest\n");
       printf("3. Show all member\n");
       printf("4. Show all quest\n");
       printf("0. Exit\n");
       printf("Input : ");
       scanf("%d",&pilih);
       fflush(stdin);
       switch(pilih)
       {
       case 2 :
           system("cls");
           printf("============================================\n");
           printf("         HERO GUILD - POST A QUEST\n");
           printf("============================================\n");
           printf("Title : "); gets(questo[jquest].nama);fflush(stdin);
           printf("Reward <$>:       ");scanf("%d",&questo[jquest].reward);fflush(stdin);
           printf("Rank :    ");scanf("%s",questo[jquest].ranking);fflush(stdin);
           jquest++;
           printf("Press Any Key To Continue...");
           getch();
           break;
       case 4 :
           system("cls");
           int j;
           printf("============================================\n");
           printf("             HERO GUILD - QUEST\n");
           printf("============================================\n");
           for(j=1;j<jquest;j++)
           {
               printf("Quest-%d\n",j);
               printf("Title\t: %s\n",questo[j].nama);
               printf("Reward\t: %d\n",questo[j].reward);
               printf("Rank\t: %s\n",questo[j].ranking);
               printf("Level Requirement : >= ");
               /*switch(questo[j].ranking)
               {
               case 'S' :printf("80\n\n");break;
               case 'A' :printf("60\n\n");break;
               case 'B' :printf("40\n\n");break;
               case 'C' :printf("20\n\n");break;
               case 'D' :printf("10\n\n");break;
               case 'E' :printf("2\n\n");break;
               }*/
           }
           printf("Press Any Key To Continue...");
           getch();
           break;
       case 0 : return 0;
       }
   }while(1);
 }

标签: c

解决方案


ranking成员应该是一个单一的char,所以这样声明它,然后这样阅读它并这样使用它:

// ...

struct Quest
{
   char nama[100];
   int reward;
   char ranking;  // Single-character rank
};

// ...

scanf(" %c", &questo[j].ranking);  // Leading space to skip initial white-space
// TODO: Should really check what scanf returns

// ...

printf("Rank\t: %c\n",questo[j].ranking);

// ...

switch (questo[j].ranking)
{
case 'S':
    // ...

default:
    // TODO: Handle the case if the rank is incorrect
    break;
}

// ...

推荐阅读