初階C-1101,for迴圈的訓練小程式設計
阿新 • • 發佈:2018-12-02
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退出,否則會無法跳出迴圈。