简单的猜数字游戏,二分查找,杨辉三角
2016-07-01 14:01
204 查看
猜数字游戏:
二分查找:
以上二分查找中,用mid=left-(left-right)/2来代替mid=(left+right)/2,以防止数据溢出,也可用不常用的方法(ieft&right)+((left^right)>>1)方法来做。
杨辉三角:
#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; }
相关文章推荐
- UE4 射线拾取&三维画线
- Could not load the "" image referenced from a nib in the bundle with identifier "com.****.***
- hibernate示例-保存对象
- [魅族Degao]Android客户端性能优化
- spring bean生命周期管理--转
- Spring 事务传播行为
- android studio 导入第三方库的记录
- Phoenix查询抛InsufficientMemoryException异常
- MySql 远程导出数据
- Exchange2010升级到2016Q&A——登陆Exchange2016 ECP被重定向到2010ECP
- android onInterceptTouchEvent事件
- Exchange2007升级到Exchange2013(8)——迁移注意事项
- 根据 MySQL 状态优化 ---- 2. 连接数
- day05_作业要求
- 数据库分片(Sharding)技术
- 编写一个程序实现顺序表的各种基本运算(假设顺序表的元数基本类型为Char)
- ARC机制
- IntelliJ IDEA常用快捷键——基于Eclipse
- bat 监视进程
- Android进阶之路——安卓编程规范