为什么要学习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("该一元二次方程无解");
	}

}

更多推荐

C语言入门(一)