猜数字游戏:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
菜单界面:
int menu()
{
//创建菜单,人机交互界面
printf("============\n");
printf(" 1.开始游戏\n");
printf(" 0.退出游戏\n");
printf("============\n");
printf("请输入您的选项:\n");
int choice = 0;
scanf("%d", &choice);
return choice;
}
游戏执行:
void game()
{
int to_guess = rand() % 100 + 1;
while (1)
{
printf("请输入一个整数:");
int num = 0;
scanf("%d", &num);
if (num < to_guess)
{
printf("低了!\n");
}
else if (num>to_guess)
{
printf("高了!\n");
}
else
{
printf("恭喜您猜对了!\n");
break;
}
}
}
主函数:
int main()
{
srand(( unsigned int) time(0));
while (1)
{
int choice = menu();
if (choice == 1)
{
game();
}
else printf("退出成功,再见!\n");}
return 0;
}
折半查找:
思路分析:找一个中间位置,去和查找数字比较,如果查找数字比中间位置的数大,说明在右边,反之在左边,注意边界left和边界right的更新
#include<stdio.h>
#include<stdlib.h>
int main()
{
int arr[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int to_find = 3;
int left = 0;
int right = 8;
//left>right时候,说明整个区间都已查找完
while (left <= right)
{
int mid = (left + right) / 2;
if (arr[mid] < to_find)
{
left = mid + 1;//表明只在右边查找
}
else if (arr[mid]>to_find)
{
right = mid - 1;
}
else break;
}
if (left>right)//说明整个区间查完,没找到
{
printf("不存在!\n");
}
else printf("存在!\n");
system("pause");
return 0;
}
模拟密码登录:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for (i = 1; i < 4; i++)
{
printf("请您输入密码:");
char password[10] = { 0 };
scanf("%s", password);
if (strcmp(password, "1241528539") == 0)
{
break;
}
}
if (i < 4)
{
printf("密码正确,登陆成功:\n");
}
else printf("密码错误超过三次,禁止登陆\n");
system("pause");
return 0;
}
转换字符大小写
思路分析: putchar(a - (‘A’ - ‘a’));//如果输入大写字母,转换为小写字母
#include<stdio.h>
#include<stdlib.h>
int main()
{
while (1)
{
char a;
a=getchar();
if (a<='z'&&a>='a')
{
putchar(a-('a'-'A'));//如果输入小写字母,转换为大写字母
}
else if (a <= 'Z'&&a >= 'A')
{
putchar(a - ('A' - 'a'));//如果输入大写字母,转换为小写字母
}
else if (isalnum(a))
{
// 如果输入的是数字,就什么也不做
}
if (a == ' ')//设定跳出条件为输入的字符为空格
{
break;
}
else putchar(a);//输入符号之类的正常输出
}
system("pause");
return 0;
}