C++基础知识

C++基础知识
C++基础知识

ACM入门进阶

程序设计语言是学习数据结构的一个重要组成部分,任何算法只有通过程序设计语言实现之后才能真正解决问题。C++语言凭借其高度的灵活性和强大的功能在大学生竞赛中被非常广泛地使用,在中学生竞赛中的使用也越来越广泛。本文旨在给初学者一个窗口,通过例题了解什么是ACM,希望能够对刚入门的读者有所帮助(题目是英文的,不用担心,很简单得英文,不懂可以查金山词霸~~)

ACM一般要求在一定的时间内,理解并分析题意,设计符合给定时间和空间复杂度要求的算法,并在计算机上使用一定的程序设计语言正确地实现算法。由于整个竞赛存在时间限制(特别是ACM/ICPC类竞赛,在解决问题数目相等的情况下以做题累计时间的多少来决定名次),因此所使用的程序设计语言能否正确、快速地实现算法对竞赛的成绩影响颇大。一般信息学竞赛比较常用的程序设计语言有以下几种:BASIC、Pascal、C/C++、Java,它们

在目前的ACM竞赛中,C++和C语言使用较为广泛。但是C++语言凭借其本身所具有的高度的灵活性,以及它所带的库的强大功能,被越来越多的选手所使用。

本文几乎所有内容都是例子,详细的见一些相关的参考书。

一C++基础知识

1.1 "Hello, world!"

C++对于大小写是敏感的。

首先,让我们通过一个非常简单的C++程序,来初步地了解C++语言。

#include

using namespace std;// 注意如果不使用.h将要增加本行

int main()

{

cout << "Hello, world!" << endl; return 0;

} ///:~

这个程序的作用就是在屏幕上输出“Hello, world!”的字样。

以“#”开始的内容被称为预处理指令,这一行的作用是把一个叫做iostream的头文件包含到我们的程序中来。C++默认是不包含任何头文件的。另外,C语言中的头文件都是以.h 结尾的,而标准的C++提倡使用没有扩展名的头文件。

第四行让我们可以在程序中直接使用std名字空间内的标识符。std名字空间包含了所有标准C++提供的类和函数,为了简便起见,一般总在包含头文件的预处理命令后写上这一行。如果是C语言的话,程序将变成:

#include

int main()

{

printf(“%s\n”,"Hello, world!");

return 0;

} ///:~

1.2 类型

true,而零被转化成false。

其中VC中没有long long类型,可用_int64代替,sizeof的作用就是返回括号里的类型的大小(也可以是变量或者常量)。

单个字符的常数要用单引号括起来,一些不能显示的字符可以通过转义符来表示(参见下表)。另外,从上表中可以看出,在C++中,字符型和单字节的整型实际上是等价的。举

1.3 操作符

首先,我们来看下表:

从中可以看出,C++语言最大的特点就是几乎所有的操作符都是由符号字符构成的。注意:

1、C++中,整数除法和实数除法都是由“/”来完成的,当两个操作数都是整数时进行整数除法,当至少有一个是实数时进行实数除法;

2、C++中,位运算与逻辑运算的操作符是不同的。

1.4 常用的库函数和格式输出

标准C++提供了十分强大的库。在这一节,我们只介绍一些和Pascal所提供的标准过

const double pi = acos(0.) * 2;

格式化输出

具体参考C++语言等相关书籍

C++的流可以完成控制格式的操作。指定场宽由成员函数width()来完成,而指定小数部分的位数则稍微麻烦一些,要先把浮点数的输出方式设置为定点输出方式,然后再设置小数部分的位数。例如:

cout.setf(ios::fixed, ios::floatfield);

cout.precision(2);

cout << 1.2345 << endl;

以上程序段中第一个语句的作用就是把浮点数的输出方式设置为定点输出方式,第二个语句的作用是把小数部分的位数设置为2。和Pascal一样,小数部分的最后一位也会进行四舍五入的处理。

需要注意的是,width()只对接下来的一个格式化输出有效,如果有多个输出需要指定场宽,那么就要写多个width()函数。而precision()则对之后所有的浮点数输出都有效。例如:cout.width(3);

cout << 1 << 2; // 1的场宽为3,而2采用实际宽度

cout.width(4);

cout << 2;

如果你觉得这样写太麻烦,你也可以把它写成:

cout << setw(3) << 1 << 2 << setw(4) << 2;

不过这时不要忘了在程序的最前面加上#include ,因为setw是在iomanip中被定义的。

这样,我们就可以完成一般的格式化输出了。C++中流的格式化输出还有很多内容,如果有兴趣可以参考有关资料。

1.5 例子

要求:每个程序在全部弄懂的前提下,自己编写一次(可以上网AC的都要尽量通过)

例1:http://acm.timus.ru/problem.aspx?space=1&num=1000A+B Problem

Calculate a + b

输入: a and b

输出:a+b

Sample Input

1 5

Sample Output

6

程序:

C++:

#include

using namespace std;

int main()

{

int a,b;

while(cin >> a >> b)

cout << a+b << endl;

}

//cin和cout是iostream里面的东西

C:

#include

int main()

{

int a,b;

while(scanf("%d %d",&a, &b) != EOF)

printf("%d\n",a+b);

}

注意一般程序要求你多次输入的!! printf和scanf是stdio.h里面的东西,注意C语言里面没有类的存在,只有函数。

这两个函数要熟练使用的,慢慢来也行,具体见《C和C++帮助》

例2:1到n求和

输入:n 代表一个非负整数1=

输出:1到n求和

Sample Input

100

Sample Output

5050

程序:

C:

#include

int n,sum;

int main()

{

while (scanf("%d",&n)!=EOF)

{

sum=n*(n+1)/2;

printf("%d",sum);

}

return 0;

}

C++:

#include

using namespace std;

int n,sum;

int main()

{

while (cin>>n)

{

sum=n*(n+1)/2;

cout<

}

return 0;

}

例3:判断一个数是不是素数1

100

31

Sample Output

NO

YES

程序:

#include

#include

using namespace std;

bool tf(int n)

{

int i;

for(i=2;i

if (n%i==0) return false;

return true;

}

int main()

{

int n;

while (cin>>n)

{

if(tf(n))

cout<<"YES"<

else

cout<<"NO"<

}

return 0;

}

例4 求两个数的最大公约数和最小公倍数

Sample Input

12 18

Sample Output

6 36

程序:

#include

#include

using namespace std;

int gcd(int n,int m) //求最大公约数的递归函数

{

if(m==0) return n;

else return gcd(m,n%m);

}

int main()

{

int n,m,g;

while (cin>>n>>m)

{

g=gcd(n,m);

cout<

}

return 0;

}

例5 排序

输入:n个整数的序列1=

Sample Input

5

1 5 3

2 4

Sample Output

1 2 3 4 5

程序一(顺序排序):

#include

using namespace std;

int n,a[10001];

void sxpx(int *a)//顺序排序函数

{

int i,j,temp;

for(i=1;i<=n;i++)

for(j=i+1;j<=n;j++)

if(a[i]>a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

int main()

{

while (cin>>n)

{

int i;

for(i=1;i<=n;i++) cin>>a[i];

sxpx(a);

cout<

for(i=2;i<=n;i++) cout<<' '<

cout<

}

return 0;

}

程序二(快速排序):必懂算法

#include

int a[10000];

int n;

void quicksort(int s,int t)//总的思想就是第s个节点派到它最后应该排的位置;

{

int i,j,x,t1;

i=s;j=t;x=a[i];

while (i

{

while ((a[j]>=x)&&(j>i)) j=j-1;

if (j>i) { t1=a[i]; a[i]=a[j];a[j]=t1;}

while ((a[i]<=x)&&(i

if (i

}

a[i]=x;

i=i+1;j=j-1;

if (s

if (i

}

int main()

{

while (EOF!=scanf("%d",&n)) //也可是这样写:-> while (EOF!=0)

{ {

for (int p=0;p

scanf("%d",&a[p]); for (int p=0;p

for (p=0;p

printf("%d ",a[p]); for (p=0;p

return 0; }

}

比较以上两种排序的方法,哪个比较快呢?快速排序比较难理解,可以分两步理解:

1 :开数据结构的书,看懂手工是怎么操作的

2 :自己写一组数据,单步跟踪一下,看看数据怎么变化的。

初学时,单步跟踪很重要!!!!!!

如果上面蓝色的字体你都做到了,好了,恭喜~!!你已经具有自学的能力了,加油加油,以后很多算法只要做这两个工作就行了,再加上一些相关的习题训练就可以灵活运用算法了,再进一步就是成为大牛~~说远了,加油~~

这里插入STL的使用,可以使用系统的排序函数(具体参考相关STL的资料):

#include

#include

#include

using namespace std;

int n;

int main()

{

while (cin>>n)

{

int i,x;

vector a;//a是一个容器

for(i=1;i<=n;i++)

{

cin>>x;

a.push_back(x);//往容器中塞东西

}

sort(a.begin(),a.end());

cout<

for(i=1;i

cout<

}

return 0;

}

例6:https://www.360docs.net/doc/5810016932.html,/cgi-bin/problem_cn?id=3020级数求和

[问题描述]:

已知:Sn= 1+1/2+1/3+…+1/n。显然对于任意一个整数K,当n足够大的时候,Sn大于K。

现给出一个整数K(1<=k<=15),要求计算出一个最小的n;使得Sn>K。

[输入文件]

输入有多组测试数据,每组一行,一个数k

[输出文件]

输出有多组数据,每组一行,一个数n。

[输入样例]

1

[输出样例]

2

程序:

#include

using namespace std;

int main()

{

int k;

while (cin>>k)

{

double s=1.0;

int n=1;

while(s<=k)

{

n++;

s+=1.0/n;

}

cout<

}

return 0;

}

建议C和C++语言两个版本都自己编写提交

例7:https://www.360docs.net/doc/5810016932.html,/show_problem.php?pid=2482 IP Address

简单的说就是8个0或1为一个数,要你转化为十进制数(但是要注意格式)

Suppose you are reading byte streams from any device, representing IP addresses. Your task is to convert a 32 characters long sequence of '1s' and '0s' (bits) to a dotted decimal format. A dotted decimal format for an IP address is form by grouping 8 bits at a time and converting the binary representation to decimal representation. Any 8 bits is a valid part of an IP address. To convert binary numbers to decimal numbers remember that both are positional numerical systems, where

Input

The input will have a number N (1 <= N <= 9) in its first line representing the number of streams to convert. N lines will follow.

Output

The output must have N lines with a doted decimal IP address. A dotted decimal IP address is formed by grouping 8 bit at the time and converting the binary representation to decimal representation.

Sample Input

4

00000000000000000000000000000000

00000011100000001111111111111111

11001011100001001110010110000000

01010000000100000000000000000001

Sample Output

0.0.0.0

3.128.255.255

203.132.229.128

80.16.0.1

算法解释:

简单说就是考两个点:1:字符串的操作2:数制转化

#include

#include

const int d[8]={128,64,32,16,8,4,2,1};

int main()

{

int n,i,j,k,x;

int a[4];

char s[33];

while (scanf("%d",&n)!=EOF)

{

for (i=1;i<=n;i++)

{

scanf("%s",&s);

memset(a,0,sizeof(a));//a中所有元素都为0

for (j=0;j<4;j++)

{

for(k=0;k<8;k++)

if (s[j*8+k]=='1')

a[j]+=d[k];

}

for (j=0;j<3;j++) printf("%d.",a[j]);

printf("%d\n",a[3]);

}

}

return 0;

}

例8:https://www.360docs.net/doc/5810016932.html,/cgi-bin/problem_cn?id=4026What is Left

My lovely sister QingQing has many books. One day she numbers her books with integer. Of cause same books are marked by the same number. When all the books are marked, it is easy to find how many are the same

Now QingQing has a list of books( given by numbers they are marked). In order to buy a gift for her dear brother, she plans to sell some books. But she wants to keep one copy for each kind.

After selling, what books will be left ? Please write a program to tell QingQing the answer.

Input

First line is an number N(1<=N<=50000), meaning the books that QingQing has before selling. Next line will contain N numbers, the marks of the books, separated by a single space.

(the marks are between 0 and 999, inclusively)

Output

A line for each test case contains the marks of the books after selling. (sorted in non-descending order).

Two numbers are separated by a single space.

Sample Input

5

1 2 5 4 5

2

1 2

Sample Output

1 2 4 5

1 2

算法分析:

sample第一组数据的解释是:5本书,它们的编号分别是1 2 5 4 5 ,问有多少种书,明显是四种,要你列出来而且要编号从小到大列出来。

#include

#include

using namespace std;

int main()

{

int n,i,x;

bool a[1000],k;

char s[33];

while (cin>>n)

{

memset(a,0,sizeof(a));

for (i=1;i<=n;i++)

{

cin>>x;

a[x]=true;

}

k=true;

for(i=0;i<999;i++)

{

if (a[i])

{

if(k){ cout<

else cout<<' '<

}

cout<

例9:https://www.360docs.net/doc/5810016932.html,/cgi-bin/problem_cn?id=1059 Points In Line(集训题III-几何) 问题描述:

给出平面上的n(3<=n<=100)个点的坐标,(x1,y1),(x2,y2),...,(xn,yn),请编写程序判断这n 个点,是否都在同一条直线上。所有坐标的取值范围[-100,100]。 输入格式:

每行分别有2n+1个整数,第一个表示:n,后面连续2n 个分别表示:x1,y1,x2,y2,...xn,yn 。有多个测试数据。 输出格式:

如果输入中给出的n 个点共线,则输出"YES",否则输出"NO",每行一个输出。 输入样例: 3 1 1 2 2 -1 -1 4 0 1 0 0 -5 5 7 1 输出样例: YES NO

算法分析:斜率一样就YES ,但是注意计算机可能表示的精度有限,所以判断斜率一样要这样:(list[1].x-list[0].x)*(list[i].y-list[0].y)=(list[i].x-list[0].x)*(list[1].y-list[0].y)

这是公式:

100

100

i i y y y y x x x x --=

-- 的转化 程序:

#include using namespace std; struct node { int x; int y; }list[100]; int main() { int n,i; bool k; while(cin>>n) { k=false; for(i=0;i>list[i].x>>list[i].y; for(i=2;i

k=true;

break;

}

if (k) cout<<"NO"<

else cout<<"YES"<

}

return 0;

}

例10https://www.360docs.net/doc/5810016932.html,/cgi-bin/problem_cn?id=3002赋值问题

问题描述

在很多程序设计语言中,忘记给变量赋初值的错误常令人头疼。在下面的问题中,最开始仅有变量a中有确定的值。变量为单个小写字母,每行恰好有三个字符,中间一个是赋值运算符'='。请编程求出含N行的程序段运行以后有哪些变量中有确定的值。

输入:第一行:N (0

有多组测试数据,直到输入结束为止。

输出:如果没有,输出none 否则在一行中按字母表顺序给出所有有确定值的变量名。

每输出一组数据要换行。

输入:

4

b=a

c=d

d=b

e=f

2

a=c

d=b

输出:

a b d

none

程序(from prinse):

C++的

#include

using namespace std;

const int N = 1000000;

const int M = 26;

char a[M] = { 1 }, b[M];

int main() {

int i, k, n;

char ch1, ch2, ch3;

while (cin>>n) {

for (i=0; i

cin>>ch1>>ch2>>ch3;

a[ch1-'a'] = a[ch3-'a'];

}

for (i=k=0; i

a[0] = 1;

if (!k)

cout<<"none";

else {

for (i=0; i

cout<

}

cout<

}

return 0;

}

C语言:

#include

#include

const int M = 5, a = 'a', z = 'z';

int n, s[z+1];

char c[M];

int main() {

int i, k;

for (s[a]=1; scanf("%d",&n)!=EOF; s[a] = 1) {

getchar(); // 因为后面是RAW输入, 故留在缓冲中的空白符被处理为输入数据

// 有趣的是, 虽然gets 是RAW输入, 但它却同时除掉分隔符for (i=0; i

for (k=0,i=a; i<=z&&!s[i]; i++);

if (i<=z) { k=1; putchar(i); }

for (i++; i<=z; i++) if (s[i]) { putchar(' '); putchar(i); }

if (!k) puts("none"); else putchar('\n');

memset(s,0,sizeof s);

}

return 0;

}

通过不断地练习,最终达到熟练掌握C++和C语言的目的。单单以上10个例子远远不足,更多的简单程序见相关的“例子”书籍。

二数据结构基础

阅读本章的必要条件:会使用C++和C语言编写简单的程序、了解数组,指针,串,结构体等基本的数据类型。

在本章中,不涉及编写类和对象,目的是理解和掌握算法。

2.1 数据结构基本认知

数据结构(data structure):是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一个二元组,记为: data_structure=(D,S).其中D为数据元素的集合,S是D上关系的集合。数据元素相互之间的关系称为结构(structure)。根据数据元素之间关系的不同特性,通常由下列四类基本结构:

(1)线性结构:数据元素间存在一对一的关系。(图1)

(2)集合:数据元素间的关系是同属一个集合。(图2)(本文不谈)

(3)树形结构:结构中的元素间的关系是一对多的关系。(图3)

(4)图(网)状结构:结构中的元素间的关系是多对多的关系。(图4)

图1 图2

图3 图4

前驱?后继?你可以观察出他们各自的特征吗?

线性表:n个数据元素的的有限序列其特点是除了表头和表尾外,表中的每一个元素有且仅有唯一的前驱和唯一的后继,表头有且只有一个后继,表尾有且只有一个前驱。

树:所有结点都可以有多个后继,但是只有一个前驱(头没有前驱)

图:所有点没有前驱和后继的限制。

具体算法的理解和体会见:《数据结构(C语言版)》配书光盘

三TOJ(同济大学)的学习

由于是基础学习,只有前面20题,通过这部分希望大家能够进一步体会ACM的乐趣。

Toj的学习分三部分:

题目,解题报告(部分),源程序

C语言基础知识_测试题

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2]下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3.] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4]. 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6]. C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8]. 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

学习C语言的必备基础知识

学习C语言的必备基础 知识 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

学习C语言的必备基础知识 热45已有 4055 次阅读2010-01-06 02:24 这个是我自编的C语言教材的第一章,主要分两个部分,一个是计算机组成及工作原理,一个是信息的数字化.有什么不足的,大家可以补充,也可以提些建议. 第一章计算机和数据的存储 第一节了解计算机 很奇怪的一件事,现在的C语言教材,一上来就是变量,表达式,一点也不提计算机原理方面的事,把C语言当作语言,数学来学,只是生硬的列出一些语法规则,学生们难以理解,只好死记硬背,没有把握住本质的东西,也就无法随心所欲,其实C语言是一门非常好学的语言,核心的语法规则是非常少的,而且都是和计算机息息相关,所以必须要学习好计算机的一些基础,掌握好计算机的基础知识对学习C语言至关重要,对将来其它语言的编程都极其有益,C语言还有一个优点,就是写法非常简洁明了,和c++,java,C#, javascript等语言有着非常相似的书写方式,所以学好C语言,可以轻松的过渡到大量其它编程语言。讲完C以后,将陆续推出java ,C#,C++, javascript,ruby,python等,不过都是在此教程的基础之上进行,所以C语言乃基础之基础,想要学编程,强烈建议从C语言开始。 下面开始了解计算机。

按照冯诺依曼的理论,计算机含有5个部分,运算器、控制器、存储器、输入和输出设备。现在我们通常把运算器、控制器和在一起,称为CPU(中央处理器),存储器就是我们说的内存和硬盘,输入设备就是鼠标,键盘等,输出设备主要是显示器、打印机、绘图仪等。 其中CPU和内存最关键,CPU是执行指令的部件,内存是一些连续的存储单元,用来存储指令和数据,每个单元可以存8位二进制数,也称为1个字节,计算机里存储器都是以字节为单位的,在描述网络速度的时候通常以位为单位,大家注意区别。CPU要执行的指令就存在内存里,CPU按照指定顺序连续地执行内存中的指令,这就是冯诺依曼体系的基本工作原理。 什么是指令传送,计算,跳转,其实我们的编程语言也就能完成这些功能。其中传送主要是管理存储器,管理数据如何存储,是最重要的,计算比较简单,主要是数学计算,跳转让计算机有了智能。 什么是数据,数据可以是要计算的数字,也可以是一篇文章,一幅画,一首歌,这些东西必须先存到内存里,才能让CPU传送到显卡,声卡,我们才能听见看见。在内存里指令和数据是分开存放的,我们在编写程序时用到的内存通常是指存储数据用的数据区,在一条指令里,往往也分操作码和操作数,操作数也是一种数据,只不过它是指令的一部分,存储在指令区,这种数据称为操作数,以后也会用到。 什么是程序,程序就是由一批指令和数据组合在一起构成的二进制数据集。但如果要用二进制来写程序,那估计肯定有人骂街了,我们通常用能看懂的字母和阿拉伯数字来写程序,第一种被发明的编程语言叫汇编语言,它给每个二进制指令都给起了一个英文名字,叫做助记码,我们用助记码写起程序来

谭浩强C语言知识点总结

谭浩强C语言知识点总 结 文件编码(GHTU-UITID-GGBKT-POIU-WUUI-8968)

C语言最重要的知识点总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte 是指字节, 一个字节 = 八个位.概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI ; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章 C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---?.obj---?.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次)

C语言基础知识

常量和变量 1.常量: 程序执行过程中,值不变的量。 3 ,'a' 变量:值可以改变的量。 一个变量有一个名字,在内存中有一定的存储单元,存放变量的值。 2.常量类型: a.整型:12,0,-3 b.实型:4.6,-1.2 c.字符型: 'a','d' d.符号常量: #define PRICE 30 (PRICE不能再被赋值且要大写) 3.变量: 先定义,后使用。一个变量只能被指定为一确定类型。 4.标识符:标识变量名,符号常量名,函数名,数组名,类型名,文件名的有效字符数列。 a.由字母、数字、下划线三种字符组成,第一个字符必须为字母或下划线。 b.大写字母、小写字母被认为是两个不同的字符。 c.长度一般小于8个。 数据类型 一.整型: 1.整型常量 a.十进制:12,-3,0 b.八进制:以0开头。 c.十六进制:以0x开头。 2.整型变量 a. int -32768——32767 b. short int -32768——32767 c. long int d. unsigned int 0——65535 e. unsigned short 0——65535 f. unsigned long int、short int、long int 第一位为符号位 0000001 (0为正,1为负) unsigned 第一位不是符号位 0000001 所以int型和unsigned型的000001不是同一个值。 二.实型: 1.实型常量:

a.十进制数:数字和小数点组成。0.12,.12,12.0,0.0 b.指数:e之前必须有数字,e后面必须为整数。12e3 2.实型变量: a.单精度:float 7位有效数字 111111.1可,111111.11不可。 b.双精度:double 15—16位有效数字。 三.字符型: 1.字符常量: a. 'a' , 'x' , '*' ,'$' 。 b. 转义字符:‘\n'换。 '\t'从第九列开始。'\r'回车。 '\b'退一格。 2.字符变量: char char='a' 一个字符变量在内存占一个字节。 。将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的ASC码 放到存储单元中,所以字符型数据和整型数据之间可以通用。一个字符型数据既可以以字符形式输出, 又可以以整数形式输出。 四.字符串常量: "how are you", "a","&12" 。不能把一个字符串赋给一个字符变量。 char c='a'对,char c="how" 错。 。'a' :在内存中存a。 “a”:在内存中存a\0。 ‘\0’是C语言中判断字符串是否结束的标志。 变量赋初值 a. int a=3; float f=7.2; char c='a'; b. int a,b,c=5; 相当于 int a,b,c; c=5; c. int a=3;b=3;c=3; 不可写: int a=b=c=3;

大学c语言必背基础知识_c语言基础知识大全

大学c语言必背基础知识_c语言基础知识大全 对于刚学计算机编程的同学来说,没一个编程知识都觉得很重要,其实不是的。下面小编为大家整理了相关大学c语言必背基础知识,希望大家喜欢。 大学c语言必背基础知识举例说明: printf(“-”,123 ); 第二部分有三位,大于指定的两位,原样输出123 printf(“]”,123 ); 第二部分有三位,小于指定的五位,左边补两个空格123 printf(“f”,1.25 ); 小数要求补足6位的,没有六位的补0,。结果为1.250000 printf(“%5.3f”,125 ); 小数三位,整个五位,结果为1.250(小数点算一位) printf(“%3.1f”,1.25 );小数一位,整个三位,结果为1.3(要进行四舍五入) 第三节数据输入1、scanf(“a=%d,b=%d”,">2、scanf(“%d,%d”,x,y);这种写法绝对错误,scanf的第二个部分一定要是地址!scanf(“%d,%d”,注意写成这样才可以! 3、特别注意指针在scanf的考察例如:int x=2;int *p=scanf(“%d”,x); 错误scanf(“%d”,p);正确scanf(“%d”,错误scanf(“%d”,*p)错误 4、指定输入的长度(考试重点)终端输入:1234567scanf(“-M%d”,x为12,y为3456,z为7终端输入:1 234567 由于1和2中间有空格,所以只有1位给xscanf(“-M%d”,x 为1,y为2345,z为67 5、字符和整型是近亲:int x=97;printf(“%d”,x); 结果为97printf(“%c”,x); 结果为a 6、输入时候字符和整数的区别(考试超级重点) scanf(“%d”,这个时候输入1,特别注意表示的是整数1 scanf(“%c”,这个时候输入1,特别注意表示的是字符‘1’ASCII为整数48。 补充说明: 1)scanf函数的格式考察: 注意该函数的第二个部分是scanf(“%d%d%*d%d”,跳过输入的第三个数据。 2)putchar ,getchar 函数的考查:

C语言基础知识整理

C 语言基础知识 1. 每个C 程序有且只有一个主函数main() ,且程序必须从main() 函数开始执行,并在main() 函数中结束。 2. 在C语言中,用e来表示科学计数法时,规定在e的前面必须有数字,后面必须为整数。 3. 用单引号括起来的一个字符常量只能存放一个字符;C 语言中没有字符串变量,只能用字符数组来存储字符串。 4. 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 5. 在一个函数内的复合语句中定义的变量,只能在这个复合语句范围内有效。 6. 用sizeof(int) 计算int 类型数据的字节数。 7. C语言运行时,首先系统检查语法的正误,再运行程序的语法;C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8. 预处理命令行的位置没有规定,只是习惯放在前面;在源文件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空 间。 9. feo f函数的作用是检查文件是否结束,当结束时返回的值为非零,否则为零。 10. 当定义了数组后,在给其赋值时,不能直接把字符串赋给数组名。 11. 在赋值表达式中,赋值运算符"=”右侧不能为表达式;在求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12. 静态局部变量,只有当程序结束后,其值才释放。 13. 当调用函数时,实参是一个数组名,则向函数传送的是数组每一个元素的地址。 14. 算法的特点为有零个或多个输入,有一个或多个输出,当相同的输入时,其结果相同;算法 正确的程序最终一定会结束。15. 在 C 语言中,预处理命令行都以“#”开头;当需要时才用 #include; 预处理的作用就是实现宏定义和条件编译。16. 当数组元素的下标超出了定义 的下标范围时,系统不给出“下标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17. 共用体变量不能作为函数的参数,也不能使函数带回共用体变量。 18. 指向函数的指针变量的定义形式为:数据类型(* 指针变量)();,因此其为指向函数的 指针变量。 19. 用C 语言编写的代码程序是源程序,只有通过编译、连接才能进行。 20. 在说明为static 时,其生存期得到延长,而其作用域并没有改变,在定义后系统会自动帮它赋值为0,static 为关键字不能被用作它用。 21. 频繁地使用空语句会降低程序的可读性和运算速度。22. 运算符%两边都应是整数,赋值语 句左边应该是变量,而非表达式,强制转换语句强制类型应加括号。 23. 在逻辑运算符中,其两侧的运算符对象为任意合法的表达式即可。 24. 函数fread (&larray,2,16,fp)的功能是,从fp所指的数据文件中读取16次2字节的数据 存储到数组larray中。25.整个流式文件也可以随机存取数据,C语言文件中有好多函数可以达 到写入数据时,未经输入数据,达到不覆盖的目的,在进行写操作时,系统会自动关闭文件。 26. 使用putchar、getchat、puts、gets、printf、seanf函数时,必须在程序的开头岀现包含头文件 #inelude "stdio.h ”的命令行,而使用字符串处理函数时,必须在程序的开头岀现包含头文件 #include”string.h ”命令行,而使用数学函数时,必须在程序的开头岀现包含头文件#include”math.h” 的命令行。 27. 一个斜杠与小于等于127 任意数字按一个字符计算,一个斜杠与任意一个字符按一个字符计 28. 一个C 程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C 语言程序可以实现

C语言基础知识(详细版)

C语言程序的结构认识 用一个简单的c 程序例子,介绍c 语言的基本构成、格式、以及良好的书写风格,使小伙伴对 c 语言有个 初步认识。 例1:计算两个整数之和的c 程序: #include main() { int a,b,sum; /* 定义变量a,b ,sum 为整型变量*/ a=20; /* 把整数20 赋值给整型变量a*/ b=15; /* 把整数15 赋值给整型变量b*/ sum=a+b; /* 把两个数之和赋值给整型变量sum*/ printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); /* 把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c 语言程序都必须包括以下格式: main() { } 这是c 语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main() - 在c 语言中称之为“主函数” ,一个c 程序有且仅有一个main 函数,任何一个c 程序总是从 main 函数开始执行,main 函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main 函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(; ),在c 语言中,我们把以一个分号结尾的一句话叫做一个 c 语 言的语句,分号是语句结束的标志。 5、printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); 通过执行这条c 语言系统提供给我们直接使用的屏幕输出 函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头 (2)不以分号结尾这一行没有分号,所以不是语句,在c 语言中称之为命令行,或者叫做“预编译处理命令” 。 7、程序中以/* 开头并且以*/ 结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。 C程序的生成过程 C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。 源程序的扩展名为.c ,目标程序的扩展名为.obj , 可执行程序的扩展名为.exe 。

第1章 C语言基本知识

第一章C语言基本知识 一、C语言的产生和发展 1、C语言的发展源于人们希望用高级语言编写操作系统。(C-BCPL第二字母)ALGOL60(高级语言)->CPL(硬件支持)-BCPC->B->C->标准C->ANSI C->ISO C 2、语言既具有高级语言特性,又具有低级语言特性-中级语言。 二、C语言的特点 1、语言简明、紧凑、使用方便、灵活。 2、运算符丰富。 3、数据结构丰富,具有现代化语言的各种数据结构。 4、具有结构化的控制语句。 5、语法限制不太严格,程序设计自由度大。 6、C语言允许直接访问物理地址,能实现汇编语言的大部分功能,可以直接对硬件进行操作。 7、生成目标代码质量高,程序执行效率高。 8、用C语言写的程序可移植性好。 三、C程序的基本规则 1、C程序由函数构成。(亦称为函数语言。) 2、C程序中每条语句都用一个分号结尾,分号是C程序语句的必要组成部分,语句最后的分号不能省略。 3、每个C程序都有一个主函数(main()),且只有一个主函数。并且程序是从主函数开始执行的。 4、调用C语言的标准函数通常要在程序开头使用包含命令include,C程序中的命令不用分号结尾。 5、C程序中的变量必须先定义,后使用。 6、C语言以小写字母作为基本书写形式,并且C语言要区分字母的大小写,同一字母的大小写被作为两个不同的字符。 7、C程序中可以用“/*……*/”的形式加注释。 8、C程序书写格式自由,一行内可以写几条语句,一条语句可以写在多行。 9.一个函数包含两个部分: (1)函数的说明部分。包括函数名,函数类型,函数属性,函数参数名等。 如:int max(x,y) int x,y; 函数名后必须跟一对圆括弧,函数参数可以没有,如:main()。 (2)函数体。

c基础知识

闪退的话return 0前一行加system("pause"); 1.数据类型 基本类型数据 整数 整型—int--4 短整型—short int--2 长整型—long int--8 浮点数(实数) 单精度浮点数—float--4 双精度浮点数—double(需要更多的内存)--8 //位数小用单精度,多用双字符 单个字符—char-1 字符串-- 复合类型数 结构体 枚举 共用体 1.变量—内存中的空间具象化为程序 2.变量为什么要初始化 变量初始化就是赋值的意思每次变量都要赋值 3.如何定义变量*(变量不能重复定义) 数据类型变量名;

变量名=要赋的值; 例子 Int i = 3;等价于int i;I = 3; Int i,j;等价于int i;int j; Int i,j = 3;等价于int i;int j;j = 3; Int i = 3,j = 5;等价于int i;int j;I = 3;j = 5; Int i,j;I = j = 5;等价于int i,j;I = 5;j = 5; 4.进制 十进制就是逢十进一 C语言规定8进制前加0 16进制前加0x 5.常量在计算机中地表示 整数 十进制 十六进制前加0x 八进制前加0零 浮点数 传统的写法 float x = 3.2: 科学计数法 float x = 32e-1:e是10的意思 字符

单个字符用’’ ‘a’ 字符串用“” “ab” 6.常量以什么样的二进制代码储存在计算机中的 整数是以补码的形式转化为二进制代码存储在计算机中的实数是以IEE754标准 字符与整数存储方式相同 7.代码规范化 代码要成对的敲,缩进(分级),换行让程序更清晰 程序分为3部分 定义变量 对变量进行操纵 输出值 8.什么是字节 一字节等于8位,硬件上能反馈字节为单位 内存为1g的话可存储1*1024*1024*1024=1*2^30字节1k=1024字节 1m=1024k 1g=1024m 9.不同数据之间相互赋值

C语言基础知识归纳

C语言基础知识 1.每个C程序有且只有一个主函数main(),且程序必须从main() 函数开始执行,并在main()函数中结束。 2.在C语言中,用e来表示科学计数法时,规定在e的前面必 须有数字,后面必须为整数。 3.用单引号括起来的一个字符常量只能存放一个字符;C语言中 没有字符串变量,只能用字符数组来存储字符串。 4.外部变量在编译时由系统分配永久的内存空间,所以外部变 量的类型不是自动存储类别。 5.在一个函数内的复合语句中定义的变量,只能在这个复合语 句范围内有效。 6.用sizeof(int)计算int类型数据的字节数。 7.C语言运行时,首先系统检查语法的正误,再运行程序的语法; C语言中,可以在一个函数中嵌套一个函数,但是不能在一个函数中定义一个函数;只有在函数外部定义的函数才是外部函数;C语言的子程序有过程和函数两种。 8.预处理命令行的位置没有规定,只是习惯放在前面;在源文 件中的可以有多条预处理命令,但一行只能写一条;宏名的大写只是习惯性的表示;宏替换不仅不占用运行时间还不分配内存空间。 9.feof函数的作用是检查文件是否结束,当结束时返回的 值为非零,否则为零。

10.当定义了数组后,在给其赋值时,不能直接把字符串赋给数 组名。 11.在赋值表达式中,赋值运算符“=”右侧不能为表达式;在 求余运算符中的两侧都必须为整型;在强制类型转换时,类型名应用括号括起来。 12.静态局部变量,只有当程序结束后,其值才释放。 13.当调用函数时,实参是一个数组名,则向函数传送的是数组 每一个元素的地址。 14.算法的特点为有零个或多个输入,有一个或多个输出,当相 同的输入时,其结果相同;算法正确的程序最终一定会结束。 15.在C语言中,预处理命令行都以“#”开头;当需要时才用 #include;预处理的作用就是实现宏定义和条件编译。 16.当数组元素的下标超出了定义的下标范围时,系统不给出“下 标越界”的字样,而是得出错误的答案,因此在编程时务必检查下标是否越界。 17.共用体变量不能作为函数的参数,也不能使函数带回共用体 变量。 18.指向函数的指针变量的定义形式为:数据类型(*指针变量) ();,因此其为指向函数的指针变量。 19.用C语言编写的代码程序是源程序,只有通过编译、连接才 能进行。 20.在说明为static时,其生存期得到延长,而其作用域并没有改

计算机基础知识试题及答案c

培训选拔试题(C卷) 姓名:部门:得分: 注意事项: I.A考试时间为90分钟,闭卷考试。 I.B应考人员在答题前,请将姓名部门等信息认真准确地填写在答题纸上。 I.C应考人员应严格遵守考场纪律,服从监考人员的监督和管理,凡考场舞弊不听劝 阻或警告者,监考人员有权终止其考试资格,没收试卷,以0分处理。 考试结束,应考人员应停止答卷,离开考场。监考人员收卷后,对答卷进行装订、密封,送交有关部门进行评判,试卷、答题纸不得带离考场。 一、填空题(每空2分共40分) (1)指令通常由和组成 答案操作码、操作数地址(地址码) (2)子网掩码255.255.192.0的二进制表示为 答案:11111111 11111111 11000000 00000000 (3)计算机病毒具有破坏性、隐蔽性、____、潜伏性和激发性等主要特点。 答案:传染性 (4)1GB的准确值是MB。 答案1024 MB (5)在IPV6可聚合全球单播地址中,表示接口ID的是位? 答案:256 (6)CPU的____实际上是指运算器进行一次基本运算所能处理的数据位数。 答案:字长 (7)微型计算机中存储数据的最小单位是: 答案:位(bit) (8)封装是在每一层进行的,一般称网络层封装的单元为 答案:数据包 (9)内存中存放的是当前正在执行的和所需的数据 答案:应用程序 (10)在计算机硬件技术指标中,度量存储器空间大小的基本单位是。 答案:字节(Byte)

(11)IP4报头要处理的域有个。 答案:14 (12)作用是可使一个VLAN跨越多个交换机 答案:Trunk ports (13)IS-IS NSAP地址由个字节组成 答案:20 (14)标准访问控制列表只能以作为匹配要素; 答案:源IP地址 (15)网络A采用TCP/IP协议,网络B采用SPX/IPX协议,那么我们可以选择的互联设备应该是 答案:路由器 (16)端口定位技术即适用于PPPoE场景,又适用于DHCP场景。 答案:QinQ (17)假定分配给你一个网络块为200.35.1.0/24,其某一个子网为200.35.1.192/27,该子网的广播地址是 答案:200.35.1.223 (18)交换机通过将帧转发到对应的端口。 答案:MAC地址表 (19)一个VLAN可以看作是一个 答案:广播域 二、选择题(每题2分共20分) 1、对于在三层交换机的VLAN,说法正确的是(D ) A.一个三层交换机划分多个VLAN,在配置VLAN路由接口时不同VLAN路由接口的IP地址是可以配置成一个网段的 B.一台交换机连接两台主机,这两个主机分别在不同的VLAN里,因为VLAN ID不同,所以这两台主机是不能通信的 C.三层交换机的一个VLAN ID有一个对应的MAC地址 D.三层交换机的一个路由接口有一个对应的MAC地址 2、当三层交换机收到一个数据包,从该数据包中取出目的IP地址,利用该IP地址到自己的硬件转发表中去查找下一跳的MAC地址而没有找到时,该如何处理(A ) A.送到CPU,由CPU根据三层路由表查找下一跳 B.丢弃该数据包 C.根据取得的IP地址,向此网段发送ARP请求

学习c语言的必备基础知识.doc

学习C语言的必备基础知识 第一章计算机和数据的存储 第一节了解计算机 很奇怪的一件事,现在的。语言教材,一上来就是变量,表达式,一点也不提计算机原理方面的事,把c语言当作语言,数学来学,只是生硬的列出一些语法规则,学生们难以理解,只好死记硬背,没有把握住本质的东西,也就无法随心所欲,其实c语言是一门非常好学的语言,核心的语法规则是非常少的,而旦都是和计算机息息相关,所以必须要学习好计算机的一些基础,掌握好计算机的基础知识对学习C语言至关重要,对将来其它语言的编程都极其有益,C语言还有一个优点,就是写法非常简洁明了,和c++, java, C#, javascript等语言有着非常相似的书写方式,所以学好C语言,可以轻松的过渡到大量其它编程语言。讲完C以后,将陆续推出java ,C#, C++, javascript, ruby, python等,不过都是在此教程的基础之上进行,所以C语言乃基础之基础,想要学编程,强烈建议从C语言开始。下面开始了解计算机。 按照冯诺依曼的理论,计算机含有5个部分,运算器、控制器、存储器、输入和输出设备。现在我们通常把运算器、控制器和在一起,称为CPU(中央处理器),存储器就是我们说的内存和硬盘,输入设备就是鼠标,键盘等,输出设备主要是显示器、打印机、绘图仪等。 其中CPU和内存最关键,CPU是执行指令的部件,内存是一些连续的存储单元,用来存储指令和数据,每个单元可以存8位二进制数,也称为1个字节,计算机里存储器都是以字节为单位的,在描述网络速度的时候通常以位为单位,大家注意区别。CPU要执行的指令就存在内存里,CPU按照指定顺序连续地执行内存中的指令,这就是冯诺依曼体系的基本工作原理。 什么是指令,就是一些二进制的数,比如10010001是一条加法指令, 10011011是一条存储指令,CPU遇见不同的指令就会完成不同的操作,CPU能够执行的指令是生产厂家生产时就设计好的,比如8086 基本指令有70条,那么CPU就只认识这70条指令,CPU在不断升级, 除了运行速度加快还会增加一些新的指令,CPU的指令分三大类:传

C语言基础知识总复习(考前突击专用)

C语言基础知识总复习(考前突击专用) 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。 第五节:整数与实数 1)C语言只有八、十、十六进制,没有二进制。但是运行时候,所有的进制都要转换成二进制来进行处理。(考过两次) a、C语言中的八进制规定要以0开头。018的数值是非法的,八进制是没有8的,逢8进1。 b、C语言中的十六进制规定要以0x开头。 2)小数的合法写法:C语言小数点两边有一个是零的话,可以不用写。 1.0在C语言中可写成1. 0.1在C语言中可以写成.1。 3)实型数据的合法形式:

第1章 C语言基础知识

第一章 C语言基础知识 一、选择题 1.算法具有五个特性,以下选项中不属于算法特性的是______。 A)有穷性B)简洁性C)可行性D)确定性 【答案】B 【解析】本题考查的是算法的特性。一个算法应当具有以下5个特性:有穷性;确定性;可行性;有零个或多个输入:由一个或多个输出。简洁性不属于这5个特性,所以本题应该选择B。 2.以下叙述中错误的是 A)用户所定义的标识符允许使用关键字 B)用户所定义的标识符应尽量做到“见名知意” C)用户所定义的标识符必须以字母或下划线开头 D)用户定义的标识符中,大、小写字母代表不同标识 【答案】A 【解析】本题考查C语言中标识符的概念。用用户标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,并且不能与C语言关键字相同。所以本题应该选择A。 3. 以下4组用户定义标识符中,全部合法的一组是() A)_main B)If C)txt D)int enclude -max REAL k_2 sin turbo 3COM _001 【答案】A 【解析】本题考核的知识点是C语言中的标识符命名规则。标识符是以字母或下划线开头,由字母、数字或下划线组成的字符序列(例如,-max含非法字符-),并且用户标识符不能与C语言中的32个关键字同名(例如,int是关键字,不是合法的用户标识符)。选项B中-max不是字母、数字或下划线组成的字符序列,故选项B不正确;选项C中3COM 不是由字母或下划线开头,故选项c不正确;选项D中int为C语言中的关键字,故选项D不正确;选项A中全部为合法的标识符,所以,4个选项中选项A符合题意。 4. 以下选项中,合法的一组c语言数值常量是( ) A)028 B)12. C).177 D)0x8a .5e-3 0Xa23 4e1.5 10,000 -0xf 4.5e0 0abc 3.e5 【答案】B 【解析】本题考查的知识点是:数值常量。 数值常量分为整型和实型两类。其中,整型有十进制、八进制和十六进制三种表示法;实型有小数形式和指数形式两种表示法。十进制和书面使用的数据表示一样;八进制是以数字O开头,后面跟由0~7组成的八进制数组成;十六进制是以0x(或OX)开头,后面跟由0~9与A~F(或a~f)组成的十六进制数组成;小数形式由数字和小数点组成,其整数部分或小数部分如果为0可省略,但不能同时省略。指数形式由小数形式或十进制形式开头,后面跟e(或E),再跟一个十进制整数组成。选项A中,028是八进制形式,但后面跟的8不在0~7之内,所以非法;选项c中,4e1.5是指数形式,但e后面所跟的不是整数,所以非法;选项D中,10,000中不能有?,?,所以非法。故本题应该选择B。 5. 以下叙述中正确的是() A)C语言的源程序不必通过编译就可以直接运行 B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

常见c语言基础知识

第一篇 C语言程序设计 习题二 一、简答题 1.常量有哪几类?如何使用u、l、f对它们进行修饰? 2.字符常量与字符串常量之间的区别是什么? 3.运算符&&与&、||与|、!与~之间有什么不同? 4.表达式在计算时,其类型如何确定? 5.C语言中,如何实现类型的转换? 二、选择题 1.以下字符串可以为用户定义的标示符的是。 A. short B. LINE 5 C. next day D. _my 2.设c是字符变量,则以下表达式正确的是。 A. c=1234 B. c='c' C. c=" c" D. c="abcd" 3.类型修饰符unsinged不能修饰下面的类型。 A. int B. char C. long D. double 4.下列正确的字符常量是。 A. ' \234' B. ' \af' C. " a" D. ' a' 5.下列不正确的字符串常量是。 A. " hello\n" B. "world\0" C. " hello\tworld\n" D. " world" 6.表达式12+’b’-45.5f的结果是类型。 A. int B.char C. float D. double 7.下面4个选项中,均是C语言关键字的是。

A. enum, switch, float, define B. for, int, default, scanf C. switch, union, auto, type D. unsigned, double, case , if 8.以下选项中不正确的整型常量是_____。 A. 12L B. -10 C. 1,900 D. 123U 9.以下选项中不正确的实型常量是 。 A. 0.23E B. 2.3e-1 C. 1E 3.2 D. 2.3e0 10.表达式______的值是0。 A .3%5 B. 3/5.0 C.3/5 D.3<5 11.若变量a 、b 、c 已正确赋值,不符合C 语言语法的表达式是 。 A. a=a/7 B. a=7+b-c, a++ C. a+b=c+b D. (int)(12.3%3) 12.整型变量x=1,y=3,经下列计算后,x 的值不等于6的是 。 A. x=(x+2,x*2) B. x=x>y?x*2:y*2 C. x=y/2*6 D. x=(y++)+(y--) 13.有如下定义: int i=1; long w=5; double x=3.4,y; 则以下符合C 语言语法的表达式是 。 A. i+=i*=i=34; B. w=i*3=12 C. i=x%3 D. y=double(i); 14.表示关系式z y x ≥≥的C 语言表达式为 。

第2章 C语言基础知识

第二章C语言基础知识 2.1 常量和变量 【学习目标】 (1)掌握常用标识符的命名规则 (2)掌握常量和变量的定义与引用方法 实例5 常量和变量——输出常量与变量的值 【实例任务】 定义不同类型的几个变量,然后对应输出相应的常量值和变量值。程序的运行结果如图2-1所示。 图2-1 程序运行结果

【相关知识】 1.标识符 标识符是用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等,其基本构成元素源自字符集。C语言的字符集包括英文字母、数字字符和一些特殊字符。用这些基本元素单位命名标识符时,一定要遵循以下四个原则: (1)必须由字母(a~z,A~Z)或下画线(_)开头; (2)由字母、数字或下画线组成的长度不超过32个字符; (3)标识符中的大小写字母有区别; (4)不能与关键字同名。 下面是不合法的标识符和变量名: M.d.,John,y 123,#33,3d64 2.常量 常量是数据在内存中一种表示形式,在程序运行过程中值永远保持不变,常用的类型有5种,包括整型常量、实型常量、字符型常量、字符串常量、符号常量。 整型常量就是整型,常用的表示形式有十进制,如10、30等。八进制常量表示形式要以0开头,如013、012等。十六进制常量表示形式要以0x或0X开头,如0x13、0X12等。 实型常量就是指的是一些带小数点的数,包括指数。如3.14、-1.2、1.2e6、10.5E8等。其中,1.2e6表示数学上1.2×106,10.5E8表示数学上10.5×108。 字符型常量是单引号引起来的单个字符,这些字符为ASCII字符,对应各有其ASCII 码值。字符常量包括一些转义字符,字符形式和输出结果对照如表2-1所示。 表2-1 转义字符 字符串常量是用双引号引起来的0个或多个字符。字符串常量形式给出的是字符串在存

相关文档
最新文档