C語言——第一次筆記

學習內(nèi)容

  • 注釋的使用

  • #include的作用

  • main函數(shù)介紹

  • printf函數(shù)格式化輸出

  • C語言基本數(shù)據(jù)類型

  • scanf函數(shù)格式化輸入

  • 變量

  • 運算符

  • 循環(huán):if

  • 工資實戰(zhàn)

  • 年齡轉(zhuǎn)換實戰(zhàn)

1. 注釋的使用

  • // 注釋內(nèi)容單行注釋:用于一行簡短的注釋理卑,不需要換行的情況撤嫩。

  • /* 注釋內(nèi)容 */多行注釋:注釋內(nèi)容過多,需要換行的情況。

  • /** 注釋內(nèi)容 */文檔注釋(用于生成開發(fā)者文檔):java語言特有的注釋撒强,其中的注釋內(nèi)容可以被JDK提供的工具 javadoc 所解析,生成一套能夠以網(wǎng)頁形式體現(xiàn)程序的說明文檔

2. #include的作用

  • include---宏 用來導(dǎo)入頭文件。如果系統(tǒng)已經(jīng)提供某些功能的實現(xiàn)漱办,只需要使用include將這些功能所在的頭文件導(dǎo)入進來就可以了。

  • < >用來導(dǎo)入系統(tǒng)提供的類庫婉烟,如:stdio.h stdlib.h math.h string.h,
    " "用來導(dǎo)入自己定義的頭文件娩井,如:calculate.h

  • #include <stdio.h> 編譯器首先從系統(tǒng)的類庫里面去查找這個頭文件似袁,如果沒有洞辣,再到自己的文件中查找咐刨,否則報錯。

  • #include "stdio.h" 編譯器首先從自己的文件中去查找這個頭文件扬霜,如果沒有所宰,再到系統(tǒng)的類庫里面查找,否則報錯畜挥。

3. main函數(shù)的使用

  • main函數(shù) = 代碼塊 = 完成特定功能仔粥,所有的程序的入口點都是main函數(shù)。

  • int返回值蟹但,用來記錄當前程序的運行狀態(tài)躯泰,0:正常結(jié)束 資源自由分配,非0:1 異常結(jié)束 沒收資源华糖。

  • int argc:參數(shù)個數(shù) argument count麦向,char* argv[]:每個參數(shù)組成的字符串數(shù)組。

int main(int argc, char *argv[]) {
  printf("%d\n",argc); 
  printf("%s\n",argv[0]);
  return 0;
}

輸出:
      1
      G:\ThridStudy\C_Project\Project1.exe(.c文件編譯生成的exe文件所在的位置)

4. printf函數(shù)格式化輸出

  • printf輸出語句客叉,用來讓終端輸出數(shù)據(jù)诵竭。

  • 打印常量字符串:printf("hello world");

  • 轉(zhuǎn)義字符:\n 的意思是回車換行,將當前位置移到下一行的開頭兼搏。\r 的意思是回車卵慰,將當前位置移到本行的開頭。\t 的意思是水平制表符佛呻,將當前位置移到下一個tab位置裳朋。

int main(int argc, char *argv[]) {
   printf("helloworld\t");
   printf("%d\n",argc); 
   printf("%s\r",argv[0]);
   getchar(); 
   return 0;
}
運行結(jié)果

5. C語言基本數(shù)據(jù)類型

① 首先明確,C標準并沒有具體給出規(guī)定哪個基本類型應(yīng)該是多少個字節(jié)數(shù)吓著,而且這個也與OS鲤嫡、編譯器有關(guān)

② 雖然16位、32位或者64位的機子各種類型并不一樣绑莺,但有幾條規(guī)則(ANSI/ ISO制定):

  • short 至少占用2個字節(jié)

  • int 建議為一個機器字長暖眼,32位環(huán)境下為4字節(jié),64位環(huán)境下為8字節(jié)

  • short 的長度不能大于int纺裁, long 的長度不能小于int

③ 基本數(shù)據(jù)類型參照表格:

類型 描述 16位 32 位 64位 打印方式
char 字符诫肠,如:'a','d' 1 1 1 %c
short 短整型 2 2 2 %hd
int 整型对扶,如1区赵,2341 2 4 4 %d
long 長整型 4 4 8 %ld
float 單精度浮點數(shù)惭缰,如1.5浪南,82.0 4 4 4 %f
double 雙精度浮點數(shù) 8 8 8 %f

在自己的平臺上可以使用printf("%d\n",sizeof(int));測試具體的數(shù)據(jù)。

注意:

1. C語言中printf輸出float和double都可以用%f漱受,而double型數(shù)據(jù)還可以用%lf络凿。

2. scanf當中若是對雙精度的變量賦值是必須是%后跟lf,而printf當中可以用%f也可以用%lf沒有限制骡送。

3. printf() 只會看到雙精度數(shù),printf 的 %f 格式總是得到 double絮记,所以在 printf() 中使用 %f 跟 %lf 的輸出顯示效果是一樣的摔踱。

4. 對于變量來說,double 類型比 float 類型的精度要高怨愤。double 精度更高派敷,是指它存儲的小數(shù)位數(shù)更多,但是輸出默認都是 6 位小數(shù)撰洗。如果你想輸出更多小數(shù)篮愉,可以自己控制,比如 %.10lf 就輸出 10 位小數(shù)差导。

④ 控制輸出格式:

  • %md:要求輸出字段寬度為m试躏,右對齊,不夠左端補空格设褐,大于m按實際輸出颠蕴,如%3d。

  • %0md:要求輸出字段寬度為m助析,右對齊犀被,不夠左端補0,大于m按實際輸出外冀,如%02d弱判。

  • %m.nd:要求輸出字段寬度為m,右對齊锥惋,后面n個位置當做小數(shù)昌腰,沒有的補0,最前面m-n個沒有的補空格膀跌,如%3.2d遭商。

6. scanf函數(shù)格式化輸入

  • scanf輸入語句,用來向終端輸入數(shù)據(jù)捅伤。
int a = 0;
scanf("%d",&a);
printf("%d",a);
  • 當用戶在終端輸入數(shù)據(jù)時劫流,數(shù)據(jù)會被存放到緩沖流,scanf用于在緩沖流中找到數(shù)據(jù)將其放入到給定的位置丛忆。

  • 放入到給定的位置就是保存輸入的數(shù)據(jù)祠汇,保存數(shù)據(jù)需要用到變量,我們只需要把數(shù)據(jù)送到對應(yīng)變量的地址熄诡,就存儲好了該數(shù)據(jù)可很,就可以通過該變量使用該數(shù)據(jù)。所以使用&獲得變量a的地址凰浮。

int a = 0;
scanf("jack%d",&a);
printf("%d",a);
  • 此時輸入數(shù)據(jù)必須按照jack+數(shù)據(jù)的格式我抠,才可以將數(shù)據(jù)送入到變量中苇本。所以,scanf函數(shù)中" "里面的內(nèi)容用來控制輸出格式菜拓。
int a = 0;
int b = 0;
scanf("%d %d",&a,&b);
printf("%d %d",a,b);
  • 利用上面的輸出格式一次性輸入兩條數(shù)據(jù)瓣窄。

7. 變量

  • 變量是程序可操作的存儲區(qū)的名稱;變量的類型決定了變量存儲的大心啥Α俺夕;變量的名稱可以由下劃線,字母贱鄙,數(shù)字組成啥么,它必須以字母或者下劃線開頭。簡單的說變量就是用來記錄數(shù)據(jù)的贰逾。

  • 變量的聲明:沒有分配內(nèi)存空間悬荣,使用的時候才會分配,如int a;

  • 變量的定義:立刻為我們分配內(nèi)存空間 賦初值疙剑,如int a = 0;

  • 變量的使用:

int num1,num2;
scanf("%d %d",&num1,&num2);
printf("%d %d\n",num1,num2);
  • bool類型的變量(需要導(dǎo)入stdbool.h)氯迂,其值非零即真(1),零為假(0)言缤。
bool status = -3;
printf("%d\n",status);//結(jié)果是1   

8. 運算符

  • 算術(shù)運算符:
運算符 描述
+ 把兩個操作數(shù)相加
- 第一個操作數(shù)減去第二個操作數(shù)
* 把兩個操作數(shù)相乘
/ 兩個數(shù)相除嚼蚀,取商
% 兩個數(shù)相除,取余
++ 自增運算符管挟,整數(shù)值加1
-- 自減運算符轿曙,整數(shù)值減1

注意:a++是先賦值后運算,++a是先運算后賦值

  • 邏輯運算符
運算符 描述
&& 邏輯與運算符僻孝,如果兩個操作數(shù)都非零导帝,則條件為真
|| 邏輯或運算符,如果兩個操作數(shù)有任意一個非零穿铆,則條件為真
* 邏輯非運算符您单,逆轉(zhuǎn)操作數(shù)的邏輯狀態(tài)
  • 關(guān)系運算符
運算符 描述
== 檢查兩個操作數(shù)的值是否相等,如果相等則條件為真
!= 檢查兩個操作數(shù)的值是否相等荞雏,如果不相等則條件為真
> 判斷左操作數(shù)的值是否大于右操作數(shù)的值虐秦,如果是則條件為真
< 判斷左操作數(shù)的值是否小于右操作數(shù)的值,如果是則條件為真
>= 判斷左操作數(shù)的值是否大于或等于右操作數(shù)的值凤优,如果是則條件為真
<= 判斷左操作數(shù)的值是否小于或等于右操作數(shù)的值悦陋,如果是則條件為真
  • 賦值運算符
運算符 實例
= C=A+B,將A+B的值賦給C
+= C += A 相當于 C = A + C
-= C -= A 相當于 C = A - C
*= C *= A 相當于 C = A * C
/= C /= A 相當于 C = A / C
%= C %= A 相當于 C = A % C

9. 循環(huán):if

  • if語句的形式:C 語言把任何非0和非null的值假定為 true筑辨,把0或 null 假定為 false俺驶。
if (條件) {
  條件成立要做的事
}

if (條件) {
  條件成立要做的事
}else{
  條件不成立要做的事
}

if (條件1) {
   條件1成立要做的事
}else if (條件2){
   條件2成立,條件1不成立要做的事
}else if (條件3){
   條件3成立挖垛,條件1,2不成立要做的事
}
...
}else{
  以上條件都不成立要做的事
}
  • 問號表達式:(也稱之為三目運算符)

(表達式1)痒钝?(表達式2):(表達式3),如果表達式1成立則執(zhí)行表達式2痢毒,否則執(zhí)行表達式3

a>b ? s = a+b : s = a-b

這里的例子送矩,如果 a > b,那么 s 的值是a+b哪替,否則 s 的值是a-b

  • 逗號表達式:

將兩個及其以上的式子聯(lián)接起來栋荸,從左往右逐個計算表達式,整個表達式的值為最后一個表達式的值

(3+5,6+8)稱為逗號表達式凭舶,其求解過程先表達式1晌块,后表達式2,整個表達式值是表達式2的值帅霜,最終結(jié)果是14

int temp = 1;
if(temp--,temp){
  printf("temp是1");
}else{
  printf("temp是0");
} 

輸出結(jié)果:
temp是0

10. 工資實戰(zhàn)

  • 優(yōu)化前:
#include <stdio.h>

int main(){
  int salary = 0;//記錄工資 
  int pay = 0; //稅后工資 

  //接收輸入 
  printf("請輸入工資:");
  scanf("%d",&salary); 
   
  //開始計算
  if(salary < 5000){
      pay = salary; 
  }else if(salary > 5000 && salary < 8000){
      int tax = (salary - 5000)*0.1;
      pay = salary - tax;
  }else if(salary > 8000 && salary < 10000){
      int tax = (salary-8000)*0.15 + 3000*0.1;
      pay = salary - tax;
  }else{
      int tax = (salary - 10000)*0.2 + 2000*0.15 + 3000*0.1; 
      pay = salary - tax;
  }
  
  printf("到手工資: %d",pay);
  return 0;
}
  • 優(yōu)化后:
#include <stdio.h>

int main(){
  int salary = 0;//記錄工資 
  int tax = 0; //稅 

  //接收輸入 
  printf("請輸入工資:");
  scanf("%d",&salary); 
   
  //開始計算
  if(salary < 5000){
      tax = 0; 
  }else if(salary > 5000 && salary < 8000){
      tax = (salary - 5000)*0.1;
  }else if(salary > 8000 && salary < 10000){
      tax = (salary-8000)*0.15 + 3000*0.1;
  }else{
      tax = (salary - 10000)*0.2 + 2000*0.15 
      + 3000*0.1; 
  }
  
  printf("到手工資: %d",salary - tax;);
  return 0;
}

11. 年齡轉(zhuǎn)換實戰(zhàn)

#include <stdio.h>
//輸入年齡 20
//your age is twenty; 

int main(){
  int age = 0;
  
  //保存?zhèn)€位數(shù) 21%10 = 1 
  char* gewei[] = {"","one","two","three","four","five","six","seven","eight","nine"}; 
  //保存10-19
  char* temp[] = {"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
  //保存十位 
  char* shiwei[] = {"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"}; 
  
  printf("請輸入年齡:");
  scanf("%d", &age);
  
  char *name;//保存每次取出的字符串 
  if(age < 10){
      //直接訪問各位數(shù)數(shù)組
      name = gewei[age];
  }else if(age >= 10 && age <= 19){
      //獲取個位數(shù)  
      int index = age % 10;
      name = temp[index];
  } else{
      //獲取個位數(shù) 
      int g = age % 10; 
      //獲取十位數(shù) 
      int s = age / 10;
      //取出對應(yīng)的單詞
      int sString = shiwei[s-2];
      int gString = gewei[g];
      
      printf("your age is %s-%s\n"
      ,sString,gString); 
      
      //程序還未運行完畢就提前結(jié)束
      return 0; 
  } 
  
  printf("your age is %s\n",name);
   
  return 0;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末匆背,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子身冀,更是在濱河造成了極大的恐慌钝尸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搂根,死亡現(xiàn)場離奇詭異珍促,居然都是意外死亡,警方通過查閱死者的電腦和手機剩愧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門猪叙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人仁卷,你說我怎么就攤上這事穴翩。” “怎么了锦积?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵藏否,是天一觀的道長。 經(jīng)常有香客問我充包,道長副签,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任基矮,我火速辦了婚禮淆储,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘家浇。我一直安慰自己本砰,他們只是感情好,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布钢悲。 她就那樣靜靜地躺著点额,像睡著了一般舔株。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上还棱,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天载慈,我揣著相機與錄音,去河邊找鬼珍手。 笑死办铡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的琳要。 我是一名探鬼主播寡具,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼稚补!你這毒婦竟也來了童叠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤课幕,失蹤者是張志新(化名)和其女友劉穎拯钻,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撰豺,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡粪般,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了污桦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亩歹。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凡橱,靈堂內(nèi)的尸體忽然破棺而出小作,到底是詐尸還是另有隱情,我是刑警寧澤稼钩,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布顾稀,位于F島的核電站,受9級特大地震影響坝撑,放射性物質(zhì)發(fā)生泄漏静秆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一巡李、第九天 我趴在偏房一處隱蔽的房頂上張望铭腕。 院中可真熱鬧较解,春花似錦、人聲如沸尿瞭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春叠纹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背敞葛。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工誉察, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人制肮。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓冒窍,卻偏偏與公主長得像递沪,于是被迫代替她去往敵國和親豺鼻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

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

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 3,345評論 0 2
  • 第1章 第一個C程序第2章 C語言基礎(chǔ)第3章 變量和數(shù)據(jù)類型第4章 順序結(jié)構(gòu)程序設(shè)計第5章 條件結(jié)構(gòu)程序設(shè)計第6章...
    小獅子365閱讀 10,655評論 3 71
  • 學習內(nèi)容 一 、注釋的作用 // 單行注釋 但 不能換行 /...../ 多行注釋 但 可...
    伯努利粥鋪閱讀 149評論 0 2
  • 指針是C語言中廣泛使用的一種數(shù)據(jù)類型檩奠。 運用指針編程是C語言最主要的風格之一桩了。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,446評論 3 44
  • 1)程序結(jié)構(gòu)是三種: 順序結(jié)構(gòu) 埠戳、選擇結(jié)構(gòu)(分支結(jié)構(gòu))井誉、循環(huán)結(jié)構(gòu)。 2)讀程序都要從main()入口, 然后從最上...
    杵臼涼薄yo閱讀 1,979評論 0 7