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; }