2019-11-24c語(yǔ)言的第三次學(xué)習(xí) for while 隨機(jī)數(shù) 數(shù)組

for循環(huán)

1.for循環(huán)的基礎(chǔ)

for(循環(huán)控制變量;運(yùn)行的條件;控制變量的變化)
for循環(huán)中間條件必須要,其他部分可省略,分號(hào)不能省略

2. 示例

for(;1<2;)
for(int i = 0;i<10;i++)

3.循環(huán)控制變量

<1.>

循環(huán)控制變量的定義和初始化只執(zhí)行一次

<2.>

循環(huán)控制變量什么時(shí)候變化?
i++ i-- j++ j--
i+=2
當(dāng)這一次循環(huán)結(jié)束后在變化/執(zhí)行

<3.>變量的作用域:
(1.)局部變量 :代碼塊里定義的變量
    {
        int a;
           {int a;
           }
    } 
(2.)全局變量 main函數(shù)前定義的變量
(3.)靜態(tài)變量

4.結(jié)束循環(huán)的方式

break跳出整個(gè)for循環(huán)
continue結(jié)束當(dāng)前這次循環(huán)繼續(xù)下一次循環(huán)

for循環(huán):<1.>輸出1-10之間的整數(shù);

<2.>不斷輸出1-10之間的整數(shù)

#include<stdio.h>
/*
for循環(huán)
while循環(huán)
數(shù)組
*/

/*
for(循環(huán)控制變量;運(yùn)行的條件;控制變量的變化) 
for循環(huán)中間條件必須要,其他部分可省略,分號(hào)不能省略
for(;1<2;) 
for(int i = 0;i<10;i++)
*/


int main(){
    /*
    //輸出1-10之間的整數(shù)
    for(int i = 1;i < = 10;i++) 
    {
        printf("i = %d\n",i);
    }
*/
    
    /*
    循環(huán)控制變量的定義和初始化只執(zhí)行一次
    變量的作用域:
    局部變量 :代碼塊里定義的變量 
    {
        int a;
           {int a;
           }
    } 
    全局變量  main函數(shù)前定義的變量 
    靜態(tài)變量 
    */
    
    /*循環(huán)控制變量什么時(shí)候變化?
    i++  i--  j++  j--
    i+=2
    當(dāng)這一次循環(huán)結(jié)束后在變化/執(zhí)行 
    */ 
    
    /*
    for(int i = 1;i<=10;) {
        printf("i = %d\n",i);
        i+=1;
    }
    
    int i = 1;
    for(;int i = 1;i<=10;) {
        printf("i = %d\n",i);
        i+=1;
    }
    */
    
    
    //不斷輸出1-10之間的整數(shù)
    //int i = 1;
    /*
    for(int i = 1;i<=10;i++) 
    {
        printf("i = %d\n",i);
        if(i == 10) {
            i = 0;
        }
        //i++;
    }
     */
    
    //break跳出整個(gè)for循環(huán)
    //continue結(jié)束當(dāng)前這次循環(huán)繼續(xù)下一次循環(huán) 
        for(int i = 1;i<=10;i++) 
    {
        printf("i = %d\n",i);
        if(i == 5) {
            break;
        }
        //i++;
    }
    
    return 0;
}

程序運(yùn)行結(jié)果


程序運(yùn)行.PNG

for循環(huán)實(shí)例運(yùn)用demo:ATM

#include<stdio.h>
#include<stdlib.h>
int main(){
    //ATM終
    /*
    **********
    歡迎使用建設(shè)銀行
    **********
    請(qǐng)輸入密碼:
    密碼錯(cuò)誤請(qǐng)重新輸入:
    密碼錯(cuò)誤次數(shù)過(guò)多 請(qǐng)聯(lián)系工作人員!
    3次
    請(qǐng)選擇操作 
    **********
    1.存款
    請(qǐng)輸入存款金額:8000
    存款成功,余額為:8000
    是否繼續(xù)(y/n) 
    2.取款
    請(qǐng)輸入取款金額:8000
    余額不足請(qǐng)重新輸入 
    取款成功,余額為:8000
    是否繼續(xù)(y/n) 
    3.更改密碼
    請(qǐng)輸入新密碼: 
    請(qǐng)確認(rèn)密碼
    設(shè)置成功
    兩次密碼不一致,請(qǐng)輸入新密碼: 
    4.查詢余額
    5.退出
    ********** 
    
    */ 
    
    int old=123;//原始密碼 
    int input;//用戶輸入密碼 
    int wrongTime = 3;//錯(cuò)誤次數(shù)
    int total=1000;//金額
     
    printf("**********\n");
    printf("歡迎使用建設(shè)銀行\(zhòng)n");
    printf("**********\n");
    
     printf("請(qǐng)輸入密碼:");
     for(int i = 1;i<=wrongTime;i++){
        scanf("%d",&input);
        
        //判斷密碼
         if(input == old){
            //密碼正確 
            break;
         }
         if(i == wrongTime){
            printf("密碼錯(cuò)誤次數(shù)過(guò)多 請(qǐng)聯(lián)系工作人員!\n");
            return 1;//退出整個(gè)程序 
         } 
         //密碼不正確 
          printf("密碼錯(cuò)誤請(qǐng)重新輸入密碼:");
     }
        printf("密碼正確\n");
        
        //接收用戶是否繼續(xù)的輸入
         /*
         getchar();從終端接收一個(gè)字符
         注意:當(dāng)上一次有輸入的情況下,必須要將上一次緩沖區(qū)里面的內(nèi)容清空
         scanf("%d");
         123\n;
         \n
         
         第一種方法 
         getchar();//拿走\(yùn)n 
          getchar();
          
          第二種方法 
          fflush(stdin);刷新輸入流
          */
           
        int choice;//接受用戶選擇 
        char goon;//是否繼續(xù) 
        for(;1<2;) {     //條件永久成立 ,始終循環(huán) 
        //主界面 
        printf("**********\n");
        printf("請(qǐng)選擇相關(guān)操作:\n");
        printf("1.存款\n");
        printf("2.取款\n");
        printf("3.更改密碼\n");
        printf("4.查詢余額\n");
        printf("5.退出\n");
        printf("**********\n");
        
        //提示用戶選擇
        printf("請(qǐng)選擇操作:");
        scanf("%d",&choice) ;
        
        //判斷操作
        switch(choice){
            case 1://存款
                int temp;
                printf("請(qǐng)輸入存款金額:");
                scanf("%d",&temp);
                total+=temp;//total=total+temp
                printf("存款成功!可用余額為:%d\n",total);
                  break;
            case 2://取款
                int temp2;
                for(;1<2;){
                printf("請(qǐng)輸入取款金額:");
                scanf("%d",&temp2);
                
                if(temp2>total) {
                    printf("余額不足"); 
                }else{
                    total -= temp2;
                    printf("取款成功 余額為:%d",total);
                    break; 
                } 
            }
                  break;
            case 3://查詢余額 
                printf("當(dāng)前余額為:%d\n",total) ;
                  break;
            case 4: //更改密碼
                  int n1;
                  int n2; 
                  for(;1<2;){
                         printf("請(qǐng)輸入新密碼:");
                         scanf("%d",&n1);
                         
                         printf("請(qǐng)確認(rèn)密碼:");
                         scanf("%d",&n2);
                         
                         if(n1 == n2){
                            printf("密碼設(shè)置成功!\n");
                            old = n1;
                            break;
                         }else{
                            printf("兩次輸入不一致!\n");
                         } 
                }
                  break;
            default://退出
            exit(EXIT_SUCCESS);
            //exit(EXIT_FAILURE);
                  break;
        } 
        
        //提示是否繼續(xù)操作
        for(;1<2;){
            printf("是否繼續(xù)(y/n)");
            getchar(); 
            scanf("%c",&goon);
            
            if(goon ==  'y'){
                break;
            }
            if(goon ==  'n'){
                exit(EXIT_SUCCESS);
            }
            
            printf("輸入無(wú)效 "); 
            } 
        }
        
        /*
        return ;結(jié)束當(dāng)前這個(gè)函數(shù) 
        main(){
        1;
        2;
        3;
    }
        exit();導(dǎo)入頭文件<stdlib.h>直接退出程序 
        add(){
        return;
    }
    
    
        */
        
        
       
     
     
    return 0;
    }

/*
main函數(shù):不寫(xiě)實(shí)際代碼 ,邏輯
 */

程序運(yùn)行結(jié)果:
捕獲.PNG

switch語(yǔ)句的基礎(chǔ)

1.

switch 可讀性

2.switch基本結(jié)構(gòu)

switch(已經(jīng)確定值的變量-int-char){
case 10 'c':
break;
case 10 'c':
break;
default:
break;
}
同樣功能if-else if-else if-else

switch語(yǔ)句demo:輸入1-3之間的一個(gè)數(shù),系統(tǒng)顯示你輸出的是哪一個(gè)數(shù)

#include<stdio.h>

int main(){
    /*
    switch  可讀性 
    switch(已經(jīng)確定值的變量-int-char){
    case 10 'c':
    break;
    case 10 'c':
    break;
    default:
    break;
    同樣功能if-else  if-else  if-else 
    */
    
    int a=0;
    printf("請(qǐng)輸入一個(gè)數(shù)1-3:");
    scanf("%d",&a);
    //int char-ASCII bool
    switch(a){
        case 1:
        printf("你輸入的是1\n");
        break;
        case 2:
        printf("你輸入的是2\n") ;
        break;
        default:
         printf("你輸入的是3\n") ;
        break;
    } 
    
    return 0;
}

程序運(yùn)行結(jié)果:
switch.PNG

隨機(jī)數(shù)

1.隨機(jī)數(shù)的產(chǎn)生

當(dāng)程序運(yùn)行起來(lái)的時(shí)候,系統(tǒng)自動(dòng)產(chǎn)生一個(gè)種子
使用rand()產(chǎn)生隨機(jī)數(shù)后,重新啟動(dòng)程序,再次使用rand(),發(fā)現(xiàn)種子是一樣的
總結(jié):只要種子一樣產(chǎn)生的隨機(jī)數(shù)就一樣
如果需要每次重新運(yùn)行都產(chǎn)生 不一樣的隨機(jī)數(shù)就需要更改種子
則此時(shí)就有
時(shí)間: 001 002
運(yùn)用時(shí)間做種子:
srand(time(NULL)) 導(dǎo)入頭文件<stdlib.h> <time.h>

控制時(shí)間

1.延時(shí)2s

<1.>第一種方式

for(long long i = 0;i<10000000000/14;i++); //顯示時(shí)間2s即延時(shí)2s

<2.>第二種方式

(1.)

Sleep(2000) ;
#include<windows.h> 用Sleep延時(shí)時(shí)需用該頭文件

(2.)

windows系統(tǒng)延時(shí)或用

 #include<windows.h>
int main(){
    Sleep(2000);
    return 0;
} 

2.刷新界面

<1.>

system("cls"); 刷新界面
#include<stdlib.h> 刷新界面需要使用該頭文件

<2.>

mac系統(tǒng)刷新

    for(int i=0;i<20;i++){
    printf("\n");
}

demo:輸入的內(nèi)容顯示2s后消失

//控制時(shí)間輸入2s后消失 
#include<stdio.h>
#include<stdlib.h>//刷新界面需要使用該頭文件 
#include<windows.h>//用Sleep延時(shí)時(shí)需用該頭文件 
int main(){
    printf("12\n"); 
    
    //for(long long i = 0;i<10000000000/14;i++);//顯示時(shí)間2s即延時(shí)2s
    Sleep(2000) ;//#include<windows.h>//用Sleep延時(shí)時(shí)需用該頭文件
     
    system("cls");//刷新界面 
    
    return 0;
}

/*
windows系統(tǒng)延時(shí)或用
#include<windows.h>
int main(){
    Sleep(2000);
    return 0;
} 
*/


/*  mac系統(tǒng)刷新 
    for(int i=0;i<20;i++){
    printf("\n");
}
*/

demo:小游戲,產(chǎn)生不同的隨機(jī)數(shù),產(chǎn)生的隨機(jī)數(shù)顯示2s后消失,玩家輸入所看到的隨機(jī)數(shù),輸入正確,游戲繼續(xù),否則游戲結(jié)束

#include<stdio.h>
#include<stdlib.h>//使用rand函數(shù)需用此頭文件 
#include<time.h>//關(guān)于時(shí)間的頭文件 
#include<windows.h>//用Sleep延時(shí)時(shí)需用該頭文件
int main(){
    int count = 3;//記錄每次生成多少個(gè)隨機(jī)數(shù)
    
    while(1){
        unsigned int seed = time(NULL);
        //設(shè)置隨機(jī)數(shù)的種子
        srand(seed) ;
    
        for(int i = 0;i<count;i++){
            //生成一個(gè)隨機(jī)數(shù) 
            int temp = rand() % 9 + 1;//生成0-1之間的數(shù)
            printf("%d ",temp); 
        } 
        printf("\n");
    
        //延時(shí)2s
        Sleep(2000) ;
        //for(int i = 0;i < 10000000000/15*2;i++);
    
        //刷新屏幕 
        system("cls");//#include<stdlib.h>//刷新界面需要使用該頭文件 
        /*  mac
        for(int i=0;i<20;i++){
        printf("\n");
    }
    */
        int temp;
        printf("請(qǐng)輸入:");
    
        //重新設(shè)種子和之前生成時(shí)的種子一樣 
        srand(seed);
    
        //接受用戶輸入一個(gè)一個(gè)接收 
        for(int i = 0;i < count;i++){
            scanf("%d",&temp); 
     
    
    
     
        //獲取對(duì)應(yīng)生成的隨機(jī)數(shù)
        int old = rand() % 9 + 1;
    
        //比較輸入的和隨機(jī)數(shù)是否相同
        if(temp != old){  
            printf("錯(cuò)誤 退出!");
            exit(EXIT_SUCCESS);
          }
        } 

        printf("正確");
        count ++;//第一輪3個(gè)數(shù),第二輪4個(gè)數(shù),以此類推 
    }
        return 0;
    }

程序運(yùn)行結(jié)果:
小游戲.PNG

數(shù)組

1.數(shù)組的基礎(chǔ) 數(shù)組:存儲(chǔ)多個(gè)同種類型的數(shù)據(jù)

<1.>數(shù)組的定義:必須明確知道數(shù)組元素的個(gè)數(shù)

系統(tǒng)為數(shù)組分配內(nèi)存空間的時(shí)候 必須確定

<2.>數(shù)組內(nèi)存

數(shù)組名就是數(shù)組的首地址

<3.>數(shù)組訪問(wèn):下標(biāo) 0 - n-1

#include <stdio.h>

int main(){
    //if for while 數(shù)組 指針 結(jié)構(gòu)體 動(dòng)態(tài)分配內(nèi)存 
    //學(xué)生管理系統(tǒng)
    /*
    基本數(shù)據(jù)類型:int float double long char 
    
    數(shù)組:存儲(chǔ)多個(gè)同種類型的數(shù)據(jù) 
    */ 
    //1.數(shù)組的定義:必須明確知道數(shù)組元素的個(gè)數(shù) 
    // 系統(tǒng)為數(shù)組分配內(nèi)存空間的時(shí)候 必須確定 
    int a = 10; //4 
    int array1[4];
    int array2[4] = {1,2};
    
    //2.數(shù)組內(nèi)存
    //數(shù)組名就是數(shù)組的首地址 
    int array[] = {1,2,3,4};
    printf("%d\n",array);
    printf("%d\n",array+1);
    
    printf("%d\n",&array[0]);
    printf("%d\n",&array[1]);
    
    //3.數(shù)組訪問(wèn):下標(biāo) 0 - n-1 
    array[0] = 2;
    array[1] = 23;
    
    //4.Demo - 產(chǎn)生4個(gè)隨機(jī)數(shù) 保存到數(shù)組 輸出 
    
    return 0;
}

<4.>Demo - 產(chǎn)生4個(gè)隨機(jī)數(shù) 保存到數(shù)組 輸出

#include<stdio.h>
#include<stdlib.h>
#include<time.h> 
int main(){
    //產(chǎn)生四個(gè)(不同)隨機(jī)數(shù) 保存到數(shù)組 輸出 
    int array[4] = {};//最好初始化數(shù)組,防止出現(xiàn)數(shù)據(jù)出現(xiàn)錯(cuò)誤 
    
    srand(time(NULL));//種種子,使每次產(chǎn)生的隨機(jī)數(shù)不一樣 
    
    //生成數(shù)組 
    /*防止生成的隨機(jī)數(shù)中有重復(fù),解決方法:產(chǎn)生隨機(jī)數(shù)的同時(shí)
    去比較是否重復(fù) ,如果重復(fù)就重新在產(chǎn)生一個(gè)隨機(jī)數(shù),如果
    不重復(fù)就保存 
    每次i的值正好可以用來(lái)判斷已經(jīng)有幾個(gè)了 
    */
    
    for(int i = 0;i < 4;i++){
        int temp = rand() % 10;//產(chǎn)生0-99之間的數(shù)
        
        if(i == 0){
            //第一個(gè) 直接保存
            array[i] = temp; 
        } else {
            //判斷前面是否已經(jīng)存在了
            int j = 0;
            for(;j < i;j++){
                //比較j對(duì)應(yīng)的值和temp是否相同
                if(array[j] == temp){
                    //重復(fù)了
                    printf("重復(fù)了:%d\n",temp); 
                    break; 
                } 
            } 
             //判斷是怎么出來(lái)的
             if(j == i) {
                //將i前面的比較一遍都沒(méi)有發(fā)現(xiàn)重復(fù)的
                //保存temp值 
                array[i] = temp;
             }else{
                //重復(fù)了
                i--;//重新回到當(dāng)前這一次 
             }
        }
        
          
    } 
    
    //輸出 
    for(int i = 0;i < 4;i++){
        printf("%d ",array[i]);
    }  
    
    return 0;
}

程序運(yùn)行結(jié)果:
數(shù)組.PNG
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容