CCF NOI1060 雷同检测

问题链接CCF NOI1060 雷同检测




时间限制: 1000 ms  空间限制: 262144 KB

题目描述 

  考试的时候老师最讨厌有人抄袭了。自从有了电子评卷,老师要查找雷同卷,就容易多了,只要将两个人的答案输入计算机,进行逐个字符的比对,把相同的位置都找出来,就一目了然了。

输入

  2行,每行包含一串字符(长度不超过200)

输出

  1行,包含若干个以空格分隔的数字,表示出现相同字符的位置。

样例输入

I am a girl.I was born in 2002.
I am a giel.I was birn in 2012.
样例输出

1 2 3 4 5 6 7 8 9 11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 30 31

数据范围限制

 




问题分析

  这是一个简单的字符串输入比较问题

程序说明

  因为函数gets()已经不被推荐使用,所以编写了自己的函数mygets()用于读入一行的字符。

  不知道问题出在哪里?只得60分。如果程序中没有条件“if(isalpha(c) || isdigit(c) || c == '.' || c == ',' || c == ' ')”就只能得20分,郁闷啊!

要点详解
  • 必要时,就自己写一个函数



参考链接:(略)。

得60分的C语言程序:

#include <stdio.h>
#include <ctype.h>

#define N 200
char s[N+1], t[N+1];

int mygets(char s[])
{
    int i = 0;
    char c;

    while((c = getchar()) && c != '\n' && c != EOF)
        if(isalpha(c) || isdigit(c) || c == '.' || c == ',' || c == ' ')
            s[i++] = c;
    s[i] = '\0';

    return i > 0 || c != EOF;
}

int main(void)
{
    int i;

    mygets(s);
    mygets(t);

    for(i=0; s[i]!='\0' && t[i]!='\0'; i++) {
        if(s[i] == t[i])
            printf("%d ", i + 1);
    }

    return 0;
}



posted on 2017-04-27 05:31  海岛Blog  阅读(762)  评论(1编辑  收藏  举报

导航