C 概念基础讲解1 下载本文

我们的目的:

建立程序化思维,培养数学问题的计算机求解能力,提高信息技术应用水平,增强自主学习与团队协作学习能力,培养能在青少年信息学奥林匹克竞赛中取得优异成绩的选手。

二、编程训练以不影响文化课学习为前提,需取得父母的支持。

我们这项活动需要长期的兴趣与坚持。要在较长的时间内定时参与学习。所以需要你做到两点: 第一,不影响文化课学习,一定要在学有余力的前提下,把多余的时间用来进行本课程的学习。

第二,取得父母的理解与支持。我们这项活动,是对你的文化课学习、信息技术能力、甚至未来的职业定向都是有帮助的,所以需要你向父母解释清楚:使用电脑是整型 int(-32768—32768)、long(-2147483648—2147483648)

浮点型 float(单精度3.4E-38—3.4E38) double(双精度1.7E-308—1.7 E308) 字符型 char(-128—127) 字符串型 string 布尔型 bool 例:

int a,b;//定义两个整数变量

?//?是注释说明,后面的内容不会被计算机运行 double a,b;// 定义两个实数变量(带小数那种) char a,b;//定义两个字符型变量(用单引号括起来的一个数据,如’a’,’1’,’/’)

string a;// 定义一个字符串型变量(用双引号括起来在编写程序,是在学习,而不是在玩,在打游戏。 程序学习平台 code.org

C++程序设计基础讲解 目录:

第一章 程序的基本概念和语法规则 一、概念

二、程序的四个基本组成部分 三、程序的编写与运行 附录

一、需记忆的英语 二、常见调试错误信息 三、文件的处理

第二章 程序的基本结构 一、顺序结构 二、选择结构 三、循环结构

简单算法与常用技巧 练习

一、看程序写结果 二、专项编程练习 三、综合编程练习

第一节 程序的基本概念与语法规则

一、概念

程序是为了解决某一特定问题,用某一种计算机语言编写的指令序列。

程序设计=算法+程序语言

二、程序的基本组成部分

C++的程序由函数组成,每个程序需要有主函数。 函数内是函数体部分,一个程序的函数体通常可分成常变量说明部分、输入部分、计算部分、输出部分四块儿。 程序的必备部分,也是必背部分: #include using namespace std; int main() { }

1、常变量说明部分

1)变量:在程序中可以发生变化的量 变量定义格式:

数据类型 变量名1,变量名2,…,变量名n; 基本数据类型:

的一串字符,如?hello, Tom.?)

bool a; // 定义一个布尔型变量(表示逻辑真和逻辑假,只有两个值,1表示真,0表示假)

2)常量:在程序中不可以发生变化的量 常量定义格式:

const 数据类型 常量名; 例:const int a=30;

3)变量和常量的命名规则:

以字母开头,后面由字母、数字或下划线组成,区分大小写(即A和a代表的是两个不同的量)

C++规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。下面列出的是合法的标识符,也是合法的变量名:

sum, average, total, day, month, Student_name, tan, BASIC, li_ling

在C++中,大写字母和小写字母被认为是两个不同的字符。因此,sum和SUM是两个不同的变量名。

在C++语言中,要求对所有用到的变量作强制定义,也就是必须?先定义,后使用?

2、输入部分 输入语句格式:

cin>>变量1>>变量2>>…>>变量名n;

cin语句的执行过程:程序会等待用户从键盘输入对应数目的数据,用户输入完数据并回车后,cin从输入流中取得相应的数据并依次传送给其后的变量。

例:cin>>a>>b;//从键盘读入两个值顺序给变量a和变量b

例1.1 输出一行字符: ?This is a C++ program.?。 程序如下(?//?符号引导的为注释,其后内容是写给人看的,机器不会编译执行其中的内容):

#include //包含头文件iostream,是i-o-stream 3个词的组合,即输入输出流的意思,含cin,cout等语句

using namespace std; //使用命名空间std,C++标准库(即#include命令行)中的类和函数是在命名空间std中声明

int main( ) //用main代表?主函数?的名字。C++程序必须有一个main函数。main前面的int是声明函数类型为整型

{ //函数体是由大括号{ }括起来的

cout<<″This is a C++ program.″; //cout为c-out两个词组合,<<为插入运算符,合起来为输出语句

1

return 0; //向操作系统返回一个零值。如果程序不能正常执行,则会自动向操作系统返回一个非零值,一般为-1。 }

在运行时会在屏幕上输出以下一行信息: This is a C++ program.

例2.1 将字符赋给整型变量。 #include using namespace std; int main( )

{ int i,j; //i和j是整型变量

i=′A′; //将一个字符常量赋给整型变量i

j=′B′; //将一个字符常量赋给整型变量j

cout<

执行时输出 65 66

字符数据在计算机中是以ASCII码存储的,它的存储形式就与整数的存储形式类似。这样,在C++中字符型数据和整型数据之间就可以通用。一个字符数据可以赋给一个整型变量,反之,一个整型数据也可以赋给一个字符变量。也可以对字符数据进行算术运算,此时相当于对它们的ASCII码进行算术运算。’A’的ASCII码为65,’B’为66。

可以看到:在一定条件下,字符型数据和整型数据是可以通用的。但是应注意字符数据只占一个字节,它只能存放0~255范围内的整数。

例2.2 字符数据与整数进行算术运算。下面程序的作用是将小写字母转换为大写字母。 #include using namespace std; int main( )

{char c1,c2; //定义c1,c2为字符型数据,ASCII码表中’A’~’Z’排在’a’~’z’的前面,中间还间隔了六个字符 c1=′a′; c2=′b′;

c1=c1-32; //减去32后刚好得到对应的小写字母 c2=c2-32;

cout<

运行结果为 A B

注意:″a″和′a′代表不同的含义,″a″是字符串常量,′a′ 是字符常量。″a″占两个字节,编译系统会在字符串最后自动加一个′\0′作为字符串结束标志。

3、计算部分 1)赋值语句格式

赋值语句:变量名 = 表达式; 注意:

○1?=?左边必须是一个变量名。

2若? = ? 两边变量类型不同,在赋值时要进行类型转换,转换原则:根据左边变量的类型转换。 例: a=5; a=a+1;

第一句是将5赋给变量a

第二句是将a的值加1后赋给变量a 2)算术表达式

1算术运算符和算术表达式 算术运算符:

+ - *(乘) /(除) %(取余) 使用注意:

(1) 除%仅用整形外,其余可用于整型和浮点型。+

和-还可用于字符型。

(2) 整型数相处结果为一个整商。 (3) 字符型可作加减运算。 (4) 运算符的优先级。

算术表达式:

用算术运算符连接起来的式子是算术表达式 两个整数相除结果为整数: 8/4=2 8/5=1 两个浮点数相除结果为浮点数: 8.0/5.0=1.6

整数才可求余,余数的符号与左边数的符号相同。 8%4=0 8%5=3 优先级与结合性

() * / % + - 表达式的书写格式:

数学表达式 合法的C++表达式 a×(-b) a*(-b) ab-cd a*b-c*d 2(b+y/c)+8 2*(b+y/c)+8 x2

+3x+2 x*x+3*x+2

求平方根 sqrt(b*b-4*a*c) 注意:

表达式中的括号只能是()

表达式中的算术运算符不能够省略

例如,下面是一个合法的C++算术表达式: a*b/c-1.5+′a′

在表达式中常遇到不同类型数据之间进行运算,如 10+′a′+1.5-8765.1234*′b′

在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换时如下图,由低到高转换。

如10+′a′+1.5,先运算10+′a′,’a’转换为整型,值为97,结果为107,107+1.5,转换为实型double,108.5

在C和C++中,常在表达式中使用自增(++)和自减(--)运算符,他们的作用是使变量的值增1或减1,如 ++i(在使用i之前,先使i的值加1,如果i的原值为

2

3,则执行j=++i后,j的值为4) --i (在使用i之前,先使i的值减1,如果i的原值为3,则执行j=--i后,j的值为2) i++ (在使用i之后,使i的值加1,如果i的原值为3,则执行j=i++后,j的值为3,然后i变为4)

i--(在使用i之后,使i的值减1,如果i的原值为3,则执行j=i--后,j的值为3,然后i变为2)

++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。

正确地使用++和--,可以使程序简洁、清晰、高效。 ++i:i自增1后再参与其它运算(先增后用)。 --i: i自减1后再参与其它运算(先减后用)。 i++:i先参与运算后,i的值再自增1(先用后增)。 i--: i先参与运算后,i的值再自减1(先用后减)。 例:输入两个整数,输出它们的和。 样例输入:3 6 样例输出:9

#include using namespace std; int main(){ int a,b,c; cin>>a>>b;

c=a+b;

cout << c <

4、关系运算符 !)种类:6个关系运算符:<、>、<=、>=、==、!=。 前4个运算符优先级高于后2个。

2)使用注意:关系运算符组成的表达式的值是逻辑值。真为1,假为0.

相等运算符是==,不要写成= 5、输出部分

1)输出语句格式:

cout<<输出项1<<输出项2<<…<<输出项n; ○

1?输出项?可以是变量、常量或表达式。 ○

2由双引号引起来的内容,如不是特殊规定,则是属于字符串类型,引号里面的内容会原样输出。 ○3在cout中,用endl实现输出数据换行 例: a=5; b=6;

cout<<5+6<

前面两句是赋值语句,给变量a和b赋值 第3句有3个输出项,输出11,空格和30

第4句有2个输出项,输出a*b的值30后输出换行符号

2)指定位数输出

○1指定浮点数输出位数 例:

#include //调用格式库 double a=3.14159;

cout<

setprecision是设置浮点数从左起第一个不为零的数位开始计算到右边最后一个不为零的数位为止的有效数位的位数的最大值,并进行四舍五入。 ○2指定小数位数的输出

#include //调用格式库

cout<

6、再说函数体的框架

一般可分成常变量说明部分、输入部分、计算部分、输出部分

本题用a来表示第一个整数,b来表示第二个整数,c来存储两个整数的和 cin>>a>>b;是输入部分

c=a+b;是计算部分(除了赋值语句还可能有分支和循环语句)

cout << c <

1) 函数的四部分框架不是绝对的,只是为了初学者能够清晰地书写程序。实际的程序可以灵活变通。 2) c++函数体的每一条语句后要加上?;?号

3)system(?pause?);本句的作用是暂停,往往用于观察程序运行的结果

4)return 0; 向主函数返回一个0值,程序一般会向调用函数返回数据,实际编程的时候在主函数中不写该句也不会有问题(在正式比赛时必须写)。 例1.2 求a和b两个数之和。 可以写出以下程序:

// 求两数之和 (本行是注释行) #include //预处理命令 using namespace std; //使用命名空间std

int main( ) //主函数首部 { //函数体开始 int a,b,sum; //定义变量,定义a,b,sum为整型变量

cin>>a>>b; //输入语句,cin为c-in的组合,>>为提取运算符,运行时等待使用者输入两个数据,分别给a和b

sum=a+b; //赋值语句 cout<<″a+b=″<

return 0; //如程序正常结束,向操作系统返回一个零值

} //函数结束 如果在运行时从键盘输入 123 456↙ 则输出为 a+b=579

三、程序的编写与运行

程序的编写可以在记事本等文本编辑软件中进行,但一般用专门的IDE(集成开发环境)去进行编辑、编译、运行和调试。

Dev-Cpp是一种Windows下的编写C/C++程序的IDE,bashu.cn网站左下方?资源下载?处点击?更多?,下方的常用软件处有devC++软件可下载。

3

安装后选择Chinese转成中文界面。 1)新建程序文件

上方工具栏的第三个按钮是新建源代码按钮,单击就可新建一个程序文件。 2)常用操作与设置

工具菜单下编辑器属性面板中可进行一些设置提高编辑效率。

?基本?下将高亮匹配括号打上勾 使用语法加亮打上勾 ?显示?下将行号打上勾

编辑器的字体大小可选到14以上

?代码?下方有一项缺省源,单击后将下面这段代码输入后确定,以后新建程序文件时这段代码会自动出现,

不借用第三个变量的方法 cin>>a>>b;

a=a+b; b=a-b; a=a-b;

2、指定小数位数的输出

#include //调用格式库

cout<

3、数字的分离

节省时间

#include using namespace std; int main(){

system(?pause?); return 0; }

搜索菜单下有替换功能,批量修改时比较有用

一些有用的快捷键:Ctrl+N(新建文件),Ctrl+Y(删除一行),Ctrl+R(查找替换)

程序编写完毕后按F9键可以编译保存并运行。

第二节 程序的基本结构

程序有三种基本结构:顺序、分支和循环,程序都可以用这三种结构来表示 一、顺序结构

函数体的每一句会顺序执行。

基本思路是:把需要计算机完成的工作分成若干个步骤,然后依次让计算机执行。注意这里的?依次?二字——步骤之间是有先后顺序的。这部分的重点在于计算。

例:鸡兔同笼

已知鸡和兔的总数量为n,总腿数为m。输入n和m,依次输出鸡的数目和兔的数目。 样例输入:14 32 样例输出:12 2 【分析】

将总只数乘以4后,每只鸡的腿被多算了2只,减去总腿数除以2后得到的就是鸡的只数,用a来表示鸡的只数的话则a=(4*n-m)/2,程序如下: int main(){

int a, b, n, m; cin>>n>>m; a = (4*n-m)/2; b = n-a;

cout<

单纯顺序结构的函数体可以写成常变量说明部分、输入部分、赋值部分、输出部分

简单算法与常用技巧

1、两个数的值的交换 借用第三个变量来实现 cin>>a>>b; c=a;a=b;b=c;

输入一个四位数,将各个位上的数分离出来,当然如果用字符串来处理也行 cin>>a; b=a; c=a/10; d=a/100; e=a/1000;

练习(顺序)

一、选择

1、下列关于标示符的描述中,错误的是

A.标示符是由字母、下划线和数字组成的字符序列,并且应以字母和下划线开头。

B.标示符中字符个数是不受限制的。 C.标示符中大小写字母是不加区别的。 D.用户不能使用关键字做标示符

2、下列各种数据中,数据长度最长的是: A.char B.long C.double D.float

3、已知int a=1,b=2;下列表达式中非法的是 A.a+=b B.b%a C.2*a=b D.a=b—

4、下列给出的字符串常量,非法的是

A.?? B.?a8? C.?m??n? D.?99?

二、看程序写结果。

int main(){//题1 int a,b,c; cin>>a>>b; c=a*a-b*b;

cout<

输入:5 4

int main(){//题2

int a,b,c; cin>>a>>b; c=a;a=b;

b=c;cout<

输入:5 4

int main(){//题3 int a; cin>>a;

4