为什么要学习C语言
c语言的起源和发展
- 第一代语言:机器语言
- 第二代语言:汇编语言
- 第三代高级语言:
结构化语言: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("该一元二次方程无解");
}
}