(来自 牛客网 编程初学者入门训练)
1.问题:
(链接呈上:登录验证)
描述
有个软件系统登录的用户名和密码为(用户名:admin,密码:admin),用户输入用户名和密码,判断是否登录成功。
输入描述:
多组测试数据,每行有两个用空格分开的字符串,第一个为用户名,第二个位密码。
输出描述:
针对每组输入测试数据,输出为一行,一个字符串(“Login Success!”或“Login Fail!”)。
示例1
输入:admin admin
输出:Login Success!
2.代码:
//#include<stdio.h>
//#define max 100
//int main()
//{
// char arr[max] = { 0 };
// char text[11] = "admin admin";
// int flag = 0;//标记!
// printf("请输入用户名 密码:");
// while (gets(arr) != EOF)
// {
// int i = 0;
// for (i = 0; i < 11; i++)
// {
// //方法一
// /*if (text[i] != arr[i])
// {
// printf("Login Fail!\n");
// break;
// }
// if (text[10] == arr[10])
// {
// printf("Login Success!\n");
// break;
// }*/
// //方法二
// if (text[i] != arr[i])
// {
// printf("Login Fail!\n");
// flag = 1;
// break;
// }
// }
// if (0 == flag)
// {
// printf("Login Success!\n");
// }
// }
// return 0;
//}
//方法三
#include<stdio.h>
#include<string.h>
#define max 100
int main()
{
char name[max] = { 0 };
char password[max] = { 0 };
while (scanf("%s %s", &name, &password) != EOF)//数组名!
{
//if ((name == "admin") && (password == "admin"))
if (strcmp(name, "admin") == 0 && strcmp(password, "admin") == 0)
{
printf("Login Success!\n");
}
else
{
printf("Login Fail!\n");
}
}
return 0;
}
3.说明:
方法一、二均会显示超时,但是均可实现—所用原理是 把空格也当成字符;
方法三可以达到实现的效果 ,但是注意输入一串字符时用的是%s +数组名 ! 注意比较函数strcmp--strcmp(被比较的数组名,原油的比较的对象"")==0 则相等!
另一种被屏蔽的方法无法实现,因为输入数组后面还有字符,全为0
K_