题目:
编写代码实现,模拟用户登录情景,并且只能登录三次。
只允许输入三次密码,
如果密码正确则提示登录成功,
如果三次均输入错误,则退出程序。
=========================================================================
思路:
总体思路:
(一). 生成相关变量、存放输入数据的字符数组,
再设置一个变量flag方便后面判断密码是否一致,
一致则把flag改为1,不一致则还是0。
(二). 使用for循环,循环输入三次数据。
(三) . 在for循环中设置if条件判断语句循环判断三次数据。
(四). 跳出for循环后,看变量flag情况打印退出程序信息。
第一步:
(1). 生成相关变量。
(2). 生成存放输入数据的字符数组。
(3). 设置一个变量flag,
方便后面判断密码是否一致,
一致则把flag改为1,不一致则还是0.
实现代码:
#include <stdio.h> int main() { //生成相关变量: int i = 0; //循环变量 //生成存放输入数据的字符数组 char password[20] = { 0 }; //设置一个变量flag: int flag = 0; return 0; }
实现图片:
第二步:
(1). 使用for循环,循环输入三次数据。
(2). 输入字符串可以使用:scanf("%s", password);
因为 password 是数组名,是数组首地址,所以不用加取地址符&。
实现代码:
#include <stdio.h> int main() { //生成相关变量: int i = 0; //循环变量 //生成存放输入数据的字符数组 char password[20] = { 0 }; //设置一个变量flag: int flag = 0; //使用for循环,循环输入三次数据: for (i = 0; i < 3; i++) { //输入前先打印提示信息: printf("请输入密码:"); //输入数据: scanf("%s", password); //因为password是数组,数组名是数组首地址,所以不用取地址符& } return 0; }
实现图片:
第三步:
(1). 在for循环中设置if条件判断语句循环判断三次数据。
(2). 判断密码(字符串)是否相等:
两个字符串比较不能使用 == (等于),应该使用
strcmp(字符数组名,"要比较的字符串")
库函数,需添加头文件: <string.h> 。
strcmp 返回 0 :表示2个字符串相等;
strcmp 返回 >0 的数字:表示 第一个字符串 大于 第二个字符串;
strcmp 返回 <0 的数字:表示 第一个字符串 小于 第二个字符串。
字符串比较大小:比较的是对应位置字符的ASCII值。
如:
abcd 和 abq 比较:
第一位:a == a
第二位:b == b
第三位:c < q
c的ASCII值 小于 q的ASCII值
所以 abcd < abq
(3). 如果密码正确,打印相应信息,设置flag为1,使用break跳出循环。
(4). 如果密码错误,打印相应信息。
实现代码:
#include <stdio.h> #include <string.h> int main() { //生成相关变量: int i = 0; //循环变量 //生成存放输入数据的字符数组 char password[20] = { 0 }; //设置一个变量flag: int flag = 0; //使用for循环,循环输入三次数据: for (i = 0; i < 3; i++) { //输入前先打印提示信息: printf("请输入密码:"); //输入数据: scanf("%s", password); //因为password是数组,数组名是数组首地址,所以不用取地址符& //设置if条件判断语句循环判断三次数据 if (strcmp(password, "123456") == 0) //假设密码是 123456 ,如果相等会返回 0,说明输入的和密码相同 { printf("登录成功\n"); flag = 1; break; //成功则跳出循环 } else { printf("密码错误\n"); } } return 0; }
实现图片:
第四步:
跳出 for循环 后 ,看变量flag情况打印退出程序信息。
实现代码:
#include <stdio.h> #include <string.h> int main() { //生成相关变量: int i = 0; //循环变量 //生成存放输入数据的字符数组 char password[20] = { 0 }; //设置一个变量flag: int flag = 0; //使用for循环,循环输入三次数据: for (i = 0; i < 3; i++) { //输入前先打印提示信息: printf("请输入密码:"); //输入数据: scanf("%s", password); //因为password是数组,数组名是数组首地址,所以不用取地址符& //设置if条件判断语句循环判断三次数据 if (strcmp(password, "123456") == 0) //假设密码是 123456 ,如果相等会返回 0,说明输入的和密码相同 { printf("登录成功\n"); flag = 1; break; //成功则跳出循环 } else { printf("密码错误\n"); } } //跳出 for循环 后,看变量flag情况打印退出程序信息。 if (flag == 0) { printf("退出程序");//密码错误 则 退出程序 } return 0; }
实现图片:
最终代码和实现效果
最终代码:
#include <stdio.h> #include <string.h> int main() { //生成相关变量: int i = 0; //循环变量 //生成存放输入数据的字符数组 char password[20] = { 0 }; //设置一个变量flag: int flag = 0; //使用for循环,循环输入三次数据: for (i = 0; i < 3; i++) { //输入前先打印提示信息: printf("请输入密码:"); //输入数据: scanf("%s", password); //因为password是数组,数组名是数组首地址,所以不用取地址符& //设置if条件判断语句循环判断三次数据 if (strcmp(password, "123456") == 0) //假设密码是 123456 ,如果相等会返回 0,说明输入的和密码相同 { printf("登录成功\n"); flag = 1; break; //成功则跳出循环 } else { printf("密码错误\n"); } } //跳出 for循环 后,看变量flag情况打印退出程序信息。 if (flag == 0) { printf("退出程序");//密码错误 则 退出程序 } return 0; }
实现效果:
总结:
学习 strcmp()库函数 的使用:
用于判断两字符串是否相等,需添加头文件: <string.h> 。
strcmp(字符数组名,"要比较的字符串")
strcmp 返回 0 :表示2个字符串相等;
strcmp 返回 >0 的数字:表示 第一个字符串 大于 第二个字符串;
strcmp 返回 <0 的数字:表示 第一个字符串 小于 第二个字符串。
字符串比较大小:比较的是对应位置字符的ASCII值。