头文件:
/*
date:2018/12/02
author:Better_Me1
program:猜数字游戏、折半查找、模拟密码输入、键盘字符大小写转换
compiler:Visual Studio 2013
*/
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
1.完成猜数字游戏。
void menu(){
printf("**********猜数字游戏********\n");
printf("***** 1.play 2.exit *****\n");
printf("****************************\n");
}
void game(){
int number = rand()%100+1;
int n = 0;
while (1){
printf("请输入您猜的数字(1-100):>");
scanf("%d", &n);
if (n > number){
printf("高了!\n");
}
else if (n < number){
printf("低了!\n");
}
else{
printf("恭喜您,猜对了!\n");
break;
}
}
}
int main(){
int input = 0;
while (input!=2){
menu();
printf("请选择:>");
scanf("%d", &input);
switch (input){
case 1:
srand(time(0));//随机种子
game();
break;
case 2:
printf("退出游戏!\n");
break;
default:
printf("选择错误,请重新选择!\n");
break;
}
}
system("pause");
return 0;
}
运行效果:
2.写代码可以在整型有序数组中查找想要的数字, 找到了返回下标,找不到返回-1.(折半查找)
int find_number(int number){
int n[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };//有序数组;
int left = 0;
int right = sizeof(n) / sizeof(n[0]);
int mid = 0;
while (left <11 && right>=0){
mid = (left + right) / 2;
if (number > n[mid]){
left = mid + 1;
}
else if (number < n[mid]){
right = mid - 1;
}
else{
return mid;
break;
}
}
return -1;
}
int main(){
int number = 0;
printf("请输入你想找的数字:>");
scanf("%d", &number);
if (find_number(number) == -1){
printf("没找到!\n");
}
else{
printf("找到了!下标是:>%d\n", find_number(number));
}
system("pause");
return 0;
}
运行效果:
3.编写代码模拟三次密码输入的场景。 最多能输入三次密码,密码正确,提示“登录成功”,密码错误,
可以重新输入,最多输入三次。三次均错,则提示退出程序。
int main(){
int key = 0;
int k = 123456;
int count = 0;
while (count < 3){
printf("请输入密码:>");
scanf("%d", &key);
if (key == k){
printf("登录成功!\n");
break;
}
else{
printf("密码错误!\n");
}
count++;
}
if (count>=3){
printf("退出程序!\n");
}
system("pause");
return 0;
}
运行效果:
4.编写一个程序,可以一直接收键盘字符, 如果是小写字符就输出对应的大写字符, 如果接收的是大写字符,就输出对应的小写字符, 如果是数字不输出。
void menu(){
printf("****************************\n");
printf("**** 1.输入字符 2.退出 ****\n");
printf("****************************\n");
}
void convert(char c){
if ((int)c >= 65 && (int)c <= 90){//大写字母
printf("%c\n", (int)c + 32);
}
else if ((int)c >= 97 && (int)c <= 122){//小写字母
printf("%c\n", (int)c - 32);
}
}
int main(){
int input = 0;
char c;//接收字符
while (1){
menu();
fflush(stdin);//由于scanf会接收与用户输入的换行符,fflush(stdin)用来清空换行符
printf("请选择:>");
scanf("%d", &input);
if (input == 1){
fflush(stdin);
printf("请输入字符:>");
scanf("%c", &c);
convert(c);
}
else if (input == 2){
break;
}
else{
printf("输入错误,请重新选择!\n");
}
}
system("pause");
return 0;
}
运行效果:
总结:
1.随机种子:
函数srand:这个函数是给随机数产生一个随机种子(seed),函数原型是srand( (unsigned time(NULL));
time的值每时每刻都不同。所以种子不同,产生的随机数也不同,
在这个游戏中是为了避免每次重新运行时和上次运行产生的随机数相同。
2.清空输入缓冲区
fflush(stdin):程序中由于scanf会接收与用户输入的换行符,因此用fflush(stdin)用来清空换行符。