C/C++ L1

2018/07/02 C/C++

C/C++程序语言设计 Level 1。

计算机程序

The programming language you will be learning is C, which was developed in the early 1970s by Dennis M. Ritchie at the Bell Laboratories. C is an example of a high-level language; other high-level languages you might have heard of are Pascal, C++ and Java.

There are two ways to translate a program: interpreting or compiling. An interpreter is a program that reads a high-level program and does what it says. In effect, it translates the program line-by-line, alternately reading lines and carrying out commands.

A compiler is a program that reads a high-level program and translates it all at once, before executing any of the commands. Often you compile the program as a separate step, and then execute the compiled code later. In this case, the high-level program is called the source code, and the translated program is called the object code or the executable.

C语言

C语言是计算机高级语言。它的祖先是BCPL语言。1967年英国剑桥大学的Martin Richards推出了Basic Combined Programming Language语言,1970年美国AT&T贝尔实验室的Ken Thompson以BCPL语言为基础,设计出很简单并且接近硬件的B语言。1972-1973年间,美国贝尔实验室的D.M.Richie在B语言的基础上设计出了C语言。

windows下C/C++编程环境

  1. 访问http://www.mingw.org/,下载mingw工具。
  2. 下载sublime text编辑器、VScode编辑器。
  3. 启动mingw安装器,选择mingw-develop-toolkit、mingw32-base、mingw32-gcc-g++、msys-base,点击Installation – Apply Changes。
  4. 配置环境变量:
    • C_INCLUDEDE_PATH C:\MinGW\include
    • LIBRARY_PATH C:\MinGW\lib
    • Path C:\MinGW\bin
  5. 编写代码,保存为test.c。
  6. 访问https://git-scm.com/,安装git-bash工具。
  7. 启动git-bash工具,输入命令:
    gcc test.c -o c
    ./c
    
  8. 查看gcc返回的结果。

或者,最简单的方式:

  1. 安装啊哈C编程工具或者是C-Free等IDE。

什么是一个程序?

A program is a sequence of instructions that specifies how to perform a computation. The computation might be something mathematical, like solving a system of equations or finding the roots of a polynomial, but it can also be a symbolic computation, like searching and replacing text in a document or (strangely enough) compiling a program.

The instructions, which we will call statements, look different in different programming languages, but there are a few basic operations most languages can perform:

  1. input: Get data from the keyboard, or a file, or some other device.
  2. output: Display data on the screen or send data to a file or other device.
  3. math: Perform basic mathematical operations like addition and multiplication.
  4. testing: Check for certain conditions and execute the appropriate sequence of statements.
  5. repetition: Perform some action repeatedly, usually with some variation.

调试错误

程序是一个复杂的操作过程,人们在写代码的时候可能会犯错。我们称计算机程序出现的错误为bugs,而调试错误的过程称为debugging。下面是常见的错误:

  1. Compile-time errors
    • 编译过程错误,原因是违反语法规则。
  2. Run-time errors
    • 运行时错误,在程序运行时出现的错误。
  3. Logic errors and semantics
    • 逻辑设计错误,程序能够正常运行,但是不能解决问题。

数据的表现形式以及声明语句

常量

程序运行过程中,值不能改变的量称为常量。声明常量语句使用const关键字。常量包含:

  1. 整型常量
  2. 实型常量
  3. 字符常量(普通字符、转义字符)
  4. 字符串常量
  5. 符号常量(使用define指令)

变量

程序运行过程中,变量代表的是一个有名字的、具有特定属性的一个存储单元,它用来存放数据,也就是存放变量的值。在程序运行期间,变量的值是可以改变的。变量需要先定义,然后才能使用。

标识符

在计算机语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符序列统称为标识符。换句话说,标识符就是对象的名字,例如前面提到的变量名就是标识符的一种。标识符的命名规则是只能由数字、字母以及下划线组成,其中不能以数字开头。标识符是对大小写敏感的。

数据类型

C语言规定了下列的基本数据类型(C99标准),不同的数据类型决定了数据分配存储单元的大小。

  1. 基本类型
    • int
    • short
    • long long
    • char
    • bool
    • float
    • double
  2. 枚举类型
  3. void
  4. 派生类型
    • 指针
    • 数组
    • 结构体
    • 共用体
    • 函数

该小节中介绍基本类型,其中可以使用sizeof函数来识别不同类型的数据长度。

int

编译系统给int类型分配2个字节或者是4个字节,不同的编译器分配的空间可能不同。int在储存结构的最前面的1bit数据是表示正负号。

short

跟int类似,仅是储存长度变为2字节。一般比较少用。

long long

跟int类似,储存长度变为8字节,用于储存十分大的整数。

字符

C语言使用ASCII字符集,ASCII基本集包含了127个字符,包括

  • 字母:大写英文字母A-Z、小写英文字母a-z。
  • 数字:0-9。
  • 符号:共29个符号,例如%&*等。
  • 空格符:空格、tab、换行等等。
  • 不可显示:空(\0)、退格、回车等。

char类型可以储存字符,本质上char是一个1字节的整数变量,对应的是0-127整数,每个整数映射到一个字符,参见ASCII表。

float

单精度浮点数。储存的时候,系统将实数分为小数部分以及指数部分,储存结构是数符、小数部分、指数

double

类似的,双精度浮点数,储存长度8字节。

运算符

几乎每一个程序都需要进行运算,对数据进行加工处理,否则程序就没有意义了。C语言规定的基本运算符号包含:+ - * / %。

自增、自减运算符号

++i; (先加,后用) i++; (先用,后加)

当自增自减符号单独使用的时候,没有任何区别。

运算自动转换

如果程序中不同的数据进行运算,则会自动进行类型转换,使得两者具有同一种类型,然后进行计算。

  1. 单目运算符的运算中,两个数有一个float,另一个是double,则结果为double。float类型转换为double类型。
  2. 如果int与float、double类型进行运算,则int转换为double类型。
  3. char类型与int类型进行运算,则将char的ASCII序号与int相加后转换为ASCII字符。

赋值声明语句

赋值符号=,是赋值运算符,它的作用是将一个数据赋予一个变量或者是常量。一般在声明变量、变量更变值的时候使用到赋值语句,并且在初始化变量的时候赋0。

赋值运算符可以使用复合形式,例如a = a + 3可以这么表达:

a += 3

样例1

#include <iostream>
#include <cmath>
using namespace std;

int main(){
    double a, b, c, disc, x1, x2, p, q;
    cin >> a >> b >> c
    disc = b*b - 4*a*c;
    p = -b/(2.0*a);
    q = sqrt(disc)/(2.0*a);
    x1 = p+q;
    x2 = p-q;
    cout << x1 << ' ' << x2 << endl;
    return 0;
}

样例2

// 思考如何改进支持更多变换
#include <iostream>
using namespace std;

int main(){
    char c1, c2;
    cin >> c1;
    c2 = c1 + 32;
    cout << c2 << endl;
    return 0;
}

Search

    Table of Contents