1. 程式人生 > >猜數字小遊戲+折半查詢法(二分法)+三次密碼輸入+字母大小寫轉換

猜數字小遊戲+折半查詢法(二分法)+三次密碼輸入+字母大小寫轉換

猜數字小遊戲:

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
/*
	猜數字小遊戲
*/
int menu() {
	printf("**********1.開始遊戲**********\n");
	printf("**********0.結束遊戲**********\n");
	printf("\n\n");
	int choice = 0;
	printf("請選擇選單:");
	while (1) {
		scanf("%d", &choice);
		if (choice == 1) {
			return 1;
		} else if (choice == 0) {
			printf("遊戲結束\n");
			return 0;
		} else {
			printf("輸入有誤,請重新輸入\n");
		}
	}
}

void game() {
	srand((unsigned int)time(0));
	int num = rand() % 100 + 1;
	printf("請輸入你所猜的數字(1 - 100)\n");
	while (1) {
		int guess = 0;
		scanf("%d", &guess);
		if (guess > num) {
			printf("高了\n");
		} else if (guess < num) {
			printf("低了\n");
		} else {
			printf("恭喜你,猜對了\n");
			break;
		}
	}
}

int main() {

	while (menu() == 1) {
		game();
	}
	return 0;

}

折半查詢法(二分法):

#include<stdio.h>
/*
	用折半查詢發查詢想要的數字
*/
int main() {

	int a[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
	int left = 0;
	int right = sizeof(a) / sizeof(a[0]);
	printf("請輸入你要找的數字:\n");
	int num = 0;
	scanf("%d", &num);
	while (left <= right) {
		int temp = (left + right) / 2;
		if (num > a[temp]) {
			left = temp + 1;
		} else if (num < a[temp]) {
			right = temp - 1;
		} else {
			printf("找到了,在 %d 的位置\n", temp);
			break;
		}
	}
	if (left > right) {
		printf("沒找到\n");
	}
	return 0;

}

三次密碼輸入:

#include<stdio.h>
#include<string.h>
/*
	輸入密碼,最多給3次機會
*/
int main() {

	char password[1024] = { 0 };
	printf("請輸入你的密碼: \n");
	int i = 0;
	for ( ; i < 3; i++) {
		scanf("%s", &password);
		if (strcmp(password, "1234aa..") == 0) {
			printf("密碼正確,登陸成功\n");
			break;
		}
		printf("密碼錯誤,請重新輸入\n");
	}
	if (i == 3) {
		printf("登陸失敗\n");
	}
	return 0;

}

字母大小寫轉換:
(數字及其他字元不能轉換)

#include<stdio.h>
/*
	字母的大小寫轉換
*/
int menu() {
	printf("**********1.  轉換  **********\n");
	printf("**********0.結束轉換**********\n");
	int choice = 0;
	while (1) {
		scanf("%d", &choice);
		if (choice == 1) {
			return 1;
		} else if (choice == 0) {
			return 0;
		} else {
			printf("輸入有誤,請重新輸入\n");
		}
	}
}

void exchange() {
	printf("請輸入你要轉換大小寫的字母\n");
	char c;
	while ((c = getchar()) != '\n');
	c = getchar();
	if (c >= 'a' && c <= 'z') {
		printf("%c\n", c - 32);
	} else if (c >= 'A' && c <= 'Z') {
		printf("%c\n", c + 32);
		
	} else {
		printf("不存在大小寫轉換\n");
	}
	while ((c = getchar()) != '\n');
}

int main() {

	char c = 0;
	while (menu() == 1) {
		exchange();
	}
	return 0;

}