C語言——第二次筆記


循環(huán)語句


swicth語句

  • switch語句即是一個(gè)變量有多種值的情況下全度,不同的值對(duì)應(yīng)的情況不同肋演,根據(jù)不同的值執(zhí)行不同的語句阅仔。而且表達(dá)時(shí)必須是一個(gè)常量(int,char類型等)或枚舉類型台谊。表達(dá)式與常量表達(dá)式必須都是相同的數(shù)據(jù)類型蓉媳。當(dāng)表達(dá)式的值等于某個(gè)常量表達(dá)式之后, 執(zhí)行該表示之后的語句锅铅。當(dāng)語句中出現(xiàn)break時(shí)酪呻,語句中斷,并跳出switch語句盐须。如果case語句不包含break玩荠,控制流將會(huì)繼續(xù)后續(xù)的case,直至遇到break為止丰歌,一個(gè)switch語句可以有一個(gè)可選的 default case姨蟋,出現(xiàn)在switch的結(jié)尾屉凯。
#include <stdio.h>

int main(){
  int a = 0;
  printf("請(qǐng)輸入一個(gè)數(shù)字 1 - 3 : ") ;
  scanf("%d",&a);
  
  switch(a){
    case 1:
        printf("你輸入的是1\n");
        break;
        case 2:
            printf("你輸入的是2\n");
            break;
            default:
                printf("你輸入的是3\n");
                break;
  } 

 return 0 ;
 }

for循環(huán)

  • 循環(huán)控制的變量的定義和初始化之執(zhí)行一次立帖,表達(dá)式1,表達(dá)是2悠砚,表達(dá)式3之間使用分號(hào)( 晓勇;) 隔開,但是for(表達(dá)式灌旧;表達(dá)是2绑咱;表達(dá)式3)的后面不能加分號(hào)( ;)枢泰。for循環(huán)的循環(huán)條件是決定循環(huán)的次數(shù)描融,注意:for(; 衡蚂;)與while(1)等價(jià)窿克,都是死循環(huán)骏庸,是不會(huì)停止的執(zhí)行語句。
#include <stdio.h>

/**
    for(循環(huán)控制變量;運(yùn)行的條件;控制變量的變化)
    for循環(huán)中間條件是必須要年叮,其他部分可以省略
        分號(hào)不能省略
    for(; 1 < 2; ) 
    for(int i = 0; i < 10; i++) 
*/
int c = 10;
int main(){
    //輸出1-10 之間的整數(shù)
    for(int i = 1; i <=10; i++){
        printf("i = %d\n", i);
    } 
    
    /*
    循環(huán)控制變量的定義和初始化只執(zhí)行一次
    變量的作用域:
    局部變量 :{ 
        int a   
         {
            int a; 
            printf(a);
         }  
     } 
    全局變量
    靜態(tài)變量 
    
    循環(huán)控制變量什么時(shí)候變化/執(zhí)行具被?
    i++ i-- j++ j-- 
    i+=2
    當(dāng)這一次循環(huán)結(jié)束之后 再變化/執(zhí)行 
    
    */ 
    
    //int i = 1; 
    for(int i = 1; i <= 10; i++){
        printf("i = %d\n", i);
        
        if(i == 10){
            i = 0;
        } 
        //i++;
    }
    
    //不斷輸出1-10之間的整數(shù) 
    return 0;
}

while循環(huán)

  • while語句是先計(jì)算“表達(dá)式”的值,當(dāng)值為真時(shí)只损,執(zhí)行”語句塊“一姿。執(zhí)行完“語句塊”,再次計(jì)算表達(dá)式的值跃惫,如果為真叮叹,繼續(xù)執(zhí)行“語句塊”,重復(fù)這個(gè)過程爆存,直到表達(dá)式的值為假時(shí)衬横,才會(huì)停止并退出語句這個(gè)循環(huán),再執(zhí)行while語句后面的語句终蒂。
while語句訓(xùn)練-------進(jìn)制之間的轉(zhuǎn)換
#include <stdio.h>

int main(){
    /*
    for(int i = 0; i < 10; i++)
    
    while(1) 
    
    int i = 0;
    while(i < 3){
        
        i++; 
    }
    
    do{
            
    }while(i < 3);
    */
    
    /* 
    2進(jìn)制    1010  10100 
    8進(jìn)制      12    24 
    10進(jìn)制   10    20 
    16進(jìn)制   0A    14 
    
    請(qǐng)輸入數(shù)字:56
    2進(jìn)制為:111000
    8進(jìn)制為:70
    16進(jìn)制為:38 
    */ 
    
    int num;
    printf("請(qǐng)輸入數(shù)字:");
    scanf("%d",&num);
    
    int jinzhi = 16;
    
    //二進(jìn)制
    int wei = 1;
    long long sum = 0;
    while(1){
        //取余 10100 
        // 00101
        // 1*0 + 10*0 + 100*1 + 1000*0 + 10000*1
        // 10100
        int yu = num % jinzhi;
        num = num / jinzhi; //10 5 
        
        //目前的總和:當(dāng)前位數(shù)的值 + 之前的值 
        sum = sum + yu * wei;//0 
        wei = wei * 10 ;//1*10 100 1000 
        
        if(num < jinzhi){
            sum = sum + num * wei;
            break;
        } 
    } 
    printf("%d\n", sum);
    return 0;
}

Break與Continue關(guān)鍵字

  • Break
    在switch語句中蜂林,遇到break時(shí),將不再執(zhí)行switch中的任何語句
    在while拇泣,for循環(huán)中噪叙,遇到break時(shí),將終止當(dāng)前循環(huán)而執(zhí)行整個(gè)循環(huán)后面的代碼
  • Continue
    跳過循環(huán)體中剩余的語句并強(qiáng)制進(jìn)入下一次循環(huán)(只用于while霉翔,for循環(huán)語句中)

數(shù)組

  • 數(shù)組用于儲(chǔ)存多個(gè)想同類型數(shù)據(jù)的集合
注意:
  • 能夠儲(chǔ)存數(shù)據(jù)睁蕾,就必須要有內(nèi)存
  • 如何定義一個(gè)數(shù)值的同時(shí)為它分配內(nèi)存
  • 數(shù)組定義是必須明確直到數(shù)組的大小
  • 數(shù)組名就是數(shù)組的首地址
聲明數(shù)組

在C語言中,聲明一個(gè)數(shù)組债朵,需要指定元素的類型和元素的數(shù)量

初始化數(shù)組

C語言中子眶,可以逐個(gè)初始化數(shù)組,也可以使用一個(gè)初始化語句序芦。大括號(hào) { } 之間的值的數(shù)目不能大于我們?cè)跀?shù)組聲明時(shí)在 [ ] 中指定的元素

#include <stdio.h>
#include <stdlib.h> 
#include <time.h>

//4.Demo - 產(chǎn)生4個(gè)(不同)隨機(jī)數(shù) 保存到數(shù)組 輸出 
int main(){
    int array[4] = {};
    
    srand(time(NULL));

    //生成數(shù)組 
    //產(chǎn)生隨機(jī)數(shù)的同時(shí)去比較是否重復(fù) 
    //如果重復(fù)就重新再產(chǎn)生一個(gè)隨機(jī)數(shù)
    //如果不重復(fù)就保存 
    //每次i的值正好可以用來判斷已經(jīng)有幾個(gè)了 
    //1  
    //i = 1 
    // 2
    int i;
    for ( i = 0; i < 4; i++){
        int temp = rand() % 4;
        
        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; 
                } 
            }
            //判斷是怎么出來的
            if (j == i){
                //將i前面的比較一遍都沒發(fā)現(xiàn)重復(fù)的
                //保存temp值
                array[i] = temp; 
            }else{
                //重復(fù)了
                //重新回到當(dāng)前這一次 
                i--; 
            }
        } 
    }
    
    //輸出 
    int n;
    for ( n = 0; n< 4; n++){
        printf("%d ", array[n]);
    }
    
    return 0;
}

rand()和srand()函數(shù)

  • rand()函數(shù)

函數(shù)頭文件:stdio.h
函數(shù)定義:int rand()
函數(shù)功能:產(chǎn)生一個(gè)隨機(jī)數(shù)
返回值:返回0至RAND_MAX之間的隨機(jī)整值

  • srand()函數(shù)

函數(shù)頭文件:stdio.h
函數(shù)定義:void srand(unsigned int seed)
函數(shù)功能:設(shè)置隨機(jī)種子
通常用time(NULL)(獲得當(dāng)前系統(tǒng)的時(shí)間信息)來充當(dāng)種子臭杰,來保持每次運(yùn)行時(shí)種子是不一樣的

訓(xùn)練小游戲----最強(qiáng)大腦

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

int main(){
    int count = 3; //記錄每次生成多少個(gè)隨機(jī)數(shù)

    while(1){
        unsigned int seed = time(NULL); //1000
        
        //設(shè)置隨機(jī)數(shù)的種子
        srand(seed); 
        int i;
        for( i = 0; i < count; i++){
            //生成一個(gè)隨機(jī)數(shù) 
            int temp2 = rand() % 9 + 1;
            printf("%d ",temp2); 
        } 
        printf("\n");
    
        // 延時(shí)2s
        Sleep(2000);
        //for(int i = 0; i < 10000000000/15*2; i++);
    
        //刷新屏幕 
        system("cls");
        /*  mac 
        for(int i = 0; i < 20; i++){
            printf("\n");
        } 
        */ 
        int temp;
        printf("請(qǐng)輸入:");
    
        //重新設(shè)種子和之前生成時(shí)的種子一樣
        srand(seed);
     
        //接收用戶輸入 一個(gè)一個(gè)接收 
        // 1 2 3
        // 1 2 4
        int n;
        for( n = 0; n < count; n++){
            scanf("%d", &temp);
        
            //獲取對(duì)應(yīng)的生成的隨機(jī)數(shù)
            int old = rand() % 9 + 1;
        
            //比較輸入的和隨機(jī)數(shù)是否相同 
            printf("old:%d\n", old);
            if (temp != old){
                printf("錯(cuò)誤 退出!\n");
                exit(EXIT_SUCCESS); 
            } 
        }
    count ++;
        printf("正確!\n"); 
    }
    
    return 0;
}
    

通關(guān)達(dá)標(biāo)訓(xùn)練-----ATM機(jī)

#include <stdio.h>
#include <stdlib.h>

    
 
/*
 getchar();從終端接收一個(gè)字符
 注意:當(dāng)上一次有輸入的情況下 必須要將上一次緩沖區(qū)
 里面的內(nèi)容清空 
 scanf("%d");
 123\n;
 \n
 方式一: 
 getchar(); //拿走\(yùn)n 
 getchar();
 
 方式二: 
 fflush(stdin);//刷新輸入流 
 
 
 return; 結(jié)束當(dāng)前這個(gè)函數(shù)/方法 
 exit()導(dǎo)入頭文件<stdlib.h> 直接退出程序 
 
 main(){
  1
  2
  3
 } 
 
 add(){
    retrun; 
 }
 
 for(){
            switch(){
                return 1;
                exit();
                break;
            } 
        } 
*/
int main(){ 
    int old = 123;//原始密碼 
    int input;//輸入密碼 
    int wrongTime = 3; //錯(cuò)誤次數(shù)
    int total = 1000; //金額 
    
    printf("**********************\n"); 
    printf(" 歡迎使用建設(shè)銀行系統(tǒng)\n");
    printf("**********************\n");
    
    //int i = 1;
    printf("請(qǐng)輸入密碼:");
    int i; 
    for( i = 1;i <= wrongTime; i++){
        scanf("%d", &input);
        
        //判斷密碼
        if(input == old){
            //密碼正確
            break;
        } 
        
        if(i == wrongTime){
            printf("錯(cuò)誤次數(shù)過多谚中!\n");
            return 1;
        }
        //密碼不正確
        printf("密碼不正確,請(qǐng)重新輸入密碼:"); 
    } 
    
    
    int choice;//接收用戶選擇
    char goon;//是否繼續(xù) 
    for(; 1 < 2;){
        //主界面 
        printf("*****************************\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("輸入取款金額:");
                    scanf("%d", &temp2);
                
                    if(temp2 > total){
                        printf("余額不足 "); 
                    }else{
                        total -= temp2;
                        printf("取款成功 余額為%d\n",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("兩次輸入不一致渴杆!");
                    }
                } 
                break;
            default://退出 
                return 1;
                //exit(EXIT_FAILURE);
                break;
        } 
        
        //提示是否繼續(xù)
        for(;1<2;){
            printf("是否繼續(xù)(y/n):");
            getchar();
            scanf("%c", &goon); 
            
            if(goon == 'y'){
                break; 
            }
            if (goon == 'n'){
                return 1;
            }
            printf("輸入無效 ");
        }
        
        
    }
     
    return 0;
}


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市宪塔,隨后出現(xiàn)的幾起案子磁奖,更是在濱河造成了極大的恐慌,老刑警劉巖某筐,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件比搭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡南誊,警方通過查閱死者的電腦和手機(jī)身诺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門蔽莱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戚长,你說我怎么就攤上這事盗冷。” “怎么了同廉?”我有些...
    開封第一講書人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵仪糖,是天一觀的道長。 經(jīng)常有香客問我迫肖,道長锅劝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任蟆湖,我火速辦了婚禮故爵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隅津。我一直安慰自己诬垂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開白布伦仍。 她就那樣靜靜地躺著结窘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪充蓝。 梳的紋絲不亂的頭發(fā)上隧枫,一...
    開封第一講書人閱讀 50,050評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音谓苟,去河邊找鬼官脓。 笑死,一個(gè)胖子當(dāng)著我的面吹牛涝焙,可吹牛的內(nèi)容都是我干的卑笨。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼纱皆,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼湾趾!你這毒婦竟也來了芭商?” 一聲冷哼從身側(cè)響起派草,我...
    開封第一講書人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铛楣,沒想到半個(gè)月后近迁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡簸州,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年鉴竭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歧譬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡搏存,死狀恐怖瑰步,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情璧眠,我是刑警寧澤缩焦,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站责静,受9級(jí)特大地震影響袁滥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜灾螃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一题翻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧腰鬼,春花似錦嵌赠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至本谜,卻和暖如春初家,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背乌助。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來泰國打工溜在, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人他托。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓掖肋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赏参。 傳聞我的和親對(duì)象是個(gè)殘疾皇子志笼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

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

  • 繼續(xù)學(xué)習(xí)打卡,今天分享的繪本繪本是Za-za's baby brother. 隨著政策二胎政策的開放把篓,很多家庭都帶...
    宋枚閱讀 384評(píng)論 0 0
  • “哦纫溃,該死該死該死!我已經(jīng)受夠了韧掩!該死的熱狗紊浩!”帶著墨鏡和遮陽帽,有著如模特般修長身材的男子煩躁地將咬了半口的熱狗...
    長夜無痕閱讀 628評(píng)論 0 0
  • 9月10號(hào)教師節(jié)那天,我的外甥女小桔子出世坊谁,長50厘米费彼,重6.4斤。小妹也升級(jí)當(dāng)母親啦口芍!又有人喊我大姨了箍铲。 小桔子...
    齊帆齊閱讀 3,277評(píng)論 38 78
  • 抗戰(zhàn)時(shí)期,各地抗日武裝隊(duì)伍風(fēng)起云涌鬓椭,其中有一支隊(duì)伍的軍長名叫于龍飛盅粪。這個(gè)于龍飛本是窮苦出身壶硅,他被當(dāng)?shù)匕傩兆u(yù)為奇人炊邦,...
    Awhatsup閱讀 457評(píng)論 0 7