标题:还是那个询问的问题,我有结构体做的。有点不懂
只看楼主
jwk0403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-11
结帖率:33.33%
已结贴  问题点数:20 回复次数:3 
还是那个询问的问题,我有结构体做的。有点不懂
对字符串很是不熟悉,求教。困扰好几天了,到底要怎么改,谢谢
 三国杀中,君主有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;
}

搜索更多相关主题的帖子: ask 结构体 字符串 
2012-11-13 13:39
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
得分:10 
字符串比较用 strcmp 或者strncmp,你那样比是不行的
2012-11-14 16:58
youngdavid
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:107
专家分:698
注 册:2012-9-24
得分:10 
楼主可以用strcmp函数比较字符串,这个函数先比较第一个字符,如果相等再比较第二个,并依次往后比较,如果两个字符串相等,返回值是0,所以你这一句可以改为:
if(strcmp(pArr[i].name,Arr[j].name)==0)
就可以实现了。
2012-11-19 22:22
jwk0403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-11
得分:0 
回复 3楼 youngdavid
恩,知道了谢谢你们
2012-11-24 09:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-386886-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.741810 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved