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

for循環(huán)

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

for(循環(huán)控制變量;運行的條件抓谴;控制變量的變化)
for循環(huán)中間條件必須要暮蹂,其他部分可省略,分號不能省略

2. 示例

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

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

<1.>

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

<2.>

循環(huán)控制變量什么時候變化癌压?
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跳出整個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)控制變量;運行的條件滩届;控制變量的變化) 
for循環(huán)中間條件必須要集侯,其他部分可省略被啼,分號不能省略
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)控制變量什么時候變化?
    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跳出整個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;
}

程序運行結(jié)果


程序運行.PNG

for循環(huán)實例運用demo:ATM

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

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

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

switch語句的基礎(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語句demo:輸入1-3之間的一個數(shù)月幌,系統(tǒng)顯示你輸出的是哪一個數(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("請輸入一個數(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;
}

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

隨機數(shù)

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

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

控制時間

1.延時2s

<1.>第一種方式

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

<2.>第二種方式

(1.)

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

(2.)

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

 #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后消失

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

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


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

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

#include<stdio.h>
#include<stdlib.h>//使用rand函數(shù)需用此頭文件 
#include<time.h>//關(guān)于時間的頭文件 
#include<windows.h>//用Sleep延時時需用該頭文件
int main(){
    int count = 3;//記錄每次生成多少個隨機數(shù)
    
    while(1){
        unsigned int seed = time(NULL);
        //設(shè)置隨機數(shù)的種子
        srand(seed) ;
    
        for(int i = 0;i<count;i++){
            //生成一個隨機數(shù) 
            int temp = rand() % 9 + 1;//生成0-1之間的數(shù)
            printf("%d ",temp); 
        } 
        printf("\n");
    
        //延時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("請輸入:");
    
        //重新設(shè)種子和之前生成時的種子一樣 
        srand(seed);
    
        //接受用戶輸入一個一個接收 
        for(int i = 0;i < count;i++){
            scanf("%d",&temp); 
     
    
    
     
        //獲取對應(yīng)生成的隨機數(shù)
        int old = rand() % 9 + 1;
    
        //比較輸入的和隨機數(shù)是否相同
        if(temp != old){  
            printf("錯誤 退出!");
            exit(EXIT_SUCCESS);
          }
        } 

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

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

數(shù)組

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

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

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

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

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

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

#include <stdio.h>

int main(){
    //if for while 數(shù)組 指針 結(jié)構(gòu)體 動態(tài)分配內(nèi)存 
    //學(xué)生管理系統(tǒng)
    /*
    基本數(shù)據(jù)類型:int float double long char 
    
    數(shù)組:存儲多個同種類型的數(shù)據(jù) 
    */ 
    //1.數(shù)組的定義:必須明確知道數(shù)組元素的個數(shù) 
    // 系統(tǒng)為數(shù)組分配內(nèi)存空間的時候 必須確定 
    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ù)組訪問:下標(biāo) 0 - n-1 
    array[0] = 2;
    array[1] = 23;
    
    //4.Demo - 產(chǎn)生4個隨機數(shù) 保存到數(shù)組 輸出 
    
    return 0;
}

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

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

程序運行結(jié)果:
數(shù)組.PNG
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摧冀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子系宫,更是在濱河造成了極大的恐慌索昂,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扩借,死亡現(xiàn)場離奇詭異椒惨,居然都是意外死亡,警方通過查閱死者的電腦和手機潮罪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門康谆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來领斥,“玉大人,你說我怎么就攤上這事沃暗≡侣澹” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵孽锥,是天一觀的道長嚼黔。 經(jīng)常有香客問我,道長惜辑,這世上最難降的妖魔是什么隔崎? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮韵丑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘虚缎。我一直安慰自己撵彻,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布实牡。 她就那樣靜靜地躺著陌僵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪创坞。 梳的紋絲不亂的頭發(fā)上碗短,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音题涨,去河邊找鬼偎谁。 笑死,一個胖子當(dāng)著我的面吹牛纲堵,可吹牛的內(nèi)容都是我干的巡雨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼席函,長吁一口氣:“原來是場噩夢啊……” “哼铐望!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茂附,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤正蛙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后营曼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乒验,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年蒂阱,在試婚紗的時候發(fā)現(xiàn)自己被綠了徊件。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奸攻。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖虱痕,靈堂內(nèi)的尸體忽然破棺而出睹耐,到底是詐尸還是另有隱情,我是刑警寧澤部翘,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布硝训,位于F島的核電站,受9級特大地震影響新思,放射性物質(zhì)發(fā)生泄漏窖梁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一夹囚、第九天 我趴在偏房一處隱蔽的房頂上張望纵刘。 院中可真熱鬧,春花似錦荸哟、人聲如沸假哎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舵抹。三九已至,卻和暖如春劣砍,著一層夾襖步出監(jiān)牢的瞬間惧蛹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工刑枝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留香嗓,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓装畅,卻偏偏與公主長得像陶缺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子洁灵,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容