#include<stdio.h>#define N 10intmain(void){int key,mid,low=0,high=N-1,a[N]={1,6,1,8,7,1,9,5,3,1};printf("input a number to search ");scanf("%d",&key);while(low<=high){
mid=(low+high)/2;if(a[mid]>key) high=mid-1;elseif(a[mid]<key) low=mid-1;elsebreak;}if(low>high)printf("not found %d\n",key);elseprintf("found a[%d]=%d\n",mid+1,key);return0;}
二进制转换
#include<stdio.h>intmain(int argc,charconst*argV[]){int number;// scanf("%d",&number);
number =0xaaaaaaaa;unsigned mask =1u<<31;for(;mask;mask>>=1){printf("%d",number & mask?1:0);}printf("\n");return0;}
汉诺塔
#include<stdio.h>//#include<conio.h>//#include <windows.h>voidHanoi(int n,char a,char b,char c);voidMove(int n,char a,char b);int count;intmain(){int n=8;printf("汉诺塔的层数:\n");scanf(" %d",&n);Hanoi(n,'A','B','C');// Sleep(20000);// getche();system("pause");return0;}voidHanoi(int n,char a,char b,char c){if(n ==1){Move(n, a, c);}else{Hanoi(n -1, a, c, b);Move(n, a, c);Hanoi(n -1, b, a, c);}}voidMove(int n,char a,char b){
count++;printf("第%-3d次移动\tMove %d: Move from %c to %c !\n",count,n,a,b);}/*
#include<stdio.h>
void Hanoi(int,char,char,char);
int main(){
int num;
puts("请输入盘子个数:");
scanf("%d",&num);
puts("---------------------------");
Hanoi(num,'A','B','C');
puts("---------------------------");
return 0;
}
void Hanoi(int num,char a,char b,char c){
if(num==1)
printf("%c-->%c\n",a,c);
else{
Hanoi(num-1,a,c,b);//n-1个盘子由A经过C移动到B
printf("%c-->%c\n",a,c);//hanoi(1,a,b,c);
Hanoi(num-1,b,a,c);//n-1个盘子由B经过A移动到C
}
}
*/