[C语言]利用C语言设置密码(字符串对比strcmp函数使用),以及猜数字1~100小游戏详解(伪随机数生成法)

本文介绍了如何使用C语言实现密码验证功能,利用strcmp函数比较用户输入与预设密码,同时展示了如何通过srand和rand生成1~100的伪随机数,用于猜数字游戏。
摘要由CSDN通过智能技术生成

1、利用C语言设置密码

设置密码的主要运用到的函数是strcmp,此函数包含的头文件为string.h

函数的运用为,对比两个字符串,如果前面的字符串ASCII值大于后面的ASCII值则大于0,小于既小于0,等于既等于0,利用这个原理写以下程序即可得到一个输入密码的程序

#define _CRT_SECURE_NO_WARNINGS
#include <string.h>
#include <stdio.h>
//登录密码假设密码为123456
int main()
{
	char a[10] = { 0 };
	int i = 1;
	while (i <= 3)
	{
		printf("请输入六位数密码:");
		scanf("%s", a);//数组本来就是地址,无需加"&"
		if (strcmp(a,"123456")==0)//strcmp比较字符串比较的是ACSII码值
		{
			printf("输入正确\n");
			break;
		}
		else
		{
			i++;
			if (i == 4)
				break;
			printf("输入错误请重新输入密码\n");
		}
	}C
	if (i == 4)
		printf("输入次数过多请稍后再试");
	else
		printf("欢迎");
	return 0;
}

2、猜数字1~100小游戏

此程序难点在于如何生成一个1~100的伪随机数,其他都是很轻而易举的操作,这里我们用到的主要是srand((unsigned int)time(NULL))以及rand()这两个函数来生成伪随机数,我们可以看到每次使用rand函数生成的顺序其实都是一样的,并不是真正意义上的随机数,我们只需用srand的函数来改变种子生成的起点,既可以完成真正意义上的伪随机数,但是srand函数如何产生一个随机的起点呢,我们可以借助time函数来完成,将NULL(也就是没有输入)输入到time里面返回的是现在的时间减去1970年1月1日的一个很大的数,返回的类型为time_t类型,其实也就是很大的一个整型,我们只需要用unsigned int 改变其类型就可以将其运用到srand函数来产生一个依时间变换的随机种子,但是此步骤最好加在游戏的循环外侧,不然容易两次的生成随机数挨的非常近。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
void game()
{
	int a = ((rand()) % 100) + 1;
	int b = 0;
	while (a != b)
	{
		printf("请猜测随机数为多少:");
		scanf("%d", &b);
		if (b > a)
		{
			printf("输入数字过大\n");
		}
		else if (b < a)
		{
			printf("输入数字过小\n");
		}
		else
		{
			printf("恭喜你猜测正确!\n");
		}
	}
}
	int main()
	{
		srand((unsigned int)time(NULL));
		int i=0;
		do
		{
			printf("* 输入1/0是否玩游戏*\n");
			printf("*******1.play*******\n");
			printf("*******0.Exit*******\n");
			printf("********************\n");
			scanf("%d", &i);
			switch (i)
			{
			case 1:
				game();
				break;
			case 0:
				break;
			default:
				printf("输入错误\n");
				break;
			}
		} while (i);
		return 0;
	}

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值