C++第三章 程序设计初步.docx

上传人:b****5 文档编号:29745725 上传时间:2023-07-26 格式:DOCX 页数:25 大小:110.34KB
下载 相关 举报
C++第三章 程序设计初步.docx_第1页
第1页 / 共25页
C++第三章 程序设计初步.docx_第2页
第2页 / 共25页
C++第三章 程序设计初步.docx_第3页
第3页 / 共25页
C++第三章 程序设计初步.docx_第4页
第4页 / 共25页
C++第三章 程序设计初步.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C++第三章 程序设计初步.docx

《C++第三章 程序设计初步.docx》由会员分享,可在线阅读,更多相关《C++第三章 程序设计初步.docx(25页珍藏版)》请在冰豆网上搜索。

C++第三章 程序设计初步.docx

C++第三章程序设计初步

第3章程序设计初步

算法:

数据结构+算法=程序

1、算法:

是对特定问题求解步骤的一种描述

2、数据结构:

数据的组织形式及其相互关系

算法的表示:

1、自然语言2、流程图3、伪代码4、计算机语言

C++程序结构:

组成:

预处理命令,全局声明,函数。

变量:

全局变量,局部变量。

例:

#include//预处理命令

usingnamespacestd:

//在函数之外的全局声明

inta=3;//在函数之外的全局声明

Intmain()//函数首部

{floatb;//函数内部的声明

b=4.5;//执行语句

cout<

return0;//执行语句

}

C++语句:

分类:

声明语句,执行语句,空语句,复合语句

1.声明语句:

如inta,b;

2.执行语句:

控制语句,函数与流对象调用语句,表达式语句

①.控制语句:

(1).分支语句:

条件选择:

if()~else~;

多分枝选择:

switch

(2).循环语句:

for()~,while()~,do~while()。

(3).辅助控制语句:

continue(结束本次循环语句)goto(转向语句)

break(中止执行switch或循环语句)return(从函数返回语句)

②.函数与流对象调用语句

sort(x,y,z);//假设已定义了sort函数,他有三个参数

cout<

③.表达式语句:

如i=i+1:

3.空语句:

(什么也不做)

4.复合语句:

用{}把一些语句括起来。

{z=x+y;

if(z<100)z=z+100;

cout<

}

注:

1.每个语句最后必须加分号:

2.“}”后不加分号

程序的三种基本结构:

顺序结构,选择结构,循环结构

1.顺序结构

 

2.选择结构

(1)二分支选择结构

(2)多分枝选择结构

 

3.

循环结构

(1).当型循环结构

 

(2).直到型循环结构

 

顺序程序设计

赋值操作:

1.赋值语句格式:

赋值表达式;

2.赋值语句与赋值表达式的区别:

赋值表达式可以包含在其它表达式中,而赋值语句不可。

如:

if((a=b)>0)t=a;不可写为:

if((a=b;)>0)t=a;

C++的输入输出:

首加#include

概念:

cout——输出流对象cin——输入流对象

<<——流插入运算符>>——流提取运算符

Cout语句格式:

cout<<表达式1<<表达式2<<...<<表达式n;

cin语句格式:

cin>>变量1>>变量2>>...>>变量n;

一个cout语句可分成若干行(见书P52)

注:

1.使用输入输出时,在程序的开头增加一行:

#include

2.使用控制符:

有时缺省输出格式不能满足要求,这时可以用控制符控制输出的格式,在程序的开头增加一行:

#include

例:

#include

#include

voidmain()

{

cout<

}

3.数学函数控制符:

程序中使用了数学函数如sqrt(),首#include.

4.不能用一个插入运算符”<<”插入多个输入项

如:

cout<

C的输入输出:

首加#include,无I/O语句,I/O操作由函数实现

printf和scanf函数

printf函数

(1)printf函数的一般格式为:

printf(格式控制字符串,输出项1,输出项2,…)

括号中的格式控制字符串和输出项都是函数参数。

printf()函数的功能是将后面的参数按给定的格式输出。

(2).格式控制字符串中有格式说明,也有普通字符。

格式说明由”%”和格式字符组成,如%d,%f等。

它的作用是将输出的数据转换成指定的格式输出。

普通字符按原样输出,如:

#include"stdio.h"

voidmain()

{

inta=10,b=20;

printf("%d,%d",a,b);

}

格式符

(1)%d格式符

用来输出10进制整数,可以有长度修饰。

如:

#include"stdio.h"

voidmain()

{

inta=28,b=38;

longc=123456;

printf("%5d,%5d\n%ld\n",a,b,c);

printf("%3ld\n%7ld\n%d\n",c,c,c);

}

输出结果为:

28,38

123456

123456/n表示换行

123456%5d表示输出宽度为5,%ld表示输出为长整型

123456如果整数的位数多于指定宽度,则按实际位数输出

(2)%o和%x格式符

用来输出8进制、16进制整数。

8进制和16进制都是无符号整数,输出时不带符号。

如:

#include"stdio.h"

voidmain()

{

inta=1200;

printf("%d,%o,%x,%X,%6x\n",a,a,a,a,a);

}

输出结果为:

1200,2260,4b0,4B0,4b0

(3)%u格式符:

用来输出无符号10进制整数。

(4)%c格式符

用来输出一个字符。

如果一个整数,其值在0~255之间,也可以字符方式输出。

它们都可以指定格式宽度。

例如:

charch='a';

inta=65;

printf("%c,%d,%3c\n",ch,ch,ch);

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

输出结果为:

a,97,a

A,65,65

 

(5)%s格式符

用来输出字符串。

可以指定格式宽度,如果字符串长小于指定的宽度时,可以选择左对齐或右对齐。

另外,还可以选择输出字符中的前n个字符。

例如:

printf("%s","Hello\n");

printf("Hello\n");

printf("%3s,%-5.3s,%5.2s\n","Hello","Hello","Hello");

输出结果为:

Hello

Hello

Hello,Hel,He

注:

(1).如果输出的只有一个字符串,可以省略格式参数,因为格式参数本身可以是原样输出的普通字符串。

(2).“%-5.3s”中的负号表示左对齐,如果没有负号,则默认为右对齐。

5表示格式宽度,3表示截取字符串中3个字符。

(6)%f格式符

用来以小数方式输出。

可指定格式宽度,也可以指定小数位数,还可以规定左对齐或右对齐。

如:

floatx=123.456;

doubley=321.654321;

printf("%f,%-7.2f,%10.4f\n",x,x,x);

printf("%lf,%-7.2lf,%10.4lf\n",y,y,y);

输出结果为:

123.456001,123.46,123.4560

321.654321,321.65,321.6543

注:

以%f格式输出时,默认的小数位数是6位。

%-7.2f表示左对齐,总长度为7位,小数位数为2位。

注意:

1.除X格式外,其他格式必须用小写字母,例如%d不能写成%D

2.可以在printf函数中的“格式控制”字符串内使用“转义字符”,如/n。

3.如果想输出字符%,则应该在“格式控制”字符串中连续用两个%表示,如:

printf(“%f%%”,1.0/3);

 

scanf函数

1.scanf的一般形式为:

scanf(格式控制字符串,地址1,地址2,…)

2.格式控制字符串:

含义同printf函数,地址n是变量的地址。

%d用以输入整数,可以指定数据所占列数

%c用以输入字符,可以指定数据所占列数

%o,%x用以输入8进制和16进制整数

%f用以输入浮点数,不能规定精度

%s用以输入字符串,以非空字符开始,以空字符或回车结束。

注:

1.如果在%后有一个*号,表示从此跳过指定的列数。

例:

inti,j;

scanf(“%3d%3d”,&i,&j);//输入123456

scanf(“%2d_%*3d_%2d”,&i,&j);//输入12_345_67

scanf(“%d,%d”,&i,&j);//输入3,4

2.scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。

3.如果在“格式控制”字符串中除了格式说明以外还有其他字符,则在输入数据时在对应位置应输入与这些字符相同的字符。

4.在使用%c格式输入字符时,空格字符和“转义字符”都作为有效字符输入

5.在输入数据时,遇以下情况时该数据认为结束

(1).遇空格,或按“回车”,或”Tab”键

(2).按指定的宽度结束,如%3d,只取3列

(3).遇非法输入。

字符输入与输出

字符输出函数putchar

格式:

putchar(c)

参数:

c为字符常量、变量或表达式

功能:

把字符c输出到显示器上

返值:

正常,为显示的代码值;出错,为EOF(-1)

字符输入函数getchar

格式:

getchar()

功能:

从键盘读一字符

返值:

正常,返回读取的代码值;出错,返回EOF(-1)

例:

从键盘输入大写字母,用小写字母输出

#include

usingnamespacestd;

intmain()

{charc1,c2;

inta1,a2;

c1=getchar();

c2=c1+32;

putchar(c1);putchar(c2);putchar('\n');

a1=c1;a2=c2;

cout<

return0;

}关系运算和逻辑运算

关系运算符:

<<=>>=;==!

=

优先级相同(高)优先级相同(低)

1.优先级:

算术运算符>关系运算符>赋值运算符。

2.结合性:

从左到右。

关系表达式:

1.定义:

关系表达式是一种最简单的逻辑表达式,其结果类型为bool,值只能为“1”(true)或“0”(false)。

例如:

已设定a=3,b=2,c=1

d=a>b,则d=1;f=a>b>c,则f=0;

2.格式:

表达式关系运算符表达式

例如:

a>b,c<=a+b,x+y==3

逻辑运算符:

!

(非),&&(与),||(或)优先次序:

(从高到低)

1.优先级:

!

(非)>算术运算符>关系运算符>&&(与),||(或)>赋值运算符。

2.结合性:

从左到右。

逻辑表达式

1.格式:

表达式逻辑运算符表达式。

例如:

(a>b)&&(x>y)

2.结果类型:

bool,值只能为“1”(true)或“0”(false)。

如:

a=4则!

a=0;

a=4,b=5,则a&&b=1;(非0为真)

注:

(1).比较运算符

   == 与 =

   if(x==9)

        cout<<“x is not o\n”;

   if (x=9)

        cout<<“x is noto\n”;

(2).不等于运算符

   if(x!

=9)与if(x=!

9)

(3).逻辑非

例.若cx=15,ax=5

  !

cx>ax-6  

  (!

cx)>(ax-6)

   !

(cx>ax-6)

(4).10>=X>=5

 若写成  5<=X<=10  从左到右(衡为1)

应写成X>=5&&X<=10

(5).逻辑运算符两侧的表达式不到可以是关系表达式或整数,也可以是任何数值类型的数据。

如’c’&&’d’

例题:

若x,y,z的初值均为1,则执行表达式w=++x||++y&&++z

后,x,y,z的值分别为________。

A)x=1,y=1,z=2B)x=2,y=2,z=2

C)x=2,y=1,z=2D)x=2,y=1,z=1(D)

解:

++x后x=2为真,“||”后面的部分不需要执行

选择程序设计

条件运算符与条件表达式

一般形式:

表达式1?

表达式2:

表达式3(表达式1必须是bool类型)

例:

x=a

a:

b

执行顺序:

1.先求解表达式1;

2.若表达式1的值为true,则求解表达式2,表达式2的值为最终结果

3.若表达式1的值为false,则求解表达式3,表达式3的值为最终结果

优先性:

算术运算符>关系运算符>条件运算符>赋值运算符

例max=(a>b)?

a:

b+1

结合性:

“自右向左”例a>b?

a:

c>d?

c:

d即a>b?

a:

(c>d?

c:

d)

注:

1.条件表达式与一般if的语句可以相互替换

2.表达式2、3的类型不同,条件表达式的最终类型为2和3中较高的类型。

if语句

1.形式:

1.if(表达式)语句;。

例:

if(x>y)cout<

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

例:

if(x>y)cout<

elsecout<

3.多分支if语句:

if(表达式1)语句1;

elseif(表达式2)语句2;

elseif(表达式3)语句3;

else语句n;

2.if(条件表达式)语句;

或if(条件表达式)

   {语句;}

3.if...else 语句

  if(条件表达式) 语句1;

else 语句2;

例:

判断年份是否为闰年

#include

usingnamespacestd;

intmain()

{intyear;

cout<<"pleaseentertheyear"<<'\n';

cin>>year;

if(year%400==0)

cout<

elseif(year%4==0&&year%100!

=0)

cout<

elsecout<

return0;

}

4.嵌套if语句

一般形式:

if()

if()语句1

else语句2

else

if()语句3

else语句4

注:

1.语句1-4能是复合语句,每层的if与else配对,或用{}来确定层次。

2.If语句的嵌套二义性:

因为if可以嵌套,所有在嵌套时有时会出歧义,例如上例中,else是与第一个if配对。

例:

(1)if(I%3==0)

      if(I%7==0)

       cout<<I<

      elsecout<<I<

(2)if(I%3==0)

  { if(I%7==0)

       cout<<I<

  }

   elsecout<<I<

3.if与else的配对关系:

else总是与他上面最近的、且为配对的if配对。

 

5.多分支if语句:

一般形式:

if(表达式1)语句1;

elseif(表达式2)语句2;

elseif(表达式3)语句3;

else语句n;

 

switch语句

一般形式:

switch(表达式)

{case常量表达式1:

语句1

case常量表达式2:

语句2

case常量表达式n:

语句n

default:

语句n+1

}

注:

1.switch后表达式可以是整型、字符型、枚举型;

2.每个常量表达式的值不能相同,次序不影响执行结果。

3.在执行switch语句时,根据switch表达式的值找到与之匹配的case子句,并从此自居开始执行下去不再进行判断,因此,每个case分支最后应该加break语句,注,最后一个default语句可省略break语句。

如:

switch(表达式)

{

case常量表达式1:

语句组1;break;

case常量表达式2:

语句组2;break;

case常量表达式N:

语句组N;break;

default:

:

语句组N+1;(break;)k可省略

}

4.case语句起标号作用:

(1)标号不能重名

case‘A’:

cout<<…..;

case65:

cout<<…..;

(2)多个case可以共用一组执行语句

case‘A’:

case‘B’:

case‘C’:

cout<<“60up\n”;break;

但:

case‘A’,‘B’,‘C’:

cout<<“60up\n”;break;(错)

5.switch语句可以嵌套,可以与多分支if语句互换。

循环结构设计

循环控制与循环语句

While语句

1.形式:

while(表达式)语句

2.执行顺序:

先判断表达式的值,

为true时,再执行语句。

 

注:

循环体如果包含一个以上的语句需用花括号括起来,表示复合语句

do-while语句

1.一般形式:

do语句

While(表达式)

2.执行顺序:

先执行循环体语句,后判断条件。

表达式为true时,继续执行循环体

3.与while语句的比较:

While语句执行顺序

先判断表达式的值,为true时,再执行语句

4.while语句与do-while语句对比:

 

0

for语句

非0

1.一般形式:

for(表达式1;表达式2;表达式3)语句

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

2.执行过程:

(1).先求解表达式1;

(2).求解表达式2,如其值为1,则执行for内嵌语句,

然后执行第三步,如其值为0,则结束循环,执行

第(5)步;

(3).求解表达式3;

(4).转回第

(2)步骤继续执行;

(5).循环结束,执行for语句的下一个语句。

例:

输入一个整数,求出它的所有因子。

#include

usingnamespacestd;

voidmain()

{intn,i;

cout<<"Enterthenumber:

";

cin>>n;

cout<<"Number="<

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

{if(n%i==0)

cout<

}

}

3.灵活性

(1).表达式1可省

i=1;

for(;i<=100,i++)

{sum+=i;}

(2).表达式2可省

for(i=i;;i++)

{sum+=i;

if(i>100)break;

}

(3).表达式3可省

for(i=1;i<=10;)

{sum+=i++;}

(4).表达式1与表达式3可同时省

for(;i<=10;)

{sum+=i++;}

(5).三个表达式都省for(;;)

{sum+=i++;

if(i>100)break;}

(6).三个表达式可为任何表达式,表达式1和表达式3也可以是逗号表达式,既包含一个以上的简单表达式。

A.for(sum=0;i<=10;i++)

sum+=i;

B.for(sum=0,i=1;i<=10;i++)

sum+=i;

C.for(i=0,j=100,k=0;i<=j;i++,j--)

k+=i*j;

D.for(i=1;i<=10;sum+=i++);

E.for(i=1;sum+=i++,i<=100;);

注:

在逗号表达式内按自左至右的顺序求解,整个逗号表达式得知为其中最右边的表达式的值。

如:

for(i=1;i<=100;i++,i++)sum=sum+i;

相当于

for(i=1;i<=100;i=i+2)sum=sum+i;

 

三种循环的比较

循环控制变量的初值

While语句和do-while语句中一般在进入循环前赋值for语句一般由语句本身的表达式1赋值

循环控制变量的变化

While语句和do-while语句中在循环体中变化for语句在本身表达式3中变化

循环控制条件的检测

While语句和for语句,是在循环体前检测所以可能循环体一次都不会执行do-while语句是在循环体后检测所以循环体至少执行一次

1、可相互替代:

while<-->dowhile<-->for

2、简洁性和功能:

for最简洁、功能最强

3、循环的控制:

break、continue

break和continue语句

break语句—中断语句

1.功能:

使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。

不宜用在别处。

2.应用:

while,do-while,for语句(从最近的循环体内跳出)

switch语句(用于跳出switch语句,继续执行switch后的语句)

3.举例:

for(intcont,intt=0;t<100;t++)

{cont=1;

for(;;}

{cont<

count++;

if(count==10)break;

}

}

4.实质:

符合条件直接结束整个循环

continue语句—继续语句

1.功能:

结束本次循环,接着判断是否执行下一次循环。

例:

for(intn=100;n<=200;n++)

{if(n%3==0)

contiue;

cout<

}

2.实质:

符合条件结束本次循环,进行下一次循环。

3.break语句与continue语句的比较:

求100~200间不能被3整除的数

(正确)main()

{intn;

for(n=100;n<=200;n++)

{if(n%3==0)continue;

printf(“%d”,n);}

}

运行结果:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1