慕課網c語言入門學習筆記
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;
}
題目明顯是多個條件判斷,用多重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迴圈之間是可以相互轉換的