标题:单词个数
只看楼主
风雨123
Rank: 2
等 级:论坛游民
帖 子:84
专家分:65
注 册:2013-2-23
结帖率:66.67%
 问题点数:0 回复次数:10 
单词个数
请求各位大哥解答,小弟不甚感激!!!
描述:
给定若干行字符单词,每行有若干个单词,要求统计每行有多少个不同的单词。
输入
标准输入,包括若干行,第一行为用例的个数n,接下来的n行,每行开头为一个整数k,表示该行单词个数,接下来为k个单词,单词之间用一个空格隔开,可以假定不包含标点及非字符情况,大小写可忽略,如“I”和“i”可以认为是同一个单词,同时每行单词个数不超过80个,每个单词长度不超过20。
输出
标准输出,每个用例用一行输出不同单词的个数。
样例输入:
2
10 I am teacher you are teacher i am not student
7 You you my My old YOU Your
样例输入:
7
4
搜索更多相关主题的帖子: 单词 teacher 
2013-02-24 11:42
黑暗烧纸人
Rank: 4
来 自:甘肃
等 级:业余侠客
帖 子:113
专家分:239
注 册:2012-12-22
得分:0 
菜鸟飘过。。。

老衲闻到一股蛋蛋的忧伤......
2013-02-24 19:46
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
呵呵,看懂这段代码有奖!

程序代码:
#include<stdio.h>
#include<string.h>
int main()
{
    char w[128][24];
    int t, n, c, i, j;
    for(scanf("%d", &t); t--; printf("%d\n", c))
    for(scanf("%d", &n), c = i = 0; i < n; c += j == i++)
    for(scanf("%s", w[i]), strupr(w[i]), j = 0; j < i && strcmp(w[i], w[j]); j++);
    return 0;
}

重剑无锋,大巧不工
2013-02-24 20:22
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
得分:0 
、、、、

仰望星空...........不忘初心!
2013-02-24 20:25
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
以下是引用beyondyf在2013-2-24 20:22:11的发言:

呵呵,看懂这段代码有奖!

#include
#include
int main()
{
    char w[128][24];
    int t, n, c, i, j;
    for(scanf("%d", &t); t--; printf("%d\n", c))
    for(scanf("%d", &n), c = i = 0; i < n; c += j == i++)
    for(scanf("%s", w), strupr(w), j = 0; j < i && strcmp(w, w[j]); j++);
    return 0;
}
神一样的代码

DO IT YOURSELF !
2013-02-24 20:35
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
呵呵,那就换成规矩的写法

程序代码:
#include<stdio.h>
#include<string.h>

int main()
{
    char w[128][24];
    int t, n, c, i, j, k;
   
    scanf("%d", &t);
    for(k = 0; k < t; k++)
    {
        scanf("%d", &n);
        c = 0;
        for(i = 0; i < n; i++)
        {
            scanf("%s", w[i]);
            strupr(w[i]);             //将字符串中的小写字母转换成大写字母,声明包含在string.h中
            for(j = 0; j < i; j++)
            {
                if(strcmp(w[i], w[j]) == 0) break;
            }
            if(j == i) c++;
        }
        printf("%d\n", c);
    }
    return 0;
}

重剑无锋,大巧不工
2013-02-24 20:49
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
标记

DO IT YOURSELF !
2013-02-24 20:55
q923271687
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2013-6-6
得分:0 
scanf("%s", w[i]);
            strupr(w[i]);             //将字符串中的小写字母转换成大写字母,声明包含在string.h中
            for(j = 0; j < i; j++)
            {
                if(strcmp(w[i], w[j]) == 0) break;
            }
            if(j == i) c++;
这里怎么理解啊??求大神解释
2013-06-06 09:15
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
得分:0 
回复 2楼 黑暗烧纸人
偶今天才看见,还有赏吗?
#include<stdio.h>
#include<string.h>
int main()
{
    char w[128][24];
    int t, n, c, i, j;
    for(scanf("%d", &t); t--; printf("%d\n", c))//t表示总共输入t行字符
    for(scanf("%d", &n), c = i = 0; i < n; c += j == i++)//n表示输入行中所含单词个数,i用于控制输入单词,c用于表示单词个数
    for(scanf("%s", w[i]), strupr(w[i]), j = 0; j < i && strcmp(w[i], w[j]); j++);//输入单词,全部变成大写字母,先输入的单词与新输入的一个单词两两比较,满足条件则j=1
    return 0;
}
2013-06-06 10:16
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
得分:0 
回复错了,今天咋一直出错呢?
2013-06-06 10:17



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




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

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