分享一些有意思的代码
目录
例一:编写代码使得字符从两边向中间显示
如
思路:
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为取消关机指令。