1. 程式人生 > >慕課網c語言入門學習筆記

慕課網c語言入門學習筆記

#include<stdio.h>
int main()新標準中是int 而非void
一個c程式中只有一個主函式,main是唯一入口
printf();
return 是函式的返回值,函式型別不同,返回值也不同


良好規範

1、一個說明或一個語句佔一行,例如:包含標頭檔案、一個可執行語句結束都需要換行;
2、函式體內的語句要有明顯縮排,通常以按一下Tab鍵為一個縮排;
3、括號要成對寫,如果需要刪除的話也要成對刪除;
4、當一句 可執行 語句結束的時候末尾需要有分號;
5、程式碼中所有符號均為英文半形符號。
(半形全形主要是針對標點符號來說的,全形標點佔兩個位元組,半形佔一個字
,.?'! ……這些是半形的 
,。?‘! ……這些是全形的
全形是中文的標點.半形是英文的吧. 
在電腦程式語言中,只能用半形,不能全形.計算機只支援半形)

C語言註釋方法有兩種:

       多行註釋:  /* 註釋內容 */ 

       單行註釋:  //註釋一行

C 語言規定,識別符號可以是字母(A~Z,a~z)數字(0~9)下劃線_組成的字串,並且第一個字元必須是字母或下劃線。在使用識別符號時還有注意以下幾點:

(1)識別符號的長度最好不要超過8位,因為在某些版本的C中規定識別符號前8位有效,當兩個識別符號前8位相同時,則被認為是同一個識別符號。 

(2)識別符號是嚴格區分大小寫的。例如Imooc和imooc 是兩個不同的識別符號。 

(3)識別符號最好選擇有意義的英文單詞組成做到"見名知意",不要使用中文。

(4)識別符號不能是C語言的關鍵字。想了解更多C語言關鍵字的知識,請查閱WIKI。


變數名和識別符號的命名規範完全相同。%d在後面會有詳細講解

注意:在定義中不允許連續賦值,如int a=b=c=5;是不合法的。

變數的賦值分為兩種方式:1.先宣告再賦值  2.宣告的同時賦值



printf("小明身高%f%c\n", height, unit);注意%f%c中間沒有逗號


以上是直接常量 無需宣告

還有一種符號常量

 #define 識別符號 常量值  常量是不可改變的 防止他人的篡改  符號常量的標示符一般習慣使用大寫字母,變數的標示符一般習慣使用小寫字母,加以區分。


#include <stdio.h>
#define POCKETMONEY 10    //定義常量及常量值
int main()
{   
  //  POCKETMONEY = 12;  //小明私自增加零花錢對嗎?    不登出掉是不對的 因為常量不可更改
    printf("小明今天又得到%d元零花錢\n", POCKETMONEY);
    return 0;  
}


自動型別裝換  位元組小的可以向位元組大的轉換  但是反之不可以  遵守ASCALL碼

#include <stdio.h>
int main()
{
    char c = 'a';
    int n = c;       //將c賦值給n
    float f =  c  ;   //將c賦值給f
    double d =  c   ; //將c賦值給d
    printf("%d\n",n);
    printf("%f\n",f);
    printf("%lf\n",d);
    return 0;    
}

強制型別轉換

在使用強制轉換時應注意以下問題:

1、資料型別和表示式都必須加括號,如把(int)(x/2+y)寫成(int)x/2+y則成了把x轉換成int型之後再除2再與y相加了。

2、轉換後不會改變原資料的型別及變數值,只在本次運算中臨時性轉換

3、強制轉換後的運算結果不遵循四捨五入原則


#include <stdio.h>
int main()
{
    double num = 2.5;      //定義浮點型變數num並賦值為2.5
    printf("num的整數部分是%d\n",(int)num);  
    return 0;
}

除法運算中注意:

如果相除的兩個數都是整數的話,則結果也為整數,小數部分省略,如8/3 = 2;而兩數中有一個為小數結果則為小數,如:9.0/2 = 4.500000。

取餘運算中注意:

該運算只適合用兩個整數進行取餘運算,如:10%3 = 1;而10.0%3則是錯誤的;運算後的符號取決於被模數的符號,如(-10)%3 = -1;而10%(-3) = 1。

注:C語言中沒有乘方這個運算子,也不能用×,÷等算術符號。





#include <stdio.h>
int main()
{
    int x = 0;
    printf("x=%d\n",x++);
    printf("x=%d\n",++x);
    return 0;
}

%取餘和/除法誰在前面先算誰

分析:定義整型變數a並賦值為3,a += 5;這個算式就等價於a = a+5; 將變數a和5相加之後再賦值給a

注意:複合運算子中運算子和等號之間是不存在空格的。


==是相等  =是賦值 !=是不等

計算機看不懂 1<x<7 應該x>7 && x<100;

&&   ||  !   

不低於 是 >=

三目運算子

表示式1?表示式2:表示式3;

先判斷表示式1的值是否為真,如果是真的話執行表示式2;如果是假的話執行表示式3。

//輸出y小編就打車回家了,輸出n小編就不能打車回家
    printf("%c\n",money>cost?'y':'n');

判斷是否是閏年:被4整,若是整數年要能被400整除

if

if else if

if else if else

#include <stdio.h>
int main() 
{
    int score = 7200;
    //完善一下程式碼
    if(score>=10000)//因為一個括號打成全形了 找了半天
    { 
        printf("鑽石玩家");
    }
    else if(score>=5000)//不需要<10000的判斷條件
    {
        printf("白金玩家");    
    }
    else if(score>=1000)
    {
        printf("青銅玩家");     
    }
    else
    {
        printf("普通玩家");    
    }
    return 0;
}

#include <stdio.h> int main()  {     int sale=120; //銷售業績為120萬     int year=1; //剛剛進入公司1年     //完善程式碼     if(sale>100)     {         if(year>=2)         {//注意這個大括號的位置,放在if前面就錯了             printf("恭喜你獲得年終獎");         }         else             printf("很遺憾,期望你再接再厲");     }     else//這個判斷條件不能少          printf("很遺憾,期望你再接再厲");     return 0; }

題目明顯是多個條件判斷,用多重if-else語句更加直觀而且比較省程式碼量

多重   if  

 else if

 else if

else

巢狀

if

{

if()

{}

else

{}

}

else

{}

while迴圈

使用while語句應注意以下幾點:

1、while語句中的表示式一般是關係表達或邏輯表示式,當表示式的值為假時不執行迴圈體,反之則迴圈體一直執行。

2、一定要記著在迴圈體中改變迴圈變數的值,否則會出現死迴圈(無休止的執行)。

3、迴圈體如果包括有一個以上的語句,則必須用{}括起來,組成複合語句。


100以內函式之和含100

do-while

do

{

執行;

}

while();//這裡的分號不能忘;while在}外面

for迴圈


使用for語句應該注意

1、for迴圈中的“表示式1、2、3”均可可以預設,但分號(;)不能預設

2、省略“表示式1(迴圈變數賦初值)”,表示不對迴圈變數賦初始值。如:

3、省略“表示式2(迴圈條件)”,不做其它處理,迴圈一直執行(死迴圈)。如:

4、省略“表示式3(迴圈變數增量)”,不做其他處理,迴圈一直執行(死迴圈)。如:

注:死迴圈可以使用後面即將講到的break解決

5、表示式1可以是設定迴圈變數的初值的賦值表示式,也可以是其他表示式。如:

for(sum=0;num<=10;num++)

6、表示式1和表示式3可以是一個簡單表示式也可以是多個表示式以逗號分割。如:

for(sum=0,num=0;num<=10;num++,sum++)

7、表示式2一般是關係表示式或邏輯表示式,但也可是數值表示式或字元表示式,只要其值非零,就執行迴圈體。

8、各表示式中的變數一定要在for迴圈之前定義。如:for(int sum=0...)就是錯的,因為要提前定義

那對於隨用隨定義的c++來說呢???????

//獲取三位數字num百位上的數字
        hd =num/100;
        //獲取三位數字num十位上的數字
        td =(num-hd*100)/10     ;//或 td=num%100/10
        //獲取三位數字num個位上的數字
        sd =(num-hd*100-td*10)     ;//OR num%10

        //水仙花數的條件是什麼?

while、do-while和for三種迴圈在具體的使用場合上是有區別的,如下:

1、在知道迴圈次數的情況下更適合使用for迴圈

2、在不知道迴圈次數的情況下適合使用while或者do-while迴圈,如果有可能一次都不迴圈應考慮使用while迴圈,如果至少迴圈一次應考慮使用do-while迴圈

但是從本質上講,while,do-while和for迴圈之間是可以相互轉換的