-
总时间限制:
- 1000ms 内存限制:
- 65536kB
-
描述
-
POJ 注册的时候需要用户输入邮箱,验证邮箱的规则包括:
1)有且仅有一个'@'符号
2)'@'和'.'不能出现在字符串的首和尾
3)'@'之后至少要有一个'.',并且'@'不能和'.'直接相连
满足以上3条的字符串为合法邮箱,否则不合法,
编写程序验证输入是否合法
输入
- 输入包含若干行,每一行为一个代验证的邮箱地址,长度小于100 输出
-
每一行输入对应一行输出
如果验证合法,输出 YES
如果验证非法:输出 NO
样例输入
-
.a@b.com pku@edu.cn cs101@gmail.com cs101@gmail
样例输出
-
NO YES YES NO
问题链接:Bailian4015 邮箱验证
问题分析:这是一个字符串检查的问题。程序说明:(略)
AC的C语言程序如下:
/* Bailian4015 邮箱验证 */
#include <stdio.h>
#define N 100
char s[N];
int main(void)
{
int len, count, atindex, i;
while(scanf("%s", s) != EOF) {
/* 计算字符串的长度,统计‘@’的个数,设置‘@’的位置 */
len = 0;
count = 0;
while(s[len]) {
if(s[len] == '@') {
count++;
atindex = len;
}
len++;
}
/* Rule 1 */
if(count != 1) {
printf("NO\n");
continue;
}
/* Rule 2 */
if(s[0] == '@' || s[0] == '.' || s[len -1] == '@' || s[len - 1] == '.') {
printf("NO\n");
continue;
}
/* Rule 3 */
count = 0;
for(i=atindex; i<len; i++) {
if(s[i] == '.')
count++;
}
if(count >= 1 && s[atindex - 1] != '.' && s[atindex + 1] != '.')
printf("YES\n");
else
printf("NO\n");
}
return 0;
}