1. 程式人生 > >初階C-1101,for迴圈的訓練小程式設計

初階C-1101,for迴圈的訓練小程式設計

title: 初階C-1101
date: 2018-11-04 23:18:04
tags: C初階

1.完成猜數字遊戲。

原始檔內需執行的

int main(){
	while (1){
		printf("輸入1,開始遊戲\n");
		printf("輸入0,退出遊戲\n");
		int i = 0;
		scanf("%d", &i);
		if (i == 1){
			Game();
		}
		else if(i == 0){
			printf("goodbye!\n");
			break;
		}
		else{
			printf("請重新輸入!\n");
		}
	}
	system("pause");
	return 0;
}

標頭檔案.h

#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
#include<windows.h>
void Game(){
	int num = 0;
	int result = 0;
	srand((unsigned int)time(NULL));
	result = rand() % 100 + 1;
	do{
		printf("請輸入一個數:");
		scanf("%d", &num);
		if (num < result){
			printf("lower\n");
		}
		else if(num > result){
			printf("higher\n");
		}
	} while (num != result);
	printf("congratulations!\n");
}

2.寫程式碼可以在整型有序陣列中查詢想要的數字,找到了返回下標,找不到返回-1.(折半查詢)

void find(){
	int arr[] = { 11, 12, 13, 14, 15, 16, 17, 18, 19 };
	int left = 0;
	int right = sizeof(arr) / sizeof(arr[0]) - 1;//減一是因為陣列下標規則
	int i = 0;
	int mid = (left + right) / 2;
	printf("輸入一個數字進行查詢:");
	scanf("%d", &i);
	while (left <= right){//在左邊數小於右邊數的情況下	
		mid = (left + right) / 2;
		if (arr[mid] < i){
			left =mid + 1;
		}
		else if(arr[mid] > i){
			right = mid - 1;
		}
		else{
			break;
		}
	}
	if (arr[mid] == i){
		printf("%d", mid);
	}
	else{
		printf("-1");
	}
}

3.編寫程式碼模擬三次密碼輸入的場景。 最多能輸入三次密碼,密碼正確,提示“登入成功”,密碼錯誤,可以重新輸入,最多輸入三次。三次均錯,則提示退出程式。

void login(){
	char pass[1024] = {};
	char password[] = "123456";
		for (int i = 0; i < 3; i++){
			printf("Please enter you password:\n");
				scanf("%s", &pass);
		if (strcmp(password, pass) == 0){
			printf("Welcome to system!\n");
			break;
		}
	}printf("sorry,exiting");
}

4.編寫一個程式,可以一直接收鍵盤字元,如果是小寫字元就輸出對應的大寫字元,如果接收的是大寫字元,就輸出對應的小寫字元,如果是數字不輸出。

void receive(){
	printf("please enter successively\n");
	while(1)//永真情況下。永遠進行迴圈。在字元數c為數字時跳出迴圈。
	{
		char c;
		c = getchar();//從控制檯讀取一個字元,但不顯示在螢幕上。
		if (c >= 48 && c <= 57){
			break;
		}
		putchar(c);
	}
}

本次作業都是一些關於for和while迴圈的一些用法。第二題是需要好好思考一下的,難點在於中間值在比較過後,向右還是向左的問題。最後一定要break退出,否則會無法跳出迴圈。