【C语言】题目25 - 描述:请输入密码,然后输入 Y 是确认密码,N 是确认失败!

186 阅读3分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

📢Hello,大家好,我是泽奀,一起学习进步(●'◡'●)
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

前言

"尽管自身在一个恶劣的情况下,我们也要保持一个有目标的♥“!

题目描述

请输入密码,然后输入 Y 是确认密码,N 是确认失败!

题目分析

  • 首先我们要输入密码,那么我们就要创建一个数组。然后用输入函数scanf()进行输入密码
  • 输入密码我们可以用getchar()输入函数,作用是向显示设备进行输入①个无符号字符。
  • 但是在这里我们需要注意下:当我们程序scanf()函数在读取缓冲区时候有**\n(原因是因为我们回车输入的是'\n'),切记缓冲区会保留'\n'并不会把它读取。**
  • 所以,我们应该把'\n'的这个字符给读取了,所以我们因该实现一个功能搭建while()循环直到把缓冲区的'\n'读取完毕。
  • 程序实现:while ((ch = getchar()) != '\n');
  • 读取完毕之后,我们再用getchar()输入函数输入①个单个字符。
  • 然后,用判断输入 Y 是确认成功,N 是确认失败。如果不是输入这两个字符,那么就会打印出:宁输入的格式有误。

题目代码

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{
	char password[20] = { 0 };
	int ret = 0;
	printf("请输入密码:");
	//password是数组名,数组名本身就已经取地址了。
	scanf("%s", password);
	//当我们程序scanf函数在读取缓冲区时候有\n,所以我们应该把\n的这个字符给读取了!注意缓冲区会保留\n
	while(getchar()!='\n');//过滤换行符
	printf("请确认密码(Y/N):");
	ret = getchar();//读取完毕之后,再进行getchar()的一个输入
	if (ret == 'Y')
	{
		printf("确认成功!\n");
	}
	else if (ret == 'N')
	{
		printf("确认失败!\n");
	}
	else
	{
		printf("宁输入的格式有误!\n");
	}
	return 0;
}

注:使用gets()函数可以直接把输入的'\n'给一并读取了,此时就不需要用getchar()了

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main(void)
{		char password[20] = { 0 };
		char ret = 0;
		printf("请输入密码:");
		//password是数组名,数组名本身就已经取地址了。
		gets(password);
		//当我们程序scanf函数在读取缓冲区时候有\n,所以我们应该把\n的这个字符给读取了!注意缓冲区会保留\n
		//getchar();//过滤换行符
		printf("请确认密码(Y/N):");
		ret = getchar();//读取完毕之后,再进行getchar()的一个输入
		if (ret == 'Y')
		{
			printf("确认成功!\n");
		}
		else if (ret == 'N')
		{
			printf("确认失败!\n");
		}
		else
		{
			printf("宁输入的格式有误!\n");
		}
}

运行结果

  • 请输入密码:123456
  • 请确认密码(Y/N):Y
  • 确认成功!

最后

那么本道题目的讲解就先到这里了,如果你学会了的话。就请继续关注这个系列,博主会坚持下去的,加油💪