题目描述
某游戏公司年末推出一款新游戏,共设置100层关卡,邀请游戏玩家们内测,根据到达关卡层级对玩家授予不同称号,并对获得神级玩家称号的玩家进行奖励,赠送高级游戏装备一套。已知到达关卡90-100的玩家授予神级玩家称号(S),到达关卡80-89的玩家授予牛级玩家称号(N),达到关卡70-79的玩家授予高级玩家称号(G),到达70以下关卡的授予普通玩家称号(C)。请你帮助该公司记录玩家称号,并统计能够获得高级游戏装备的玩家人数。
输入格式
输入为2行,第一行为一个正整数n(n<=10),代表玩家人数,随后n行,每行为一个玩家信息,包括玩家ID(长度为9的不带空格的数字串)、昵称(长度不超过20的不带空格的一串字符)、到达关卡层级数(大于等于0的整数且小于等于100的整数)。
输出格式
按照输入顺序输出所有玩家的等级信息,一个玩家信息占一行,包括玩家ID、昵称、称号,中间用一个空格分隔,随后一行输出能够获赠高级游戏装备的人数。
输入样例
在这里给出一组输入。例如:
00001 li 90
000002 zhang 79
输出样例
在这里给出相应的输出。例如:
000001 li S
000002 zhang G
1
思路:
1.建立一个结构体,结构体中需要存放ID、昵称、层级、称号
2.主函数中用for循环输入
3.再用一个for循环给称号赋值(注意赋值时,需要加单引号表示字符字面量)
4.定义一个变量用于计数
5.当层级大于90时,计数变量累加
代码:
#include<stdio.h>
struct st
{
int id;
char name[10];
int layer;
char title;
};
struct st ch[10];
int main()
{
int n;
scanf("%d",&n);
int i;
for(i=0;i<n;i++)
{
scanf("%d%s%d",&ch[i].id,&ch[i].name,&ch[i].layer);
}
int c=0;
for(i=0;i<n;i++)
{
if(ch[i].layer>=90&&ch[i].layer<=100)
{
ch[i].title='S';
c++;
}
else if(ch[i].layer>=80&&ch[i].layer<=89)
{
ch[i].title='N';
}
else if(ch[i].layer>=70&&ch[i].layer<=79)
{
ch[i].title='G';
}
else if(ch[i].layer<70)
{
ch[i].title='C';
}
}
for(i=0;i<n;i++)
{
printf("%06d %s %c\n",ch[i].id,ch[i].name,ch[i].title);
}
printf("%d",c);
return 0;
}