题目描述 Description
正确的邮箱地址格式要求:
1.格式:用户名@服务器名.后缀域名”
2.用户名、服务器名、后缀域名均由字母、英文与下划线组成
输入一个邮箱地址判断它是不是合法的邮箱地址。
输入格式:
1.不会出现多节域名(比如:123@sina.com.cn 这种不会出现)
2.不会出现中文字符
输入描述 Input Description
输入仅一行(Mail.in):
为疑似邮箱的字符串
输出描述 Output Description
输出仅一行(Mail.out):
是邮箱,输出“yes”,
不是则输出“no”(不包括引号)
(样例输出中,括号中的内容不用输出)
样例输入 Sample Input
输入样例#1:
45678sss@.cn
输入样例#2:
hello@microsoft.cn
输入样例#3:
luogu.luogu@
输入样例#4:
#$%@sina.com
样例输出 Sample Output
输出样例#1:
no (没有服务器名)
输出样例#2:
yes (符合要求)
输出样例#3:
no (“@”位置不对,没有后缀名)
输出样例#4:
no (无效字符)
数据范围及提示 Data Size & Hint
邮箱字符串长度<=255
分类标签 Tags 点此展开
暂无标签
题解:
模拟即可
AC代码:
#include<cstdio> #include<cstring> using namespace std; char s[300]; inline bool judge(char &ch){ return (ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')||(ch>='0'&&ch<='9')||(ch=='_'); } int main(){ scanf("%s",s); int len=strlen(s); int ai=0;int flag=0; for(int i=0;i<len;i++) if(s[i]=='@'){ai=i;break;} if(!ai){puts("no");return 0;} for(int i=0;i<ai;i++) if(!judge(s[i])){puts("no");return 0;} if(!judge(s[ai+1])){puts("no");return 0;} for(int i=ai+2;i<len;i++) if(s[i]=='.'){ flag=1; if(!judge(s[i+1])){puts("no");return 0;} } if(!flag){puts("no");return 0;} puts("yes"); return 0; }