还是那个询问的问题,我有结构体做的。有点不懂
对字符串很是不熟悉,求教。困扰好几天了,到底要怎么改,谢谢三国杀中,君主有5滴血,武将有4滴血,文官有3滴血。
Input 在输入中K代表君主,L代表文官,R代表武将,输入格式先是一个sum (sum < 100) 表述测试数据的组数,接着输入一个数n (n < 100) 表示人物数量,接着n行,每行输入格式如下:人物名(小于30个字符),身份名 之间有一个空格如: zhugeliang L 接这输入ask (ask < 1000),表示询问数,跟着ask行每行一个字符串,表示要询问的人物。
Output 要求根据输入信息编程输出人物的血数,如果人物不存在输出none,每个询问后换行.
Sample Input
1
3
sunquan K
caocao K
liubei K
2
sunquan
guanyu
Sample Output
5
none
#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct jiang //将领名字和官职
{
char name[30];
char guang;
};
struct xunwen //询问的官职
{
char name[30];
};
int main(void)
{
int len, sum, i, ask;
while(scanf("%d", &sum)!=EOF)
{
while(sum--) //几组数据
{
scanf("%d\n", &len);
struct jiang *pArr; //存放官职的数组
pArr = (struct jiang *)malloc(sizeof(struct jiang)*len);
for(i=0; i<len; i++) //打印将领的名字和官职
{
scanf("%s", pArr[i].name);
scanf("%c", &pArr[i].guang);
}
scanf("%d\n", &ask);
struct xunwen *Arr; //存放询问的数组
Arr = (struct xunwen *)malloc(sizeof(struct xunwen)*ask);
for(i=0; i<ask; i++)
{
scanf("%s", Arr[i].name); //询问的名字
}
int j, k;
int l1, l2;
for(i=0;i<len;i++)
{
for(j=0;j<ask;j++)
if(puts(pArr[i].name)==puts(Arr[j].name)) //做在这里,听过学长说的。不能拿整段字符数组进行比较。那要怎么改才能比较呢
{ //就假设询问的人和将领都在一行,我就想知道要怎么改才能比较,才会有输出结果
if(pArr[i].guang=='K')
printf("5\n");
else if(pArr[i].guang=='L')
printf("3\n");
else if(pArr[i].guang=='R')
printf("4\n");
}
}
}
}
return 0;
}