第三章 C++总结之程序设计初步

一、算法的概念

(二)算法的表示

1、自然语言

2、流程图

3、伪代码

4、用计算机语言表示算法

二、C++的程序结构和C++语句

1、每一个程序单位由以下3个部分组成:

(1)预处理指令

如#include指令和#define指令

(2)全局声明

在函数外对数据类型、函数以及变量的声明和定义

(3)函数

包括函数首部和函数体,在函数体中可以包含声明语句和执行语句

2、C++语句可以分为以下4种:

(1)声明语句

在C++中,对变量(以及其他对象)的定义被认为是一条语句,并且可以出现在函数中的任何行,既可以放在其他程序语句可以出现的地方,也可放在函数之外。

(2)执行语句

1)控制语句

  • if()~else~
  • for()~
  • while()~
  • do~while()
  • continue
  • break
  • switch
  • goto
  • return

括号()表示其中包括一个判断条件,~表示内嵌的语句。

2)函数和流对象调用语句

sort(x,y,z);

cout<<x<<endl;

3)表达式语句

由一个表达式加一个分号构成一个语句。最典型的是由赋值表达式构成一个赋值语句。

i=i+1    //是一个赋值表达式,末尾没有分号

i=i+1;   //是一个赋值语句,末尾有分号

任何表达式的最后加一个分号都可以成为一个语句,一个语句必须在最后出现分号,分号是语句中不可缺少的一部分。

(3)空语句

下面是一个空语句:

有时用来做转向点,或循环语句中的循环体。

(4)复合语句

可以用{ }把一些语句括起来成为复合语句。如下面是一个复合语句

{ z=x+y;

  if(z>100) z=z-100;

  cout<<z;}

、C++的输入与输出

(一)在标准输入流与输出流中使用控制符

如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件。

(二)用getchar和putchar函数进行字符的输入和输出

1、putchar函数

作用是向终端输出一个字符。例如  putchar(c);

putchar(10)中的10是换行符的ASCII码,putchar(10)输出一个换行符,作用与putchar('\n')相同。

2、getchar函数

1)作用是从终端输入一个字符。

2)getchar函数没有参数,其一般形式为 getchar(), 函数的值就是从输入设备得到的字符。

3)注意,getchar()只能接收一个字符,getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量,作为表达式的一部分。

int main()
{
	char c;
	c = getchar();
	putchar(c+ 32);putchar('\n');
	return 0;
}

等价于:

int main()
{
	char c;
	cout << (c = getchar() + 32);
	return 0;
}

 等价于:

int main()
{
        char c;
	putchar(getchar() + 32);putchar('\n');
	return 0;
}

四、编写顺序结构的程序

以上关系可以表示如下:

用关系运算符将两个表达式连接起来的式子,称关系表达式。

关系表达式的一般形式可以表示为: 表达式 关系运算符 表达式

其中表达式可以是 算术表达式、关系表达式、逻辑表达式、赋值表达式、字符表达式。

算术表达式的值:是一个数值;

赋值表达式的值:赋予变量的值;

关系表达式的值:是一个逻辑值,即“真”或“假”。例如,关系表达式“5==3"的值为”假“,”5>=0“的值为”真“。

在C和C++中都用数值1代表“真”,用0代表“假”。如:

d=a>b----------------d为1

f=a>b>c-------------f为0(先执行“a>b"得值为1,再执行关系运算”1>c",得值0,赋给f)

五、(一)逻辑常量和逻辑变量

逻辑性数据可以与数值型数据进行算术运算,若a已定义为int型,其初值为0,逻辑型变量flag的值为true,如果有以下语句:

a=a+flag+true;-----------------------------执行后a为2

如果将一个非零的整数赋给逻辑性变量,则按“真”处理。

如: flag=123;

        cout<<flag--------------------------输出数值为1

(二)逻辑运算和逻辑表达式

C++提供3种逻辑运算符:

  • && 逻辑与
  • ||逻辑或
  • !逻辑非

&&和||是双目运算符,它要求两侧各有一个运算量;

!是一目运算符,只要求在一侧有一个运算量;

一个逻辑量,其值是0就认为是“假”,如果其值是非0就认为是“真”。

如:a=4,b=5,!a||b的值为1.

六、选择结构和if语句

(一)if语句的形式

1、if语句的一般形式为:

if(表达式)语句1

[else语句2]

(1)if(表达式)语句

例如: if(x>y)cout<<x<<endl;

(2)if(表达式)语句1 else语句2

例如:  if(x>y)cout<<x;

else cout<<y;

(3)if(表达式1)语句1

  else if(表达式2)语句2

  else if(表达式3)语句3

  else                       语句n

(二)if语句的嵌套

(三)、条件运算符和条件表达式

条件运算符要求有3个操作对象,称为三目运算符,是C++中唯一的一个三目运算符。

条件表达式的一般形式为:

表达式1?表达式2:表达式3

条件运算符的执行顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0,则求解表达式3,表达式3的值就是整个条件表达式的值。

(四)多分支选择结构与switch语句

switch语句是分支选择语句,用来实现多分支选择结构。

它的一般形式如下:

switch(表达式)

{case常量表达式1:语句1

 case常量表达式2:语句2

 ...

 case常量表达式n:语句n

default                   : 语句n+1

}

说明:

(1)switch后面括号内的“表达式”,可以是数值类型(包括字符类型)数据

(2)当switch表达式的值与某一case子句的常量表达式值相匹配时,就执行case子句中的内嵌语句。若所有都不匹配,就执行default子句的内嵌语句。

(3)每一case表达式的值必须互不相同,否则会发生互相矛盾现象

(4)各个case和default的出现次序不影响执行结果。例如,可以先出现“default:..."再出现”case'D':...",然后是“case'A':..."。

(5)执行完一个case子句后,使流程跳出switch结构,即终止switch语句的执行,可以用break语句来达到此目的。

(6)多个case可以共用一组执行语句。例如:

...

case'A':

case'B':

case'C':cout<<">60\n";break;

...

#include "pch.h"
#include <iostream>
using namespace std;
int main()
{
	float score;
	char grade;
	cout << "enter your score:";
	cin >> score;
	while (score > 100 || score < 0) {
		cout << "error!";
	}
	switch (int(score/10)){
	case 10:
	case 9:grade = 'A';break;
	case 8:grade = 'B';break;
	case 7:grade = 'C';break;
	case 6:grade = 'D';break;
	default:grade = 'E';
}
	cout << "grade is" << grade<<endl;
}

(五)编写选择结构的程序

编写一个程序判断是否是闰年(闰年的条件是符合下面二者之一:1、能被4整除,但不能被100整除2、能被100整除,又能被400整除)

#include"pch.h"
#include <iostream>
#include<cmath>
#include<iomanip>
using namespace std;
int main()
{
	int year;
	bool leap;
	cin >> year;
	if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))leap = true;
	else leap = false;
	if (leap)
		cout << year << "is";
	else
		cout << year << "is not";
	cout << " a leap year";
   return 0;
}

七、循环结构和循环语句

(一)用while语句构成循环

while语句的一般形式:

while(表达式)语句

作用:当指定条件为真(表达式为非0)时,执行while语句中的内嵌语句(即循环体)。

特点:先判断表达式,后执行语句。

注意:(1)循环体如果包含一个以上语句,应该用花括号括起来以复合语句形式出现

           (2)在循环体中应有使循环趋向于结束的语句。

(二)用do-while语句构成循环

do-while的一般形式:

do

       语句 

while(表达式);

执行过程:先执行一次指定的语句(即循环体),然后判别表达式,当表达式的值为非零(“真”)时,返回重新执行循环体语句,如此反复直到表达式的值等于0为止,此时循环结束。

(三)用for语句构成循环

一般格式:

for(循环变量赋初值;循环条件;循环变量增量)语句

其中"语句"就是循环体,可以是一个简单的语句,也可以是一个用{}包起来的复合语句。

说明:

(1)for语句的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值,注意其后的分号不能省略。

(2)如果表达式2省略,即不判断循环条件,循环将无终止地进行下去,也就是认为表达式2始终为真。

(3)表达式3也可以省略,但此时程序设计者应另外保证循环能正常结束。

例如:for(i=1;i<=100;)

          {sum=sum+i;

           i++;}

(4)可以省略表达式1和表达式3,只有表达式2,即只给循环条件。

例如:

for(;i<=100;)

{sum=sum+i;

i++;}

相当于

while(i<=100)

{sum=sum+i;

i++;}

(四)循环的嵌套

下面六种为合法形式:

(五)提前结束循环(break语句和continue语句)

1、break

在switch结构中,break语句可以跳出并继续执行switch语句下面的一个语句。

在循环体中,其作用为使流程从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。

2、continue

作用:结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。

3、continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

(六)编写循环结构的程序

课后题:系统如何判断一个量的“真”和“假”?

逻辑表达式:数值1代表“真”,数值0代表“假”;

逻辑量:数值0代表“假”,非0代表"真"

猜你喜欢

转载自blog.csdn.net/gabby____/article/details/85805826