第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针第三讲 C++语言基础
5.3 基本语句
5.4 函数第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针基 本 语 句什么是语句? 以分号为结束标志的句子分 类表达式语句,有返回值的语句,如 a==b
声明语句,对变量、类、函数等声明,
如 int a;
空语句,仅由分号组成,如 ;
块语句,多个语句的组合,如
{int a,b=1; a=b*2; cout << a;}
控制语句,改变语句的执行次序,
if(a>b) max=a; else max=b;
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针控 制 语 句
if 控制语句:
if(expression)
statement;
if(expression)
statement1;
else
statement2;
假 真Exp.
Stat.
假 真Exp.
Stat 1.Stat.2
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 1,#include<iostream.h>
void main( )
{
int a=1,b=3;
cout << " max(a,b)= ";
if( a>b ) cout << a;
else cout << b;
}
假 真if(a>b)
cout << a;cout << b;
结果,max(a,b)=3
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针注意,若 statement 也是一个 if 结构的嵌套的语句,则 else 与最近的未配对的 if 匹配,
如果在 if 和 else 后有多个语句,则要用花括弧括起来,即:
if(exp.) {stat1; stat2; ……}
else {stat1; stat2;……}
例:求 a,b,c中的最大值
if(c>b) // c>b
if(c>a) max=c; // c>a,max=c
else max=a; // a>=c,max=a
else // c<=b
if(b>a) max=b; //b>a,max=b
else max=a; //b<=a,max=a
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
switch 语句:多情况选择形式? switch (expression)
{
case c1,statements;
break;
case c2,statements;
break;
case c3,statements;
break;
default,statements;
}
流程? 先计算 exp 的值,再相应的语句,若表达式的值不在 {ci}
之内,执行 default 语句。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
switch 语句:多情况选择流程
expression
case a stats,breakT
F…
case y stats,break
case z stats,break
T
F
T
F
default stats.
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 2,#include<iostream.h>
void main( )
{ int m;
cout << "\n input an integer:" ;
cin >> m;
switch(m)
{ case 1,cout << "one"<< endl; break;
case 2,cout << "two" << endl; break;
case 3,cout << "three" << endl; break;
default,cout << "default" << endl;
}
}
input an integer,2
two
结果?
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
switch 语句注意点
case 后的常量类型 = switch中表达式类型
这些类型只能为,int,char,enum
在每个 case 中,必须加入 break,以达到仅选一种的目的,
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针重复控制语句,while 和 do/while
形式? while (condition)
{
statements;
}
do {
statements;
} while (condition);
区别?while,先验证条件,再执行语句
do/while,先执行语句,再验证条件注意?不能死循环,即无限循环。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
while 和 do/while 执行流程
statements
con
d.
F
T
statements
cond,F
T
while do/while
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 3,#include<iostream.h>
void main( )
{ int count=1; //如果 count=11,结果任何?
while (count<=10)
{ cout << count << " " ; count++; } }
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
结果?
#include<iostream.h>
void main( )
{ int count=1; //如果 count=11,结果任何?
do { cout << count << " " ; count++;
} while (count <=10); }
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针重复控制语句,for
形式? for(exp1; exp2; exp3)
statement;
exp1,初始化表达式
exp2,判断条件表达式
exp3,修正表达式
statement,循环体exp1
exp
2 exp3statement
判断条件
T
F
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 4,生成 n项 Fibonacci数列:
Fib(n)=1,n<3; Fib(n)=Fib(n-1)+Fib(n-2),n? 3
#include <iostream.h>
void main( )
{ int f1,f2,f3,terms,n; //定义变量
cout << " input an integer,"; //输出提示
cin >> terms; // 读入所输入的整数
if(terms>2) //判断输入是否 大于 2
{ f1=f2=1; cout <<f1<< ";" <<f2<< "; "; //输出前两项
for(n=3; n<=terms;n++) //从 3到 terms 的循环体
{ f3=f1+f2; //计算新值
cout << f3 << "; "; //输出新值
f1=f2; f2=f3; //更新 f1和 f2,注意赋值次序 }
}
else //terms小于 3
{ for(n=1; n<=terms; n++) //从 1到 terms 的循环体
cout << 1 << "; "; } }
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针
For语句的一些注意事项
1。防止无限循环
2。循环体有多条语句时,要加 { }
3。表达式可缺省,但分号不能省,如
int n=1;
for( ; n<10; n++)
4。变量可在表达式中声明:
for(int n=1; n<10; n++)
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针转向语句和中止函数
4个转向语句,break,continue,return,goto
break,中止所在的循环或用在 switch中
continue,不执行循环体中 continue后面部分
return,中止并返回调用函数处
goto,软件开发中尽可能不用
1个中止函数,exit( ),它将中止程序的执行。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 5:打印 3到 20之间的全部素数。
#include <iostream.h>
void main( )
{ cout << "The primes in [3,20] are:"<<endl;
for(int i=3; i<=20;i++) //从 3到 20的循环体
{ int p=1; //1=素数; 0=非素数
for(int j=2; j<=i/2; j++) //从 1到 i/2的循环体
{
if(i%j==0) // i被 j整除
{ p=0; //是非素数
break; } //中止对 j的循环
}
if(p= =0) continue; //若是非素数转向到 i++
cout << i << ","; //输出素数 i
}
}
执行结果,3,5,7,11,13,17,19
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针函数:库函数和自定义函数函数? 完成某一特殊任务的程序块函数作用过程,1。函数声明
2。函数定义
3。函数调用第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针库函数? 由编译系统自定义,可直接调用,它们的声明和定义包含在相应的头文件中,应用程序只要包含相应的头文件就可以调用函数。
库函数常用的函数库有 (C语言 ):
assert.h? 用于调试程序
math.h? 数学运算,如 sqrt(x),fabs(x).
stdio.h? 输入输出函数
stdlib.h? 类型转换,存储分配等
time.h? 时间和日期
string.h? 字符串处理第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 6,库函数的调用
#include <iostream.h>
#include <math.h>
void main( )
{
float a=900.0;
float root = sqrt(a); //调用库函数
cout << " The square root of " <<a
<< " is," << root << endl;
}
执行结果,The square root of 900 is 30
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针自定义函数函数的声明,type fname(ParametList);
其中,type,函数返回的类型,
fname,函数名,
ParametList,函数的形式参数,
具体为,type1 p1,…,typen p2,且 p1、
p2,…,pn可省略注意,函数的声明必须在函数的调用之前,一般放在头文件之中( *.h )。
如,int max(int a,int b); 或
int max(int,int);
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 7:打印 3到 20之间的全部素数。
#include <iostream.h>
int prime(int n); //函数声明
void main( )
{ cout << "The primes in [3,20] are:"<<endl;
for(int n=3; n<=20;n++) //从 3到 20的循环体
if( prime(n) ) //调用函数
cout << n << "," ; //1=素数; 0=非素数
}
int prime(int x) //定义函数
{ for(int i=2; i<=x/2; i++) //从 1到 x/2的循环体
if(x%i==0) return 0; // x被 i整除
return 1;
}
执行结果,3,5,7,11,13,17,19
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针函数的调用,函数在调用时才被执行,
其调用参数称为实参数,
在前例中已调用了函数。
注意,函数的形参数的次序和类型要与实参数一样如在求素数的例题中:
函数声明为:
int prine(int x);
函数调用为:
for(int n=3; n<=20;n++) //从 3到 20的循环体
if( prime(n) ) //调用函数
cout << n << "," ; //1=素数; 0=非素数第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针函数的定义,函数首部
{
函数体
}
注意,在函数的定义中,形式参数不能省
int prime(int x) //定义函数
{ for(int i=2; i<=x/2; i++) //从 1到 x/2的循环体
if(x%i==0) return 0; // x被 i整除
return 1;
}
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针参数缺省函数在函数声明时,其形式参数可以赋值作为省略值,在调用函数时,若实参数目少于形参数目时,参数缺省值从右到左调用。
注意:声明和调用时都从右到左。
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针例 1,函数可声明为 (从右到左缺省 ):
void f0(float x,int y,char z);
void f1(float x,int y,char z=`B`);
void f2(float x,int y=4,char z=`B`);
void f3(float x=1,int y=4,char z=`B`);
调用时( 从右到左补充 ),
float a=2.1; int b= 5; char c=`C`;
f3(a,b,c); //三参数值为,a,b,c
f3(a,b); //三 参数值为,a,b,`B`
f3( ); //三 参数值为,1,4,`B`
f1(a,b); //三 参数值为,a,b,`B`
f0(a,b,c); //三 参数值为,a,b,c
f0(a,b); f1(a); f2( ); //错误问题:是否只要定义一个函数 f3?
第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针参数缺省函数为什么要用参数缺省函数?
1,对函数的实参数实行初始化,
2,使函数的定义和调用更具有一般性
3,降低编程的复杂性,降低程序出错的可能性第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针课堂总结
基本语句中的控制语句,
if/else,单选
switch,多种选择
do/while,循环语句,不能无限循环
for,循环语句,不能无限循环
转向语句和中止语句
break,continue,注意两者的区别
return,中止函数的执行,回到函数调用处
exit( ),中止程序的执行
函数的三要素,函数的声明、定义和调用
函数包括:库函数和自定义函数第五章 C++基础
5.1 C++概述
5.2 数据和表达式
5.3 基本语句
5.4 函数
5.5 数组与指针作 业
1,改错
a) if(gender= = 1) cout << " woman " <<endl;
else; cout << "man " <<endl;
b) while (c<5) { a *= c; c++;
c) while (z>=0) sum += z;
2,编写一函数用来求 1到 100的偶数之和。
3,编写一函数用来完成 1到 20之间的整数的屏幕输出,每一行输出 5个数值。
4,编写一函数完成对某一学生的成绩分类,
函数声明为 char grade(float Snote),其中
Snote为学生的成绩,且 90-100为 A,80-89
为 B,70-79为 C,60-69为 D,60以下为 E。