1.猜数字游戏
1.首先写出程序主体部分,使用do···while循环语句,实现程序至少运行一遍,然后判定是否再玩一次,switch case语句实现判定是否再玩一次。
int main()
{
int input=0;
do
{
menu();//菜单函数
printf("请选择>:");
scanf("%d",&input);
switch(input)
{
case 1:
game();//游戏运行函数
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
}while(input);
return 0;
}
2.建立菜单函数menu(),生成游戏的菜单界面
void menu()
{
printf("##########################\n");
printf("#### 1.play 0.exit ####\n");
printf("##########################\n");
}
程序运行生成菜单界面,输入1代表进行游戏,0代表退出游戏。switch case对输入值进行判定是否进行游戏。
3.游戏框架建立完成之后,进行game()函数的编写,实现游戏的功能。game()函数分为两部分:1.生成一个随机数;2.对所猜数字的大小进行判定
void game()
{
//1.生成一个随机数
int ret = 0;//接收生成的随机数
int guess = 0;//接收猜的数字
srand((unsigned int)time(NULL));//用时间戳来设置随机数的生成起始点
ret=rand()%100+1;//生成1-100之间的随机数
}
srand()设置随机数的生成起始点,为了是每次生成的起始点不同,引入时间戳函数time()进行设置,即srand((unsigned int)time(NULL))
//2.猜数字
while(1)
{
printf("请输入猜测的数字>:");
scanf("%d",&guess);
if(guess>ret)
{
printf("猜大了\n");
}
else if(guess<ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
while循环语句进行循环判定,直至猜到正确答案。if else语句对猜测的数字进行判定。
4.完整的程序
void menu()
{
printf("##########################\n");
printf("#### 1.play 0.exit ####\n");
printf("##########################\n");
}
void game()
{
//1.生成一个随机数
int ret = 0;//接收生成的随机数
int guess = 0;//接收猜的数字
ret=rand()%100+1;//生成1-100之间的随机数
//2.猜数字
while(1)
{
printf("请输入猜测的数字>:");
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));//用时间戳来设置随机数的生成起始点
do
{
menu();
printf("请选择>:");
scanf("%d",&input);
switch(input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
}while(input);
return 0;
}
程序运行结果
2.二分法查找数字
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9,10};
int k=7;
int sz=sizeof(arr)/sizeof(arr[0]);//计算元素个数
int left=0;//左下标
int right=sz-1;//右下标
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]>k)
{
right=mid-1;
}
else if(arr[mid]<k)
{
left=mid+1;
}
else
{
printf("找到了,下标为:%d\n",mid);
break;
}
}
if(left>right)
printf("找不到\n");
return 0;
}
利用sizeof(arr)/sizeof(arr[0])计算数组arr[]的元素个数sz,创立元素的左下标(int left=0)和右下标(int right=sz-1)
使用while循环语句对所找元素进行循环判定,int mid=(left+right)/2设立中间下标,让arr[mid]与所找元素相比较
如果arr[mid]大了,则右下标就变为right=mid-1;如果arr[mid]小了,则左下标就变为left=mid+1;如果arr[mid]=k,则找到所要找的数字,打印出数字的下标。