1、猜数字游戏
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("********************************************\n");
printf("*********** 1、猜数字 ***********\n");
printf("*********** 0、退出游戏 ***********\n");
printf("********************************************\n");
}
void game()
{
//生成随机数
//NULL初始化指针
//int a = 0;
//int* p = NULL;
int guess = 0;
int ret = rand()%100+1; //返回0-32767的数字,对100取模后返回后两位0-99的数字,加1后返回1-100的数字
//printf("%d\n",ret);
//猜数字
while (1)
{
printf("请猜数字:\n");
scanf("%d",&guess);
if (guess > ret)
{
printf("猜大了。。\n");
}
else if (guess < ret)
{
printf("猜小了。。\n");
}
else
{
printf("老铁,你猜对了!\n");
break;
}
}
}
int main()
{
int input=0;
srand((unsigned int)time(NULL)); //只能调用一次,并且在rand()函数之前
do
{
menu();
printf("请选择1或者0:\n");
scanf("%d",&input);
switch (input)
{
case 1:
{
printf("猜数字\n");
game();
break;
}
case 0:
{
printf("游戏结束\n");
break;
}
default:
printf("选择错误,请重新选择:\n");
break;
}
} while (input);
system("pause");
return 0;
}
2、写代码可以在整型有序数组中查找想要的数字,
找到了返回下标,找不到返回-1(折半查找、二分查找)
#include<stdio.h>
#include<stdlib.h>
int BinarySearch(int arr[], int k, int left, int right) //递归实现
{
if (left > right)
{
return -1;
}
else
{ //一定注意↓↓↓
int mid = left + (right - left) / 2; //这一行必须放在循环里面,否则while()就成死循环了
if (arr[mid] > k)
{
BinarySearch(arr, k, left, mid - 1);
}
else if (arr[mid] < k)
{
BinarySearch(arr, k, mid + 1, right);
}
}
}
int binary_search(int arr[],int k,int left,int right) //非递归实现
{ //定义binary_search()函数,有四个参数
while (left <= right)
{
int mid = left + (right - left) / 2; //求中间元素的下标
if (arr[mid] > k)
{
right = mid - 1;
}
else if (arr[mid] < k)
{
left = mid + 1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int left = 0;
int right = sizeof(arr) / sizeof(arr[0]) - 1; //求数组最后一个元素的下标
int ret = binary_search(arr, 7, left, right); //binary_search()函数的返回值存到ret里面去
if (-1 == ret)
{
printf("找不到\n");
}
else
{
printf("找到了,下标是:%d\n",ret);
}
system("pause");
}
3、编写代码模拟三次密码输入的场景。
最多能输入三次密码,密码正确,提示“登录成功”,密码错误,
可以重新输入,最多输入三次。三次均错,则提示退出程序。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i = 0;
char password[20] = {0};
for (i = 0; i < 3; i++)
{
printf("请输入密码:\n");
scanf("%s",password); //strcmp()函数
if (strcmp(password, "123456") == 0) //如果返回值为0,说明字符串相同
{ //如果返回值小于0,说明前小于后
printf("登陆成功!"); //如果返回值大于0,说明前大于后
break;
}
else
{
printf("密码错误,请重新输入");
}
}
system("pause");
return 0;
}
4、编写一个程序,可以一直接收键盘字符,
如果是小写字符就输出对应的大写字符,
如果接收的是大写字符,就输出对应的小写字符,
如果是数字不输出。
#include<stdio.h>
#include<stdlib.h>
int main()
{
//char a;
char ch;
//for (a = 'a'; ((int)a < 65 || ((int)a > 90 && (int)a < 97) || (int)a>122 )== 0;)
//{
while ((ch=getchar())!=EOF)
{
//if ((int)a >= 65 && (int)a <= 90) //大写转小写
if(ch>='A'&&ch<='Z')
{
printf("%c", (ch + 32));
}
//else if ((int)a >= 97 && (int)a <= 122) //小写转大写
else if(ch>='a'&&ch<='z')
{
printf("%c", (ch - 32));
}
else if (ch >= '0'&&ch <= '9')
{
;
}
else
{
putchar(ch);
}
}
//}
system("pause");
return 0;
}