1. 程式人生 > >C語言-筆記一

C語言-筆記一

兩個 編程語言 ati 準備工作 and ont 接受 name tro

筆者簡介:

本人是現在是在校的一枚研二的學生,最近同實驗室的師兄找工作,感覺真心不容易,也讓我感到很焦慮,想想現在的我,對編程語言掌握的並不好,糊裏糊塗的,想想明年的我,感覺壓力很大。所以,每天抽出點時間專門去學習一下編程語言,並記錄一下學習筆記,給自己一個鞭策。

那麽,選擇哪一個編程語言呢? - -C語言,公司招聘基本上都要求掌握的語言當中必有C,系統的學習一下C還是非常有必要的。本科階段學過C語言,不過學的很糊塗,現在重新系統的學習一遍,希望自己有一個不小的收獲。

正文:

好了,開始我們今天的第一個筆記啦:
本筆記參考的書籍為: Stephen Prate著 C Primer Plus
C語言是一個編譯性的語言。我們寫的代碼並保存為.c格式,這個稱其為源碼,然後經過編譯器生成可執行文件,也就是.exe文件,如下面的代碼:我們保存為Happy.c ,然後在在命令行下輸入:

gcc Happy.c -o Happy

即可完成編譯任務,生成可執行文件Happy.exe,註意:鍵入上述命令時,首先你電腦上要有C編譯器,並且在源碼的文件路徑下。

來向祖國道一聲“生日快樂吧!”:

/* 這是一個祝福祖國生日快樂的簡單C程序 */
#include<stdio.h>
int main(void) //這是主函數,無論這個函數在文件的哪個位置,程序從這裏開始
{
int age = 69;
printf("Happy birthday to my motherland at the age of %d.\n", age);

return 0;
}

#include<stdio.h> :該語句的作用相當於你在文件中該行所在的位置鍵入了文件stdio.h的完整內容。實際上,它是一種剪切和粘貼的操作,這樣可以方便地在多個程序間共享公用的信息。那麽,這個stdio.h文件裏包含了什麽東東呢?由於上述程序中使用了printf()函數,可是我們並沒用去定義這個函數,那這個函數怎麽就可以把"Happy Birthty Day To Chian"輸出到控制臺的呢?那是因為,你沒有定義函數,但是你復制粘貼了stdio.h這個文件了呀,這個文件裏有定義了printf()這個函數,在這個文件中它說明了函數名以及該函數如何使用,但是函數的實際代碼並不在這個文件了,而是在一個預編譯代碼的庫文件中。那什麽是預編譯呢?#include語句是C預處理指令的一個例子,通常,C編譯器在編譯前要對源代碼做一些準備工作,這就稱為預處理。在C世界中,人們稱出現在文件頂部的信息集合為頭(header),C實現通常都帶有許多頭文件。

int main(void): main(),這是一個函數名為main的函數,也是C程序執行的起始函數,int 指這個函數處理後要返給操作系統一個int值。void: 表明這個主函數並不接受任何參數。

{}: 表示所有的C函數都使用花括號來表示函數體的開始和結束,花括號還可以用來把函數中的語句聚集到一個單元或代碼塊中來。

int age = 69 : 生明並初始化變量age為69

;分號 -- 表明一個語句的結束

%d : int 類型變量的占位符

\n : 轉義字符,表示光變換到下一行

return 0 表示,這個主函數結束,返回一個int類型的值 0

/* */ 註釋,可以在/*和*/之間寫多行註釋

// 這是單行註釋,在//之後的字符會被編譯器忽略

age: 是int類型的變量名,給變量起名字盡量一眼就能看出其含義,方便閱讀源代碼。變量名的起名規則: 可供使用的字符有小寫字母、大寫字母、數字和下劃線。第一個字符必須是字母或者下劃線。

除了使用標準的printf()函數外,怎麽把自己的函數加入到程序中呢?

#include<stdio.h>
void question(void); // C 函數原型
void answer(void); 
void question(void)
{
printf("What‘s the date today?\n");
}
int main(void)
{
int age = 69;
printf("Happy birthday to my motherland at the age of %d.\n", age);
question();
answer();

return 0;
}
void answer(void)
{
printf("Today is October 1st National Day.\n");
}

answer()函數在上述程序中出現了3次。第一次是出現在原型中,通知編譯器要用到的函數。第二次是在main()函數中以函數調用的形式出現的。最後,程序給出了函數的定義,既函數本身的源碼。而在上述關於printf()函數的談論,現在也可以進一步的解釋,在文件stdio.h中,類似void answer(void);這樣聲明了函數的名字及參數,但函數本身的代碼並不在stdio.h文件中,而在預編譯代碼庫中。簡單的理解,也就是stdio.h文件提供了printf()函數的接口。而,question()函數本身的代碼卻在main()函數的上面,這實際沒有影響的,程序是從main()函數開始執行的,只要在main()函數之前有通知了編譯器有question()這個函數了就行。


第二章編程練習習題及答案(已經編譯通過)
/*
1. 編寫一個程序,調用printf()函數在一行上輸出您的名和姓,再調用一次printf()函數在兩個單獨的行上輸出您的名和姓,然後調用一對printf()函數在一行上輸出您的名和姓。
輸出應如下所示:

Anton Bruckner 第一個輸出語句
Anton 第二個輸出語句
Bruckner 第三個輸出語句
Anton Bruckner 第四個輸出語句

*/

#include<stdio.h>
int main(void)
{
printf("Anton Bruckner\n");
printf("Anton\nBruckner\n");
printf("Anton ");
printf("Bruckner");

return 0;
}

/*

2. 編寫一個程序輸出您的姓名及地址
*/

#include<stdio.h>
int main(void)
{
printf("My name is Double Lin.\n");
printf("Localtion: Heifei, Anhui.\n");

return 0;
}

/*

3. 編寫一個程序,把您的年齡轉換成天數並顯示二值的值。不用考慮平年或者閏年的問題,一年=356
*/

#include<stdio.h>
int main(void)
{
int age = 23; //聲明年齡為23
printf("age: %d days: %d ",age,age*356);

return 0;
}

/*
4. 編寫一個能夠產生下面輸出的程序:

For he‘s a jolly good fellow!
For he‘s a jolly good fellow!
For he‘s a jolly good fellow!
Which nobody can deny!

程序中除了main()函數之外,要使用兩個用戶定義的函數:一個用於把上面的誇獎消息輸出一次; 另一個用於把最後一行輸出一次
*/

#include<stdio.h>
void function_1(void); // 原型函數
void function_2(void);

void function_1(void)
{
printf("For he‘s a jolly good fellow!\n");
}

int main(void)
{
function_1();
function_1();
function_1();
function_2();

return 0;
}

void function_2(void)
{
printf("Which nobody can deny!");
}

/*
5. 編寫一個程序,創建一個名為toes的整數變量。讓程序把toes設置為10,。再讓程序計算兩個toes的和以及toes的平方。程序應該輸出所有的3個值,並分別標識它們

*/

#include<stdio.h>
int main(void)
{
int toes = 10;

printf("toes: %d\nsum of toes: %d\n squared of toes: %d\n",toes,2*toes,toes*toes);

return 0;
}

/*
6. 編寫一個能夠產生下列輸出的程序:

Smile!Smile!Smile!
Smile!Smile!
Smile!

在程序中定義一個能顯示字符串Smile!一次的函數,並在需要的時使用該函數

*/

#include<stdio.h>
void function(void);

void function(void)
{
printf("Smile!");
}

int main(void)
{
function();
function();
function();
printf("\n");
function();
function();
printf("\n");
function();

return 0;
}

/*
7. 編寫一個程序,程序中要調用名為one_three()的函數。該函數要在一行中顯示單詞"one",再調用two()函數,然後再在另一行中顯示單詞"three". 函數two()應該能在一行中顯示單詞"two"
main()函數應該在調用one_three()函數之前顯示短語"starting now";函數調用之後要顯示"done!".這樣,最後的輸出結果應如下所示:
starting now:
one
two
three
done!
*/

#include<stdio.h>
void one_three(void);
void two(void);

int main(void)
{
printf("starting now:\n");
one_three();
printf("done!\n");
}

void one_three(void)
{
printf("one\n");
two();
printf("three\n");
}

void two(void)
{
printf("two\n");
}

C語言-筆記一