C語言-loop應用 & 常用函式


Posted by pei_______ on 2022-04-21

(1)ctrl+c 強迫終止指令
(2)時間函數,需include time.h
(3)亂數函數,需include stdlib.h
(4)修正Scanf的bug,需include conio.h
(5)for/while/do.while迴圈

// 修正Scanf的bug-字元 / 字串

# include <conio.h>

// 字元輸入的修正-不接收Enter
//第二筆資料輸入若是字串或字元,會接收Enter導致無法輸入
printf("請輸入字元:");
char ch;
// scanf("%c",&ch); 
ch = getche();
// 不接收 Enter 字元(\r)
// getche()輸入字元會顯示螢幕
// getch()輸入字元不會顯示螢幕(適合用於密碼輸入)
printf("\n");
printf("字元是:%c\n",ch);

// 字串輸入的修正-接收空白字元,可以打句子
printf("請輸入字串:");
char str[50];
// scanf("%s",str); //字串本身就有位置,不加 &
gets(str);
printf("字元是:%s\n",str);

//確認是否質數 

int i,j,check,count = 0;

// i是從2到100的整數 
for (i = 2;i <= 100; i++){

    //check = True
    check = 1;

    //j是從2到i的整數 
    for(j = 2; j < i ; j ++){

        //如果可以被j整除,check = False 
        if (i % j == 0 ){
        check = 0;
        break;
        } 
    }
    //如果這個i不會讓j整除,就會印出
    if(check){ 
        printf("%d\t",i); //印出質數 
        count++; //加總質數的數量 
    }
}
printf("\n\n除了1共有%d個質數。\n",count);

// 無限迴圈的應用:強制使用者輸入正確

int number;
while(1){
    int number;
    printf("請輸入1~10整數: ");
    scanf("%d",&number);
    if(number >= 1 && number <=10){
        break;
    }
} 
printf("程式繼續往下執行......\n");
printf("number = %d\n", number);

## 以時間做亂數種子設計終極密碼

srand(time(0)); 
// 若無用亂數種子,C語言會是固定亂數
// 時間函數,需include<time.h>
// 亂數函數, 需include<stdlib.h>
int number = rand() % 100; //從 0~32767的範圍縮小到0~100 
int min = 1, max = 100, ans, count = 0;
while(1){
    printf("猜猜%d ~ %d之間的正整數",min,max);
    scanf("%d",&ans);
    count++;
    if(ans > number){
        max = ans;
    }
    else if(ans < number){
        min = ans;
    }
    else{
        printf("BOM BOM....");
        break;
    }
    system("cls"); // 清除畫面,需import<stdlib.h>
}
printf("\n共猜了%d次",count);

## 猜骰子大小 (do-while迴圈)

srand(time(0));
int i, number=3;

for(i = 1; i <= 100; i++)
{
    number = rand() % 6 + 1;
} 
int ans;
char check; //y要繼續猜,n不猜
do
{
    printf("請輸入要猜的答案: ");
    scanf("%d",&ans);
    if(ans == number)
    {
        printf("你猜對了\n");
        break;
    }
    else
    {
        printf("你猜錯了\n");
        printf("是否要繼續再猜:(y/n) ");
        check = getche();
        printf("\n");
    }
} while(check =='y');

#C語言 #課堂筆記







Related Posts

第一周筆記心得

第一周筆記心得

學習 Git - 不小心刪掉的檔案救的回來嗎?

學習 Git - 不小心刪掉的檔案救的回來嗎?

Customizing a Laptop Through Engraving is a Great Personalization Idea

Customizing a Laptop Through Engraving is a Great Personalization Idea


Comments