C語言入門(一)

2020-08-11 16:28:18

爲什麼要學習C語言

c語言的起源和發展

  1. 第一代語言:機器語言
  2. 第二代語言:彙編語言
  3. 第三代高階語言:
    結構化語言:Fortran,Basic,C,Pascal
    物件導向的語言(OO): Algo,Simula67,Ada,SmallTalk C++,Java,C#

c語言的特點

優點:程式碼量小 速度快 功能強大(可以存取硬體——指針)

三大操作系統:

  • windows: c(內核),c++
  • unix: c
  • linux: c

缺點: 危險性高 開發週期長 可移植性弱

C語言的應用領域

系統軟件開發

  • 操作系統 :windows、linux 、 unix
  • 驅動程式:主機板驅動、顯示卡驅動、攝像頭驅動
  • 數據庫:DB2、Oracl、Sql Server

應用軟件開發

  • 辦公軟體 :WPS
  • 影象影象多媒體 :PS
  • 嵌入式軟件開發 :智慧手機、掌上電腦
  • 遊戲開發:CS

C語言的重要性

  • 理工科的必修課
  • 一個合格的駭客必須掌握的語言(入侵操作系統) 蠕蟲病毒(gets()-> fgets())
  • 任何一個想終身從事程式設計和開發人員必須熟練掌握的語言
  • 大企業、外企招聘程式設計師必考的語言
  • 爲數據結構、C++,Java,C#奠定基礎
  • 操作系統

怎麼學習C語言

多寫程式碼,多思考(多問爲什麼?)
目標:能看懂程式,能偵錯程式,自學能力要很強

  • C語言書目推薦:
  • 譚浩強《C語言程式設計》 清華
  • 《The C programming language》機械工程
  • 《C Primer Plus》
  • 《C和指針》
  • 《C專家程式設計》
  • 《C陷阱與缺陷》
  • 《C科學與藝術》
  • 學習彙編語言的書目推薦:
  • 王爽《彙編語言》

學Java爲什麼建議要先學C

(雖然我是先學java,再學C的)

  • Java繼承了80%的C的語法
  • C是程序導向語言的代表,學好C有助於學習Java中的物件導向的思想
  • 學好C中的指針是Java中參照的基礎

程式一:Hello world

#include<stdio.h>

int main(void) {
	printf("歡迎學習C語言\n hello world!");
	return 0;
}

執行結果:
在这里插入图片描述

程式二:解二元一次方程

基本框架:

  • 獲取 a,b,c的值
  • 計算得到delta的值
  • 利用求根公式進行求解

遇到的問題:
字串直接拼接會報錯:

printf("該一元二次方程有兩個解:x1 = " + x1 + "x2 = " + x2);

在这里插入图片描述
正確的寫法:

printf("該一元二次方程有兩個解: x1 = %f,x2 = %f\n", x1, x2);

完整程式碼:

#include<stdio.h>
#include<math.h>

int main(void) {
	int a = 1;
	int b = 2;
	int c = 1;
	double delta;
	double x1;
	double x2;

	delta = b * b - 4 * a * c;

	if (delta > 0){
		x1 = (-b + sqrt(delta)) / (2 * a);
		x2 = (-b - sqrt(delta)) / (2 * a);
		printf("該一元二次方程有兩個解: x1 = %f,x2 = %f\n", x1, x2);
	}
	else if (delta == 0) {
		x1 = (-b + sqrt(delta)) / (2 * a);
		x2 = x1;
		printf("該一元二次方程有一個解: x1 = x2 = %f  ", x1 );
	}
	else 
	{
		printf("該一元二次方程無解");
	}

}