猜数字游戏:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void Print_menu()
{
printf("********请选择:**********\n");
printf("********1:开始游戏********\n");
printf("********0:退出游戏********\n");
}
void Guess_num()
{
int input=1;
while(input)
{
Print_menu();
scanf("%d",&input);
switch(input)
{
case 1:
{
int ret=0;
printf("游戏开始\n");
srand((unsigned)time(NULL));
ret=rand()%100;//随机数产生范围1-100
while(1)
{
int num=0;
printf("请猜:");
scanf("%d",&num);
if(num>ret)
{
printf("你猜大了\n");
}
else if(num<ret)
{
printf("你猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
break;
}
case 0:
{
printf("退出游戏\n");
exit(0);
}
default:
printf("请输入正确选项\n");
break;
}
}
}
int main()
{
Guess_num();
system("pause");
return 0;
}
二分查找:
#include <stdio.h>
#include <stdlib.h>
int bin_search(int arr[],int num,int left,int right)
{
while(left<=right)
{
int mid=left-(left-right)/2;//mid=(left+right)/2 or mid=(left&right)+((left^right)>>1)
if(arr[mid]>num)
{
right=mid-1;
}
else if(arr[mid]<num)
{
left=mid+1;
}
else
{
return mid;
}
}
return -1;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
int left=0;
int right=(sizeof(arr)/sizeof(arr[0]))-1;
int num=0;
int ret=0;
printf("请输入要查找的数字:");
scanf("%d",&num);
ret=bin_search(arr,num,left,right);
if(ret!=-1)
{
printf("找到这个数字,下标为:%d\n",ret);
}
else
{
printf("没有这个数字\n");
}
system("pause");
return 0;
}
以上二分查找中,用mid=left-(left-right)/2来代替mid=(left+right)/2,以防止数据溢出,也可用不常用的方法(ieft&right)+((left^right)>>1)方法来做。
杨辉三角:
#include <stdio.h>
#include <stdlib.h>
#define line 10
void Print(int arr[][line])
{
int i=0;
for(i=0;i<line;i++)
{
int j=0;
for(j=0;j<=line-i;j++)
{
printf(" ");
}
for(j=0;j<=i;j++)
{
printf("%3d ",arr[i][j]);
}
printf("\n");
}
}
void Yh_triangle(int arr[][line])
{
int i=0;
for(i=0;i<line;i++)
{
int j=0;
for(j=0;j<=i;j++)
{
if(j==0)
{
arr[i][j]=1;
}
if(j==i)
{
arr[i][j]=1;
}
if((j!=0)&&(j<i))
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
Print(arr);
}
int main()
{
int arr[line][line];
Yh_triangle(arr);
system("pause");
return 0;
}