C语言入门系列之1.C语言概述和上机运行简单C程序

简介: C语言是在70年代初问世的。

一、C语言的发展过程

C语言是在70年代初问世的。

一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言,同时由B.W.Kernighan和D.M.Ritchit合著了著名的《THE C PROGRAMMING LANGUAGE》一书 ,通常简称为《K&R》,也有人称之为 《K&R》标准。

但是,在《K&R》中并没有定义一个完整的C语言标准,后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C语言标准,于1983年发表,通常称之为ANSI C。

二、当代最优秀的程序设计语言

早期的C语言主要是用于UNIX系统。

由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。

三、C语言的特点

  • C语言简洁、紧凑,使用方便、灵活。

    ANSIC一共只有32个关键字:

auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、static、sizof、struct、switch、typedef、union、unsigned、void、volatile、while。

  • 9种控制语句,程序书写自由,主要用小写字母表示(C语言大小写敏感),压缩了一切不必要的成分。
  • 运算符丰富。
  • 共有34种运算符。C把括号、赋值、逗号等都作为运算符处理,从而使C的运算类型很丰富,使用极为灵活,可以实现其他高级语言难以实现的运算。
  • 数据结构类型丰富。
  • 具有结构化的控制语句。
  • 语法限制不太严格,程序设计自由度大。
  • C语言允许直接访问物理地址,能进行位(bit)操作,可以嵌入汇编语言、实现汇编语言的大部分功能,还可以直接对硬件进行操作。因此有人把它称为中级语言。
  • 生成目标代码质量高,程序执行效率高。
  • 与汇编语言相比,用C语言写的程序可移植性好。

    但是,C语言对程序员要求也高,程序员用C写程序会感到限制少、灵活性大,功能强,但较其他高级语言在学习上要困难一些。

四、面对过程和面向对象的程序设计思想

  • 面向过程

“面向过程”是一种以事件为中心的编程思想。就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。

  • 面向对象
    “面向对象”(Object Oriented,简称OO)是一种以事物为中心的编程思想。


面向对象的底层基础还是面向过程。

以走这个动作举例来说明面向对象和面向过程:

面向过程会将走这个动作分成几个步骤:抬腿、向前迈出指定角度、向下放腿、身体前移、迈出另一只脚…通过一系列的过程,进而实现整个功能;

而面向对象会将走封装进一个对象,这个对象的一个实例里有很多方法,包括抬腿、迈出、放腿等,通过调用方法来实现功能。

五、简单的C程序

学习一门语言首先就是要向世界发出问候hello world,第一个C程序如下:

#include <stdio.h>
void main()
{
    printf("hello world!\n");
}

打印:

hello world!

main是主函数的函数名,表示这是一个主函数。

每一个C程序都必须有,且只能有一个主函数(main函数)。

函数调用语句,printf函数的功能是把要输出的内容送到显示器去显示。

printf函数是一个由系统定义的标准函数,可在程序中直接调用。


再举一个例子:

#include <math.h>
#include <stdio.h>
main()
{
    double x, s;
    printf("input a number:\n");
    scanf("%lf", &x);
    s = sin(x);
    printf("sin of %lf is %lf\n", x, s);
}

打印:

input a number:
1
sin of 1.000000 is 0.841471

程序执行说明:

include称为文件包含命令;

扩展名为.h的文件称为头文件

定义两个实数变量,以被后面程序使用打印显示提示信息;

从键盘获得一个实数x,求x的正弦,并把它赋给变量s;

显示程序运算结果;

main函数结束。

再看一个稍复杂的例子:

#include <stdio.h>
int max(int a, int b);              /* 函数说明 */
main()  /* 主函数 */
{
    int x, y, z;            /* 变量说明 */
    int max(int a, int b);              /* 函数说明 */
    printf("input two numbers:\n"); 
    scanf("%d%d", &x, &y);          /* 输入x、y值 */
    z = max(x, y);          /* 调用max函数 */
    printf("max num = %d", z);      /* 输出 */
}
int max(int a, int b)       /* 定义max函数 */
{
    if(a > b) return a; else return b;             /* 把结果返回主调函数 */
}

打印:

input two numbers:
10 20
max num = 20

这个简单的程序实现了比较两个数的大小并返回较大的数的功能。

相关文章
|
28天前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
46 1
|
28天前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
59 1
|
25天前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
48 0
|
10天前
|
存储 编译器 程序员
C语言程序的基本结构
C语言程序的基本结构包括:1)预处理指令,如 `#include` 和 `#define`;2)主函数 `main()`,程序从这里开始执行;3)函数声明与定义,执行特定任务的代码块;4)变量声明与初始化,用于存储数据;5)语句和表达式,构成程序基本执行单位;6)注释,解释代码功能。示例代码展示了这些组成部分的应用。
22 10
|
1月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
1月前
|
C语言
C语言中的math库概述
C语言中的math库概述
|
1月前
|
自然语言处理 编译器 C语言
C语言程序的编译
C语言程序的编译
34 2
|
1月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
34 1
|
2月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
46 4
【C语言入门】初识C语言:掌握编程的基石
|
2月前
|
Linux C语言 Windows
C语言文件编程-Linux环境下运行
本文介绍了在Linux环境下使用C语言进行文件编程时的两种主要接口:C标准库函数与Linux系统调用。C标准库提供了`fopen`, `fread`, `fwrite`, 和 `fclose`等函数,适用于普通文件操作;而Linux系统调用如`open`, `read`, `write`, 和 `close`则更适合处理设备文件,同时也可用于普通文件。这两种方法的主要区别在于前者使用文件指针,后者使用文件描述符。文章还给出了两个示例程序:一个使用C标准库函数实现文件复制,另一个则使用Linux系统调用完成相同任务。
30 2