| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 405 人关注过本帖
标题:对字符串很是不熟悉,求教。困扰好几天了,到底要怎么改,谢谢
只看楼主 加入收藏
jwk0403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-11
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数: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>
int main(void)
{
char str[100][30], arr[1000][30];
int i, j, sum, n, ask, p=1;
while(scanf("%d", &sum)!=EOF)
{
while(sum--)
{
scanf("%d", &n);
for(i=0; i<n; i++)
for(j=0; str[i][j]!='\n'; j++) //输入名称字符串
{
str[i][j] = getchar();
}

scanf("%d", &ask);
for(i=0; i<ask; i++) //输入询问字符串
for(j=0; arr[i][j]!='\n'; j++)
{
arr[i][j] = getchar();
}

for(i=0; i<ask; i++)
{
for(j=0; str[i][j]!=' '; j++) //空格前的名称进行比较
{
if(str[i][j]!=arr[i][j])
{
printf("no\n");
p=0;
break;
}
}
if(1==p) //如果询问存在情况
if(str[i][j+1]=='K')
printf("5\n");
else if(str[i][j+1]=='L')
printf("3\n");
else if(str[i][j+1]=='R')
printf("4\n");
}
}
p=1;
}
return 0;
}
搜索更多相关主题的帖子: 字符串 caocao ask 
2012-11-11 20:57
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:10 
你看看是不是你要的结果:
程序代码:
#include <stdio.h>
int main(void)
{
char str[100][30], arr[1000][30];
int i, j, sum, n, ask, p=1;
printf("输入测试数据组数:");
while(scanf("%d", &sum)==1)// 这改为==1
{
    while(sum--)
    {
        printf("输入人物数:");
        scanf("%d", &n);
        getchar();//清空缓存中的回车符
        for(i=0; i<n; i++)
        {
           
            printf("输入人物信息:");   
            for(j=0; str[i][j-1]!='\n'; j++) //输入名称字符串   j改为j-1
            {
                str[i][j] = getchar();
            }
        }
        printf("输入询问人物数:");
        scanf("%d", &ask);
        getchar();//清空缓存中的回车符
        printf("output\n");
        for(i=0; i<ask; i++) //输入询问字符串
        for(j=0; arr[i][j-1]!='\n'; j++)//j改为j-1
        {
            arr[i][j] = getchar();
        }

        for(i=0; i<ask; i++)
        {
            for(j=0; str[i][j]!=' '; j++) //空格前的名称进行比较
            {
                if(str[i][j]!=arr[i][j])
                {
                    printf("no\n");
                    p=0;
                    break;
                }
            }
            if(1==p) //如果询问存在情况
                if(str[i][j+1]=='K')
                    printf(" 5\n");
                else if(str[i][j+1]=='L')
                    printf(" 3\n");
                else if(str[i][j+1]=='R')
                    printf(" 4\n");
                p=1; 

        }
    }
    }
return 0;
} 

 还有就是你的比较也有问题,就是比较和被比较的人物信息必须在两个数组的同一行才能找到。

[ 本帖最后由 heroinearth 于 2012-11-12 20:06 编辑 ]
2012-11-12 19:57
jwk0403
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2012-11-11
收藏
得分:0 
回复 2楼 heroinearth
怎么只有有output输出
2012-11-12 23:04
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
你把"output" "换成输入要查询的人物名:"   试试
2012-11-13 00:02
快速回复:对字符串很是不熟悉,求教。困扰好几天了,到底要怎么改,谢谢
数据加载中...
 
   



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

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