c语言中循环,分支语句例子

分享一些有意思的代码

目录

例一:编写代码使得字符从两边向中间显示

思路:

实现:

例二:模拟密码输入界面(strcmp的使用)

例三:猜数字游戏

实现:

例四:整蛊小程序


例一:编写代码使得字符从两边向中间显示

 

 

思路:

1.使用两个数组,分别存放两个字符数组:arr1放****,arr2放要显示的字符

2.通过左右同时替换数组元素实现字符的出现

3.优化:通过清屏停留使界面更加美观

实现:

1和2:基本思路

#include<stdio.h>
int main()
{
	char arr1[] = "***********";
	char arr2[] = "hello world";
	int len=strlen(arr1);//通过strlen函数算出arr1的长度
                         //(strlen依次读取字符数组,遇到\0停下,个数不包含\0)
	int left = 0;
	int right =len-1;//因为l数组下标从0开始,所以len要减一
	printf("%s\n", arr1);
	for (;left<=right;)//换位显示
	{
		arr1[left] = arr2[left];
		arr1[right] = arr2[right];
		left++;
		right--;
		printf("%s\n", arr1);
	}

	return 0;
}

3.优化

使用系统指令来实现清屏和界面停留

首先要引头文件:<Windows.h>

休眠函数:Sleep(休眠的时间)

系统指令调用函数:system("指令")(cls为清屏指令)

实现

#include<stdio.h>
#include<Windows.h>
int main()
{
	char arr1[] = "***********";
	char arr2[] = "hello world";
	int len=strlen(arr1);
	int left = 0;
	int right =len-1;
	printf("%s\n", arr1);
	Sleep(1000);
	for (;left<=right;)
	{
		system("cls");
		arr1[left] = arr2[left];
		arr1[right] = arr2[right];
		left++;
		right--;
		printf("%s\n", arr1);
		Sleep(1000);
	}

	return 0;
}

例二:模拟密码输入界面(strcmp的使用)

要求:只能输入三次

字符数组的比较只能使用strcmp(数组1,数组2),其返回一个int类型的数,相等才返回0

(注意:需要引用头文件:<string.h>

原理:按照数组顺序比较每一个元素的ascii值,全部相等返回0

实现:

#include<stdio.h>
int main()
{
	char password[20] = "123456";//自己定的密码

	printf("请输入密码:");
	
	for (int i = 3; i > 0; i--)
	{	char input[20] = { 0 };
		scanf("%s", input);
		if (strcmp(input, password) == 0)
		{
			
				printf("输入成功");
			break;
		}
		else
		{
			printf("输入错误,请重新输入");
		}
	}
	return 0;
}

例三:猜数字游戏

要求:生成一个1~100随机数,猜其大小,输入猜的数,大于随机数提示"猜大了",小于提示"猜小了"

实现:

1.生成菜单

	int a = 0;
	printf("****************************");
	printf("***   1.开始     2.结束  ***");
	printf("***                      ***");
	printf("****************************");
	printf("请输入选择:");
	scanf("%d", &a);

2.生成随机数

需要使用三个函数:rand(),srand()

注意:rand需要srand初始化,不然会为固定顺序的数组

一个时间函数time(需要引头文件<time.h>):因为任何一个时刻的时间都不重复,所以用时间来生成随机数非常合适,其也被称为时间戳。

注意:time(NULL)NULL为空指针,即为0

实现 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
	srand((unsigned int)time(NULL));//注意srand只需要调用一次即可,不然随机数不够随机
		int i = rand()%100+1;
	return 0;
}

注意:1srand只需要调用一次即可,不然随机数不够随机

           2.time(NULL) NULL为空指针,即为0

           3.(unsigned int)time括号里面表示强制类型转换为无符号整形,因为time()原本的返                   回值为time_t,不安全,unsigned int安全     

           4.因为值需要1~100,所以需要rand()%100,对其取余数,为0~99,加一为1~100

3.编写主逻辑

		int input = 0;
		do {
	         scanf("%d", &input);
			if (input == i)
			{
				printf("猜对了");
				break;
			}
			else if (input > i)
			{
				printf("猜大了,请再猜");
			}
			else
			{
				printf("猜小了,请再猜");
			}
		} while (1);

所以一结合,啪一下就出来了

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
void menu()
{

	printf("****************************\n");
	printf("***   1.开始     2.结束  ***\n");
	printf("***                      ***\n");
	printf("****************************\n");

}

int main()
{
	menu();	
	int a = 0;
	printf("请输入选择:");
	scanf("%d", &a);
	if (a == 1)
	{
		srand((unsigned int)time(NULL));
		int i = rand()%100+1;
		int input = 0;
		printf("请输入所猜数字");
		do {
		
			scanf("%d", &input);
			if (input == i)
			{
				printf("猜对了");
				break;
			}
			else if (input > i)
			{
				printf("猜大了,请再猜:");
			}
			else
			{
				printf("猜小了,请再猜:");
			}
		} while (1);
	}
	else if (a == 2)
		return;
	else
	{
		printf("输入错误,请重新输入:");
	}
	return 0;
}

例四:整蛊小程序

要求:运行时开始倒计时关机,输入"我是猪"解除倒计时

 实现:

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<windows.h>
#include<string.h>
int main()
{
	char arr[10] = { 0 };
	char arr2[10] = "我是猪";
	system("shutdown -s -t 60");
	printf("你的电脑将在1分钟后关机,请输入“我是猪”解除关机\n");
	do {
		scanf("%s", arr);
		if (strcmp(arr, arr2) == 0)
		{
			system("shutdown -a");
			printf("乖,真听话");
			break;
		}
		else
		{
			printf("输入错误,请重新输入\n");
		}
	} while (1);
	return 0;
}

system()为系统指令调用函数,shutdown为关机指令,-s为关机,-t为设置时间,后面需要跟着时间,单位为秒;-a为取消关机指令。

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值