在整形有序数组中查找想要的数字
二分法查找(binary_search)
#include <stdio.h>
int binary_search(int arr[], int x, int sz)
{
int left = 0;
int right = sz-1;
while(left<=right)
{
int mid = 0;
mid = left + (right-left)/2;
if(x == arr[mid])
{
return mid;
}
else if(x < arr[mid])
{
right = mid-1;
}
else
{
left = mid+1;
}
}
return -1;
}
int main()
{
int arr[]={1,2,3,4,5,6,7,8,9};
int x = 0;
int sz = sizeof(arr)/sizeof(arr[0]);
int ret = binary_search(arr,x,sz);
if(ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了,下标为%d",ret);
}
return 0;
}
猜数字游戏
猜1-100之间的数字小游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("************************\n");
printf("***** 1.开始游戏 ******\n");
printf("***** 0.退出游戏 ******\n");
printf("************************\n");
}
void game()
{
int x = 0;
int y = 0;
x = rand()%100; //将这个数取模100,得到100以内的数
while(1)
{
scanf("%d",&y);
if(y>x)
{
printf("猜大了\n");
}
else if(y<x)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int i = 0;
srand((unsigned int)time(NULL));//随机一个数,这个数大于3w
do //至少玩一次游戏
{
menu();
printf("请选择");
scanf("%d",&i);
switch(i)
{
case 1:
printf("游戏开始,请输入数字:");
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("输入错误\n");
break;
}
}
while(i);
return 0;
}
模拟三次密码输入的场景
如果三次输入错误,将退出程序。
#include <stdio.h>
#include <windows.h>
int main()
{
char password[20] = {0};
int i = 0;
for(i=1; i<=3; i++)
{
printf("输入密码:");
scanf("%s",password);
if(strcmp(password,"123456") == 0)
{
printf("登陆成功\n");
break;
}
else
{
printf("密码错误\n");
}
if(i == 3)
{
printf("三次密码错误,退出程序\n");
}
}
return 0;
}
输入字母,输出对应的大小写字母,输入数字不输出
#include <stdio.h>
int main()
{
int ch = 0;
while((ch=getchar()) != EOF)
{
//sacii码表中数字的对应值为48-57
if(ch >= 48 && ch <= 57)
{
printf("数字,不输出\n");
}
//sacii码表中字母小写的对应值为97-122,
//对应的大写为sacii码值减去32
else if(ch >= 97 && ch <= 122)
{
putchar(ch-32);
printf("\n");
}
//sacii码表中字母小写的对应值为65-90,
//对应的大写为sacii码值加上32
else if(ch >=65 && ch <= 90)
{
putchar(ch+32);
printf("\n");
}
}
return 0;
}