第一章、c語言初級階段

Day1.c語言初體驗
  1. C語言中每一條語句后面都必須有;號
  2. C語言中除了""引起來的地方, 其它任何地方都不能出現(xiàn)中文
  3. main函數(shù)中的return 0;可以寫, 也可以不寫
  4. main函數(shù)前面的int可以寫, 可以不寫
  5. main函數(shù)后面的()不可以省略
  6. 不要把main寫錯了
  7. 同一程序中只能有一個main函數(shù)
  8. 輸出函數(shù)printf("lnj;");
Day2.關(guān)鍵字

注釋的用法

  1. // 單行注釋
  2. /*
    多行注釋 (以 /星 開頭 以 星/ 結(jié)尾)
    */
  3. 單行注釋可以嵌套多行注釋
  4. 單行注釋嵌套多行注釋的時候, 多行注釋必須在同一行內(nèi)
  5. 多行注釋可以嵌套單行注釋
  6. 多行注釋不能嵌套多行注釋

常量

    // 1.整型常量
    10;
    // 2.實型常量(小數(shù))
    // 單精度float / 雙精度double
    // 注意: 默認情況下編寫的小數(shù)都是雙精度的實型常量, 也就是默認情況下所有小數(shù)都是double
    10.1;// 雙精度double
    88.8;// 雙精度double
    5.2f; //單精度float
    // 3.字符型常量, 用單引號括起來的就是字符型常量
    // 注意: 字符型常量的單引號中只能寫一個字符, 如果寫多個會報錯
    'a'; // 字符型常量
    'ab'; // 錯誤
    '1';
    '12'; // 錯誤, 12是由兩個字符組成, 由1和2組成
    // '李'; // 錯誤寫法, 因為一個漢字占3個字節(jié)
    // 字符型常量的特殊情況, 在C語言中, 系統(tǒng)給某些字符的組合定義了特殊的函數(shù), 這些字符的組合可以當做單個字符來使用
    '\n';
 
    // 4.字符串型常量, 用雙引號括起來的就是字符串型常量
    // 注意: 無論你用雙引號括起來了幾個字符, 只要使用雙引號括起來的都是字符串常量
    "abc";
    "a";

變量

// 1.申請一塊存儲空間, 也就是定義一個變量
    /*
    // 定義變量的格式: 數(shù)據(jù)類型  變量名稱;
    // 定義一個基本數(shù)據(jù)類型的變量
    // int float double char
    int number; // 定義了一個名稱叫做number的變量
    // 會在內(nèi)存中開辟一塊存儲空間給number, 用于存儲數(shù)據(jù)
    */
    /*
    // 2.連續(xù)定義, 如果多個變量都是相同類型的, 那么可以采用連續(xù)定義
    int number, value;
    // 3.如何往變量對應(yīng)的存儲空間當中存儲數(shù)據(jù)
    // 注意: 變量中不能隨便存儲數(shù)據(jù), 只能存儲與之對應(yīng)的數(shù)據(jù)
    // 概念: 變量的第一次賦值, 我們稱之為初始化,
    // 注意, 要想使用變量都必須先對變量進行初始化, 然后才能夠使用
    // 如果不對變量進行初始化, 那么其實變量中存儲的是一些垃圾數(shù)據(jù)
    number = 10; // 會將等號右邊的數(shù)據(jù)放到等號左邊的變量對應(yīng)的存儲空間中
    // 4.如何使用變量
    // 占位符號, %號是占位符號的起始符號
    printf("%i\n", number);

    float floatValue; // 定義了一個實型的變量
    floatValue = 10.1f; // 往floatValue對應(yīng)的存儲空間中存儲了10.1這個值
    printf("%f\n", floatValue);
    
    int intValue, age; // 定義了一個整型的變量
    printf("%i\n", intValue);
    printf("%i\n", age);
    */
    
    // 6.初始化的兩種方式
    /*
    // 1.先定義再初始化
    int number;
    number = 10;
    // 2.定義的同時初始化
    int value = 10;
     */
    
    // 7.完全初始化
//    int number, value;
//    number = value = 10;
    
    int number;
    number = 10;
    int value;
    value = number;

    // 8.部分初始化
//    int number, value = 10;

// 內(nèi)存尋址從大到小, 如果按照這種規(guī)則, 那么先定義的變量內(nèi)存地址一定大于后定義的變量
    int number = 0;
    int value = 0;
    // 如何獲得變量的詳細地址(變量的地址), &變量名稱
    // 利用%p占位符來打印變量的詳細地址
    // 輸出的是一個十六進制的數(shù)
    printf("%p\n", &number);
    printf("%p\n", &value);

printf和scanf函數(shù)

  1. printf函數(shù):
// 1.輸出基本數(shù)據(jù)類型
    /*
    int number = 10;
    int value = 20;
    printf("%i, %i\n", number, value);
    
    float floatValue = 10.1f;
    printf("%f\n",floatValue);
    
    char charValue = 'a';
    printf("%c\n", charValue);
    
    double doubleValue = 9.9;
    printf("%lf", doubleValue);
     */
    
    // 3..指定位寬
//    int number = 99;
//    printf("%5i!!!", number); 這個是右對齊 左邊補3個空格
//    printf("%-5i!!!", number);這個是左對齊 右邊補3個空格
    
        int number = 9999;
        printf("%2i", number);這個是位寬不夠自動升級 正常輸出9999
    /*
     // 如何指定位寬? %mi; // 其中m就是位寬 而i輸出對應(yīng)類型的數(shù)據(jù)
     // 默認情況下位寬是右對齊, 如果需要輸出的類型寬度不夠, 會在左邊補空格
     // 如果在位寬前面加上-號, 就會改變位寬的對齊方式為左對齊,如果需要輸出的類型寬度不夠,會在右邊補空格
    // 注意: 如果指定了位寬, 但是實際輸出的內(nèi)容超出了寬度, 會按照實際的寬度來輸出
    
    // 可以在位寬前面加上0, 如果輸出的內(nèi)容寬度不夠就會用0來補, 如果寬度已經(jīng)夠了, 那么會按照實際的寬度輸出
    int number = 8;
    // 01
    // 2015-06-05
    printf("%02i", number);這個輸出08
     */
    // 3.保留位數(shù)
    /*
    // %f默認會保留6位小數(shù)
    // 指定保留多少位小數(shù): %.nf, 其中n就是需要保留多少位小數(shù), f用于輸出實型
    float floatValue = 3.14;
    printf("%.2f", floatValue);
     */
    // 4.%f各種坑
    /*
    // 為什么指定保留10位之后還不對呢? 因為float類型有效位數(shù)是7位(不包括小數(shù)點)
    // 如何計算有效位? 從第一個數(shù)開始計算
    // 如果輸出的數(shù)據(jù)超出了有效位數(shù), 那么就會出現(xiàn)一些垃圾數(shù)據(jù)
    float floatValue = 3.1415926525;
    printf("%.10f\n", floatValue); // 默認情況保留6位
這個輸出:3.1415927410 保留6位 然后第七位四舍五入
    // 如何想完整的輸出那么必須將數(shù)據(jù)保存位double類型, 因為double類型的有效位是15位
    double doubleValue = 3.1415926525;
    printf("%.10lf\n", doubleValue);
這個輸出:3.1415926525
     */
    // 5.如何提高比格
    float floatValue = 3.1415926;
    printf("%.*f", 5,floatValue);
  1. scanf函數(shù)
// 1.要求: 存儲用戶輸入的整數(shù)
    /*
    // 1.用戶輸入的整數(shù)確定嗎? 不確定 --> 定義變量
    // 2.如何接收用戶輸入的整數(shù)? scanf函數(shù)
    // scanf格式: scanf("格式化字符串", 列表項); --> scanf("%i", 變量);
    
    // 1.定義變量
    int number;
    // 2.利用scanf函數(shù)接收用戶輸入的數(shù)據(jù)
    scanf("%i", &number);// 注意: 必須告訴scanf函數(shù)變量的詳細地址, 才能存儲用戶輸入的數(shù)據(jù)
    // 3.輸出接收到的數(shù)據(jù)
    printf("number = %i", number);
     */
    
    // 2.要求從控制臺接收用戶輸入的兩個整數(shù), 然后計算兩個整數(shù)的和
    /*
    // 0.提示用戶輸入數(shù)據(jù)
    printf("親, 請輸入第一個數(shù)字, 以回車鍵結(jié)束\n");
    // 1.定義兩個變量保存用戶輸入的數(shù)據(jù)
    int num1, num2;
    // 2.利用scanf接收用戶輸入的數(shù)據(jù)
    // 2.1接收第一個數(shù)
    scanf("%i", &num1);
    printf("親, 請輸入第二個數(shù)字, 以回車鍵結(jié)束\n");
    scanf("%i", &num2);
    
    // 3.將接收到的兩個數(shù)相加
    int result = (num1 + num2);
    
    // 4.輸出兩個數(shù)驗證結(jié)果
    printf("result = %d", result);
     */
    /*
    int num1, num2;
    num1 = num2 = 10;
    printf("num1 = %i, num2 = %i", num1, num2);
     */
    
    /*
    // 0.提示用戶輸入數(shù)據(jù)
    printf("親, 請輸入兩個數(shù)字, 以回車鍵結(jié)束\n");
    // 1.定義兩個變量保存用戶輸入的數(shù)據(jù)
    int num1, num2;
    // 2.利用scanf接收用戶輸入的數(shù)據(jù)
    // 注意: 利用scanf接收多個數(shù)據(jù)的時候, 輸入的內(nèi)容要求和"格式化字符串"中的一模一樣
    // 如果輸入的數(shù)據(jù)與格式化字符串中的不匹配, 那么scanf函數(shù)會自動終止
//    scanf("%i,%i", &num1, &num2);
//如果多個數(shù)據(jù)之間沒有其它字符, 那么可以利用 空格, 回車, table來作為分隔
    // 但是, 如果格式化字符串中有%c除外
//    scanf("%i%i", &num1, &num2);
    char charValue;
    // 輸入: 123-->num1, a -->charValue, 456-->num2
    // 技巧: 無論想接收什么類型的數(shù)據(jù), 只要有需要一次性接收多個, 就給每一個數(shù)據(jù)之間加上固定的符號作為分隔符(例如: ,)
    scanf("%i-%c-%i", &num1, &charValue, &num2);
    
    // 3.將接收到的兩個數(shù)相加
//    int result = (num1 + num2);
    
    // 4.輸出兩個數(shù)驗證結(jié)果
//    printf("result = %d", result);
    
    printf("num1 = %i, char = %c , num2 = %i", num1, charValue, num2);
     */
    
    // 3.\n問題
    int number, number2;
    // \n代表換行
    // 如何告訴scanf函數(shù)我們輸入完畢? 回車 == \n
    // 因為回車是scanf的結(jié)束符, 所以不能在scanf的格式化字符串末尾寫上\n
    // 如果不小心把\n放到了scanf格式化字符串的末尾, 也可以破, 原樣輸入或輸入一個不匹配的類型
    scanf("%i\n%i\n", &number, &number2);//這個分割符千萬不要用\n,不能出現(xiàn)
    printf("number = %i , number2 = %i\n", number, number2);
Day3.運算符及if

運算

  1. 類型轉(zhuǎn)換
    自動類型的提升, 將參與運算的數(shù)據(jù)都轉(zhuǎn)換為同一類型后再運算,會自動將小的數(shù)據(jù)類型提升為大的數(shù)據(jù)類型。
// 在算術(shù)運算中, 參與運算的是什么類型, 計算出來就是什么類型
//    double result = 1.0 / 2; // 1.0 / 2.0 --> 0.5
//    double result = (double)1 / 2;// 1.0 / 2.0 --> 0.5
    double result = (double)(1 / 2); // (double)(0) --> 0.0
    printf("result = %lf\n", result);
     */
  1. 運算符(主要注意%)
    // 注意: 取模運算只能用于整數(shù)
//    result = 10.0 % 3.0;錯誤
    // 取模運算的正負性取決于左邊的操作數(shù), 如果左邊為負數(shù), 那么結(jié)果就是負數(shù)
//    result = 10 % -3;結(jié)果 1
//    result = -10 % -3;結(jié)果 -1
//    result = -10 % 3;結(jié)果 -1
    // 如果取模運算的左邊小于右邊, 那么結(jié)果就是左邊
//    result = 2 % 9; 結(jié)果2

總結(jié)一句話: ++在前, 先自增再運算, ++在后, 先運算再自增
  1. sizeof簡介(主要用來運算字節(jié)數(shù))
  • sizeof可以用來計算一個變量或一個常量忿峻、一種數(shù)據(jù)類型所占的內(nèi)存字節(jié)數(shù)
  • 注意: sizeof是一個運算符, 不是一個函數(shù)利用sizeof計算的格式: sizeof(變量/常量/數(shù)據(jù)類型);
  1. 逗號運算符
 // 逗號運算符的結(jié)果是 最后一個表達式的結(jié)果
    int a = 10;
    int b = 5;
    //   6       a = 10 + 5 = 15 b = 5 + 1 = 6
    int result = ((a = a + 5), (b = b + 1)); // 僅僅作為了解
    printf("a = %i, b = %i, result = %i\n", a, b, result);
結(jié)果15, 6辕羽, 6
  1. 三目運算符格式: 條件表達式 ? 結(jié)果A : 結(jié)果B
    // 結(jié)合性: 從左至右
    // 只要條件表達式為真就返回結(jié)果A, 如果條件表達式為假, 那么就返回結(jié)果B
    // a大于b嗎? 如果a大于b就返回a, 否則返回b
    // int result = (a > b)? a : b;
// arc4random_uniform方法會根據(jù)傳入的整數(shù)生產(chǎn)一個隨機數(shù)
    // 生成的值就是 0~(N-1)的值
    int cmp =  arc4random_uniform(3);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逛尚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子逛漫,更是在濱河造成了極大的恐慌黑低,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酌毡,死亡現(xiàn)場離奇詭異克握,居然都是意外死亡,警方通過查閱死者的電腦和手機枷踏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門菩暗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人旭蠕,你說我怎么就攤上這事停团。” “怎么了掏熬?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵佑稠,是天一觀的道長。 經(jīng)常有香客問我旗芬,道長舌胶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任疮丛,我火速辦了婚禮幔嫂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘誊薄。我一直安慰自己履恩,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布呢蔫。 她就那樣靜靜地躺著切心,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绽昏,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天扬霜,我揣著相機與錄音,去河邊找鬼而涉。 笑死,一個胖子當著我的面吹牛联予,可吹牛的內(nèi)容都是我干的啼县。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼沸久,長吁一口氣:“原來是場噩夢啊……” “哼季眷!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卷胯,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤子刮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后窑睁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挺峡,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年担钮,在試婚紗的時候發(fā)現(xiàn)自己被綠了橱赠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡箫津,死狀恐怖狭姨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情苏遥,我是刑警寧澤饼拍,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站田炭,受9級特大地震影響师抄,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诫肠,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一司澎、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧栋豫,春花似錦挤安、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春围肥,著一層夾襖步出監(jiān)牢的瞬間剿干,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工穆刻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留置尔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓氢伟,卻偏偏與公主長得像榜轿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子朵锣,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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