C第三章 程序设计初步解析Word格式.docx
- 文档编号:16362929
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:21
- 大小:110.44KB
C第三章 程序设计初步解析Word格式.docx
《C第三章 程序设计初步解析Word格式.docx》由会员分享,可在线阅读,更多相关《C第三章 程序设计初步解析Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
z;
}
注:
1.每个语句最后必须加分号:
2.“}”后不加分号
程序的三种基本结构:
顺序结构,选择结构,循环结构
1.顺序结构
2.选择结构
(1)二分支选择结构
(2)多分枝选择结构
3.
循环结构
(1).当型循环结构
(2).直到型循环结构
顺序程序设计
赋值操作:
1.赋值语句格式:
赋值表达式;
2.赋值语句与赋值表达式的区别:
赋值表达式可以包含在其它表达式中,而赋值语句不可。
如:
if((a=b)>
0)t=a;
不可写为:
if((a=b;
)>
C++的输入输出:
首加#include<
iostream.h>
概念:
cout——输出流对象cin——输入流对象
<
——流插入运算符>
>
——流提取运算符
Cout语句格式:
cout<
表达式1<
表达式2<
...<
表达式n;
cin语句格式:
cin>
变量1>
变量2>
...>
变量n;
一个cout语句可分成若干行(见书P52)
注:
1.使用输入输出时,在程序的开头增加一行:
#include<
;
2.使用控制符:
有时缺省输出格式不能满足要求,这时可以用控制符控制输出的格式,在程序的开头增加一行:
iomanip.h>
例:
#include<
voidmain()
{
setw(5)<
setprecision(3)<
3.1415<
3.数学函数控制符:
程序中使用了数学函数如sqrt(),首#include<
cmath>
.
4.不能用一个插入运算符”<
”插入多个输入项
a,b,c;
错,cout<
a+b+c;
对
C的输入输出:
首加#include<
stdio.h>
,无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进制整数,可以有长度修饰。
如:
inta=28,b=38;
longc=123456;
printf("
%5d,%5d\n%ld\n"
a,b,c);
%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进制都是无符号整数,输出时不带符号。
inta=1200;
%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;
%c,%d,%3c\n"
ch,ch,ch);
%c,%d,%3d\n"
a,a,a);
输出结果为:
a,97,a
A,65,65
(5)%s格式符
用来输出字符串。
可以指定格式宽度,如果字符串长小于指定的宽度时,可以选择左对齐或右对齐。
另外,还可以选择输出字符中的前n个字符。
%s"
"
Hello\n"
);
%3s,%-5.3s,%5.2s\n"
Hello"
Hello
Hello,Hel,He
(1).如果输出的只有一个字符串,可以省略格式参数,因为格式参数本身可以是原样输出的普通字符串。
(2).“%-5.3s”中的负号表示左对齐,如果没有负号,则默认为右对齐。
5表示格式宽度,3表示截取字符串中3个字符。
(6)%f格式符
用来以小数方式输出。
可指定格式宽度,也可以指定小数位数,还可以规定左对齐或右对齐。
floatx=123.456;
doubley=321.654321;
%f,%-7.2f,%10.4f\n"
x,x,x);
%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”,&
//输入12_345_67
scanf(“%d,%d”,&
//输入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;
a1<
'
a2;
}关系运算和逻辑运算
关系运算符:
=>
>
=;
==!
=
优先级相同(高)优先级相同(低)
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.格式:
表达式逻辑运算符表达式。
(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<
b?
a:
b
执行顺序:
1.先求解表达式1;
2.若表达式1的值为true,则求解表达式2,表达式2的值为最终结果
3.若表达式1的值为false,则求解表达式3,表达式3的值为最终结果
优先性:
条件运算符>
赋值运算符
例max=(a>
b)?
b+1
结合性:
“自右向左”例a>
c>
d?
c:
d即a>
(c>
d)
1.条件表达式与一般if的语句可以相互替换
2.表达式2、3的类型不同,条件表达式的最终类型为2和3中较高的类型。
if语句
1.形式:
1.if(表达式)语句;
。
if(x>
y)cout<
x;
2.if(表达式)语句1;
else语句2;
例:
elsecout<
y;
3.多分支if语句:
if(表达式1)语句1;
elseif(表达式2)语句2;
elseif(表达式3)语句3;
…
else语句n;
2.if(条件表达式)语句;
或if(条件表达式)
{语句;
}
3.if...else 语句
if(条件表达式) 语句1;
else 语句2;
判断年份是否为闰年
{intyear;
"
pleaseentertheyear"
cin>
year;
if(year%400==0)
cout<
year<
isleapyear"
elseif(year%4==0&
year%100!
=0)
isnotleapyear"
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<<
endl;
//输出能被3整除,能被7整除
elsecout<
//输出能被3整除,不能被7整除
(2)if(I%3==0)
{ if(I%7==0)
cout<
I<
//输出能被3整除,能被7整除
}
elsecout<
// 输出不能被3整除不管是否被7整除
3.if与else的配对关系:
else总是与他上面最近的、且为配对的if配对。
5.多分支if语句:
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;
case常量表达式N:
语句组N;
default:
:
语句组N+1;
(break;
)k可省略
4.case语句起标号作用:
(1)标号不能重名
case‘A’:
…..;
case65:
(2)多个case可以共用一组执行语句
case‘B’:
case‘C’:
“60up\n”;
break;
但:
case‘A’,‘B’,‘C’:
(错)
5.switch语句可以嵌套,可以与多分支if语句互换。
循环结构设计
循环控制与循环语句
While语句
while(表达式)语句
2.执行顺序:
先判断表达式的值,
为true时,再执行语句。
循环体如果包含一个以上的语句需用花括号括起来,表示复合语句
do-while语句
1.一般形式:
do语句
While(表达式)
先执行循环体语句,后判断条件。
表达式为true时,继续执行循环体
3.与while语句的比较:
While语句执行顺序
先判断表达式的值,为true时,再执行语句
4.while语句与do-while语句对比:
for语句
非0
for(表达式1;
表达式2;
表达式3)语句
for(循环变量赋初值;
循环条件;
循环变量增值)语句
2.执行过程:
(1).先求解表达式1;
(2).求解表达式2,如其值为1,则执行for内嵌语句,
然后执行第三步,如其值为0,则结束循环,执行
第(5)步;
(3).求解表达式3;
(4).转回第
(2)步骤继续执行;
(5).循环结束,执行for语句的下一个语句。
输入一个整数,求出它的所有因子。
usingnamespacestd;
{intn,i;
Enterthenumber:
"
n;
Number="
n<
Factors="
for(i=1;
i<
=n;
i++)
{if(n%i==0)
"
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;
=10;
)
{sum+=i++;
(4).表达式1与表达式3可同时省
for(;
{sum+=i++;
(5).三个表达式都省for(;
{sum+=i++;
(6).三个表达式可为任何表达式,表达式1和表达式3也可以是逗号表达式,既包含一个以上的简单表达式。
A.for(sum=0;
=10;
sum+=i;
B.for(sum=0,i=1;
i++)
sum+=i;
C.for(i=0,j=100,k=0;
=j;
i++,j--)
k+=i*j;
D.for(i=1;
sum+=i++);
E.for(i=1;
sum+=i++,i<
=100;
在逗号表达式内按自左至右的顺序求解,整个逗号表达式得知为其中最右边的表达式的值。
for(i=1;
i++,i++)sum=sum+i;
相当于
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;
count++;
if(count==10)break;
4.实质:
符合条件直接结束整个循环
continue语句—继续语句
结束本次循环,接着判断是否执行下一次循环。
for(intn=100;
=200;
n++)
{if(n%3==0)
contiue;
2.实质:
符合条件结束本次循环,进行下一次循环。
3.break语句与continue语句的比较:
求100~200间不能被3整除的数
(正确)main()
{intn;
for(n=100;
n<
=200;
n++)
{if(n%3==0)continue;
printf(“%d”,n);
运行结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三章 程序设计初步解析 第三 程序设计 初步 解析