c語言函式的運用
阿新 • • 發佈:2018-11-09
1.猜數字遊戲
將選單和執行猜數字的主體都用main函式以外的自定義函式編寫,再由main函式呼叫後,執行結果
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <time.h> int Menu(){ int i; printf("**************************\n"); printf("* 1.開始 *\n"); printf("* 0.退出 *\n"); printf("**************************\n"); scanf("%d", &i); while (i != 1 && i != 0){ printf("請輸入正確數字\n"); scanf("%d", &i); } return i; } int PrtNum(){ int guess; printf("請輸入一個數:(0—99)\n"); scanf("%d", &guess); while (guess<0 || guess>99){ printf("請輸入範圍內的數:\n"); scanf("%d", &guess); } return guess; } void Guess(int x){ //列印數字 int num = PrtNum(); while (num != x){ if (num< x){ printf("猜小了\n"); } if (num>x){ printf("猜大了\n"); } num = PrtNum(); } printf("猜對了!\n"); } int main(){//猜數字 //設定 進入 退出選單 int i = Menu(); int target; srand((unsigned)time(NULL)); while(i==1){ target = rand()%100; //輸入數並判斷是大了還是小了 Guess(target); i = Menu(); } printf("遊戲結束!!\n"); system("pause\n"); return 0; }
2.寫程式碼可以在整型有序陣列中查詢想要的數字, 找到了返回下標,找不到返回 - 1.
可以用遍歷進行查詢,但因為是有序數列還可以通過折半查詢提高執行效率,同樣用自定義函式將得到的下標返回主函式.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> int FindNum(int a[],int n,int size){ //折半查詢 int left = 0; int right = size - 1; int mid = (right + left) / 2; while (left <= right){ if (n > a[mid]){ left = mid + 1; } else if (n < a[mid]){ right = mid - 1; } else{ return mid; } mid = (right + left) / 2; } return -1; } int main(){ //定義一個升序陣列 int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; printf("輸入想要查詢的數字:\n"); int num; scanf("%d",&num); //int l = sizeof(int) ; //printf("%d", sizeof(int)); //查詢,返回下標 //陣列 //陣列長度 int mark = FindNum(a, num, sizeof(a) / sizeof(a[0])); if (mark == -1){ printf("Not found!!\n"); } else { printf("The mark is %d.\n", mark); printf("%d\n", a[mark]); } system("pause"); return 0; }
3.模擬三次密碼輸入,超過三次退出
運用字串陣列以及字串函式庫<string.h>,字串函式庫提供了用於比較兩個字串的函式strcmp,同時用%s進行輸入字串.
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ //提示輸入 char a[20]=" "; char traget[] = "123456"; int i; for (i = 0; i < 3; i++){ printf("請輸入六位數密碼:\n"); scanf("%s", a); if (strcmp(a, traget) == 0){ break; } } if (i == 3){ printf("輸入錯誤,已退出!!\n"); } else{ printf("載入中.....\n"); } system("pause"); return 0; }
3.編寫一個程式,可以一直接收鍵盤字元,如果是小寫字元就輸出對應的大寫字元,如果接收的是大寫字元,就輸出對應的小寫字元,如果是數字不輸出。
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
void Change(char s){
if (s >= 'a'&&s <= 'z'){
printf("%c", s - 32);
}
else if (s >= 'A'&&s <= 'Z'){
printf("%c", s);
}
}
int main(){
//接收鍵盤輸入,直到回車
printf("請輸入字元,0結束!\n");
char s;
scanf("%c", &s);
while (s != '0'){
//判斷是否為字元並轉換
Change(s);
scanf("%c", &s);
}
printf("結束\n");
system("pause");
return 0;
}