练习题1
程序员文章站
2022-04-03 22:34:23
...
1.完成猜数字游戏
思路:每次进入游戏用rand()函数产生一个随机数,将该数与玩家输入的数相比较,如果玩家的数大于随机数,则输出“猜大了”,如果玩家的数小于随机数,则输出“猜小了”,如果两个数相等,则输出“猜对了”。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu(){
printf("**********************\n");
printf("*******1.Game*********\n");
printf("*******0.Exit*********\n");
printf("**********************\n");
}
void Game(){
//rand()产生0-RAND_MAX(最小值为32767)之间的随机数,因为rand函数产生的随机数不变,所以需要用srand()函数
//产生1到100的随机数字
int random_num = rand() % 100 + 1;
//玩家输入的数
int input = 0;
while (1){
printf("请输入您猜的数字:");
scanf("%d", &input);
if (input > random_num){
printf("猜大了!\n");
}else if (input < random_num){
printf("猜小了!\n");
}
else{
printf("恭喜你,猜对啦!\n");
break;
}
}
}
int main(){
int input = 0;
//srand()为随机种子,time()为当前时间戳,不会重复,time的返回值类型unsigned long型
//参数为NULL表示不保存返回值
srand((unsigned)time(NULL));
do{
menu();
printf("请输入你的选择:");
scanf("%d", &input);
switch (input){
case 1:
Game();
break;
case 0:
printf("退出游戏!\n");
break;
default:
printf("您的输入有误,请重新输入:");
break;
}
} while (input);
system("pause");
return 0;
}
2.在整型有序数组中查找想要找的数字,找到了返回其下标。(折半查找)
思路:
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//实现二分查找函数
int binarySearch(int arr[], int left, int right, int key){
int mid = 0;
while(left <= right){
mid = (left + right) / 2;
if (arr[mid] < key){
left = mid + 1;
}
else if (arr[mid]>key){
right = mid - 1;
}
else
return mid;
}
return -1;
}
int main(){
int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int left = 0;
int key = 0;
printf("请输入关键字");
scanf("%d", &key);
//int mid = 0;
int right = sizeof(arr) / sizeof(arr[0])-1;
int a = binarySearch(arr, 0, right, key);
if (a == -1){
printf("找不到!\n");
}
else{
printf("找到啦!下标是%d\n", a);
}
system("pause");
return 0;
}
3.模拟登录场景,只能输三次密码,密码正确,提示登录成功,密码错误,可以重新输入,三次均错,退出程序
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char password[10] = "";
int i = 0;
for (; i < 3; i++){
printf("请输入密码:");
scanf("%s", password);
//密码为123456
if (strcmp(password, "123456") == 0){
break;
}
}
if (i< 3){
printf("登录成功!\n");
}
else{
printf("禁止登录!\n");
}
system("pause");
}
4.写一个程序,一直可以接收键盘字符,如果是大写字符就输出为小写,如果是小写就输出为大写,如果是数字就不输出。
思路:getchar()获得字符,putchar()输出字符,大写转小写:用字符加上32,小写转大写:字符减32。
代码:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int main(){
char chars = '0 ';
printf("请输入:");
while ((chars=getchar())!=EOF){
if (chars >= 'A'&&chars <= 'Z'){
chars += 32;
putchar(chars);
}else if (chars >= 'a'&&chars <= 'z'){
chars -= 32;
putchar(chars);
}else if (chars >= '0'&&chars <= '9'){
;
}else
putchar(chars);
}
system("pause");
}