安全保密是一项重要工作,如何判定文件是否涉密?我们给出一个简单的假定。
假定读入的数据内容中有“secret”字样,则说明为涉密文件。
下面请你编写程序,对输入的一串字符(最多80个字符,串中可能有空格)统计有无“secret”单词出现,如果出现,请说明其出现在第几个单词处(从1开始计数)。
注意:此单词可能多次出现。
输入格式:
输入一串长度不大于80个字符的字符串
输出格式:
如果字符串有”secret”,则输出”secret”位于第几个单词处(从1开始计数)
如果有多个”secret”,需全部标出,每个输出一行
如果字符串无“secret”,则输出No "secret"。
注意输出中有双引号。
输入样例1:
This's a secret file
输出样例1:
"secret" is pos 3
输入样例2:
My name is lisa
输出样例2:
No "secret"
输入样例3:
This's a secret file that is not secret
输出样例3:
"secret" is pos 3
"secret" is pos 8
#include<string.h>
#include<stdio.h>
int main(){
int i, c = 0, f = 0;//这里的c是计数器,f用来观察有没有secret
char s[81];//题目中说长度不超过80,这里设为81以存下'\0'
gets(s);
int l = strlen(s);
for (i = 0; i < l; i++)//仔细观察的话就会发现从遇到第一个非空格字符到遇到下一个空格是一个循环单元,这也是计算单词数的依据
{
if (s[i] != ' ')
{
if (s[i] == 's' && s[i + 1] == 'e' && s[i + 2] == 'c' && s[i + 3] == 'r' && s[i + 4] == 'e' && s[i + 5] == 't')
{
printf("\"secret\" is pos %d\n",c+1);//不要忘记转义字符\"用来输出"
f = 1;
}
else
{
for (i = i + 1; i < l; i++)
{
if (s[i] == ' ')
{
c++;
break;
}
}
}
}
}
if (f == 0) printf("No \"secret\"\n");
return 0;
}
欢迎讨论指正