欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

练习题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.在整型有序数组中查找想要找的数字,找到了返回其下标。(折半查找)

思路:
练习题1代码:

#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");
}