1. 程式人生 > >C入門【五】(二)

C入門【五】(二)

3.編寫程式碼模擬三次密碼輸入的場景 且不得超過三次

//需求如題所示模擬登陸時 上次失敗則自動“封號“
題目難度不大,主要考慮迴圈條件何時退出

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
#include "stdlib.h"
/*
   需求分析:編寫程式碼模擬三次密碼輸入的場景 且不得超過三次
   過程分析:{
   			1.設定的登陸選單框架
   			2.設定比對器
   		}
*/
Meau(){
   printf("////////////////////\n");
   printf("///// 1.登陸  /////\n");
   printf("///// 0.退出  /////\n"
); printf("////////////////////\n"); } int Logger(){ char fir[10] = "123456"; char sec[10]; int i=0; int count = 1; printf("請輸入密碼:"); scanf("%s", sec); for (i = 0; i <= 3; i++){ ==== if (i <= 2){ ==== if (strcmp(sec, fir) ==
0){ ==== printf("輸入正確"); ==== break; ==== } else{ ==== printf("錯誤(還有%d機會)請重新輸入:",3-count); ==== scanf("%s", sec); ==== count++; }
} if (i == 3){ printf("請聯絡管理員"); } } return 0; } int main(){ int input; Meau(); printf("請選擇:\n"); scanf("%d",&input); switch (input){ case 1: Logger(); break; case 0: break; default: break; } system("pause"); return 0; }

個人看法:我在解決問題時主要的難點在於如何解決我打標點的地方的問題怎樣簡單的解決到達三次失敗與尋找管理員和諧統一,我暫時這樣處理只是為了方便程式碼的進行。

4.一個二分法的典型例題

//通過二分法尋找有序陣列符合條件的值 首先我們得明白什麼是二分法,二分法是一種思維我稱之為折中查詢,優勢是在於每一次排除一半不符合條件的情況

#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
/*
   需求分析 通過二分法查詢陣列內的數字
   	過程{
   		1.生成一個有序陣列
   		2.輸入待測數字
   		3.二分法比對{
   			取陣列中值進行比較,縮小比值區間
   		}
   	}
   		

*/
int compar(int num, int arr[], int left, int right, int mid){
   while (left <= right){
   	mid = (left + right) / 2;
   	if (arr[mid]<num){   
   		left = mid + 1;
   	}else
   	if (arr[mid]>num){
   		right = mid - 1;
   	}else
   		break;
   }
   if (left <= right){
   	printf("找到了,下標為%d\n",left);
   }
   else{
   	printf("找不到\n");
   }
}

int main(){
   int random = rand() % 100 + 1;
   int i;
   int arr[10];
   int num;
   //生成一個數組
   arr[0] = random;
   for (i = 1; i <= 9; i++){
   	arr[i] = arr[i-1] + 1;
   }
   int left=0;
   int right = sizeof(arr) / sizeof(arr[0])-1;
   int mid = 0;
   //輸入數字
   printf("輸入數字:");
   scanf("%d", &num);
   compar(num,arr,left,right,mid);
   system("pause");
   return 0;
}

總結:這是在這段時間遇到的經典題目,每個題難度不大 但是我在解決時都儘量向模組化,系統化的去解決讓每一個題目看起來像一個小程式目的是培養我的程式碼思維。在解決為問題時先寫出題目的 需求分析 在分析出過程 然後將注意的點依次實現。