我沒有上過大學,所以不會C,掌握了C#,決定看算法導論,於是要學C
我是學C#的,所以學的時候會聯想C#的,然后做個比較,我學過JAVA,所以也會聯想JAVA做個比較
基本概念
1. 程序:用某種計算機能理解並執行的計算機語言描述解決問題的方法步驟
2.程序設計:分析解決問題的方法步驟,並將其記錄下來的過程
3.二進制語言→匯編語言(符號代替二進制代碼,所以稱符號語言,面向機器的語言)
4.高級語言:C(面向過程的語言)等,將二進制語言和匯編語言統稱為“低級語言”
5.高級語言編寫的程序稱為“源程序”,源程序不能直接在計算機上運行,先翻譯成二進制語言然后執行。方式:①翻譯一句執行一句-解釋執行,完成翻譯工作的程序叫”解釋程序”。②一次性翻譯完再執行,完成翻譯工作的程序叫”編譯程序”,編譯后的二進制程序稱為”目標程序“
6.C語言前身-ALGOL語言(世界上第一個高級語言,第二個是 FORTRAN語言),以后還有BASIC,COBOL,PASCAL等
7.相比C#特點:更接近硬件,比低級語言更容易描述算法,性能更好
基礎知識
1.字符集和C#一樣.轉義用\
2.保留字(關鍵字),例如if,int,float,typedef,C#會了,這很容易掌握
3.標識符:取名字的規范和C#一樣,方法名,函數名等
4.詞匯分類:常量,變量,運算符,函數調用,表達式,保留字,跟C#一樣
5.語句分類:數據定義語句,賦值語句,函數調用月,表達式語句,流程控制語句,符合語句,空語句,其他語句。跟C#基本一樣
6.C程序是C語句組成的語句序列,通常一個C程序包括一個或多個函數,其中有且僅有一個成為主函數,其函數名規定為 main
7.注釋:/* */
8.C程序,總是從主函數開始,主函數結束。基本和C#中控制台程序一樣
C程序的開發環境
(一)WIN-TC(書中使用Turbo C,我電腦時Win7 64位,運行不了,了解一下就可以了)
1.下載 : 下載
2.安裝:一直下一步就行了,很簡單。
3.界面
4. 本來Turbo C的調試C程序的主要操作步驟分為:
- 輸入新程序或調用已有的程序
- 編輯修改源程序
- 源程序清單存盤
- 編譯連接生成目標程序
- 執行目標程序
- 顯示運行結果
但是在WIN7 64位,運行程序時候,就不行了,如果你是XP用戶,或許可以用
於是我決定用C-Free這個工具去學習了
(二)C-Free 5.0 (下載:第一卷 第二卷)
安裝一直下一步,也是比較簡單的
界面
然后點 幫助-注冊
用戶名:tianfang
電子郵件:quart@163.com
注冊碼:2NnUqd3shO2agta0xNjcusfK1LXO重啟C-Free
Hello World,第一個C項目
新建工程
我們不選第三個
因為我電腦有vs2010,選擇第一個,然后完成
輸入代碼如下,printf相當於C#中的Console.Write
和VS2010一樣,按下F5編譯運行程序,效果圖:
但是這個生成后的exe程序,在這里,顯示結束后,會定個下來,可以看到效果
但是如果你單獨運行,我們以前在C#中都是Console.ReadLine()等待用戶輸入,然后可以看到,輸入以前的所有效果
我們添加一行scanf代碼
java中也是用類似 scan的一個單詞,等待用戶輸入的,好像是Scanner s = new Scanner(System.in);
然后用
String str = s.next();
Integer i = s.nextInt();等待用戶的輸入
我們繼續添加一行代碼
按F5編譯程序就可以了
接下來,你就可以直接
單擊它,就可像C#的控制台那樣,運行項目了,程序的啟動速度很快,這是C#不能比的,WPF項目生成exe,我發現啟動最慢的
其他小例子
作為一個初學者,你還想試試,發現真的跟C#差不多
求輸入的3個數字的 平均數,這也是書上的小例子
預備工作:
如上面一樣建立一個空殼子,准備寫代碼
知識:還記得%f,我們學過C#,知道 float,那么f就是float的簡寫了,表示,這里輸入一個float或者double類型的值。輸入后,直接輸出保存正確的數據類型了,關於%號,還有其他的一些格式
%d整型輸出,%ld長整型輸出,
%o以八進制數形式輸出整數,
%x以十六進制數形式輸出整數,
%u以十進制數輸出unsigned型數據(無符號數)。
%c用來輸出一個字符,
%s用來輸出一個字符串,
%f用來輸出實數,以小數形式輸出,
%e以指數形式輸出實數,
%g根據大小自動選f格式或e格式,且不輸出無意義的零。
我們寫一個ave方法,返回的方式和C#有點不一樣,變量用括號括起來了,其他一樣
回到main函數,繼續編寫代碼
#include <stdio.h>float ave(float f1,float f2,float f3){float a1;
a1=(f1+f2+f3)/3;return (a1);
}int main(int argc, char *argv[]){float x1,x2,x3,x4;
scanf("%f,%f,%f",&x1,&x2,&x3);
x4=ave(x1,x2,x3);printf("%f\n",x4);
scanf("%f");
return 0;
}
輸入 5,6,7按下回車
效果:
這點 ave 函數必須在main方法上面,否則當先運行main的時候,ave根本不存在,所以編譯會出錯
這點和C#不一樣
如果你想要在其他位置放ave方法,需要在main方法中,調用ave方法之前先聲明這個ave函數
代碼如下
然后就可以了
scanf后面的%f的逗號隨便什么連接字符的,例如我改成這樣
效果圖:
學習總結
- 對C有基本的認識了
- 對C和C#有基本的比較了
- 發現學起C不太難
- 用C-Free開發
- 很容易寫出個比C#性能好點的小程序
- 下一步,具體慢慢學C會很容易了