精讲多练C/C++语言 - 西安交通大学::计算机程序设计

Download Report

Transcript 精讲多练C/C++语言 - 西安交通大学::计算机程序设计

第一章
程序的基本结构
教材及授课结构

本章目标

基本内容

扩展阅读

上机指导

应用举例

习题
3
教学目标

了解程序的基本知识和上机环境,学习

1)了解主函数和一般函数的概念,了解结构化程序设计与面向对
象程序设计的程序框架特征和程序设计技术的应用及发展趋势;

2)掌握源程序的书写格式,包括标识符和关键(保留)字的使用;

3)了解编译预处理、编译和链接过程和从编辑源程序到程序运行
的操作方法;

4)掌握数据的输入输出(包括输入输出格式)方法。
4
基本内容

1.1 几个简单的程序

1.2 程序的基本结构和要素
5
程序设计语言

通用应用软件




当前流行的程序设计语言工具




–文字处理: Word
–表格处理: EXCEL
–科学计算 MATLAB …...
Microsoft: Visual C++、Visual Basic
Borland: Delphi、C++Builder
Sun: Java
C与C++
6
1.1 几个简单的程序
//例1-1:在屏幕上显示:This is my first program!
#include <iostream>
//包含基本输入输出库文件
using namespace std;
// 使用名字空间std
int main( )
//主函数名
{
cout << "This is my first program! "; //屏幕显示语句
return 0;
//表示程序顺利结束
}
 C++的程序由函数组成。该程序只由一个主函数main()构成
 一对花括号“{ }”是主函数的定界符
 程序语句全部采用小写字母。区分大小写,书写采用自由格式
语句用分号结束;一行可以写多个语句
 注释行: 以两个“//”起头的任何文字
7
例1-2:加法计算器程序
// 例1-2:加法计算器程序
#include <iostream>
//包含基本输入输出库文件
using namespace std;
//使用名字空间std
int main()
//主函数名
{
int x, y, sum;
//定义三个变量
cout<<"Please input two numbers: ";
//屏幕显示提示信息
cin>>x>>y;
//输入两个变量的值
sum = x + y;
//加法计算
cout << x << " + " << y << " = " << sum << endl; //输出运算结果
return 0;
//表示程序顺利结束
}
8
例1-3:根据三角形的三个边长求三角形面积
// 例1-3:求三角形面积
#include <iostream>
#include <cmath>
//包含标准数学函数库
using namespace std;
// 定义area()函数,其函数的返回值和形式参数a, b, c都是双精度类型
double area(double a, double b, double c)
{
double s, t;
//定义本函数中用到的变量s和t为可描述实数的双精度类型变量
s = (a+b+c)/2;
//计算中间变量s
t = sqrt(s*(s-a)*(s-b)*(s-c));
//调用标准数学开平方函数
return t;
//将运算结果t的值返回,通过函数名area带回函数调用处
}
// 主函数
int main()
{
double x, y, z;
//变量说明,定义三个可对实数进行操作的双精度类型变量
//调用area函数(参数使用几个确定的值)并将计算得到的结果直接输出
cout << "边长分别为3、4、5的三角形面积为:" << area(3, 4, 5) << endl;
cout<<"请分别输入其他任意三角形三条边长: ";
cin>>x>>y>>z;
//调用area函数(参数为用户任意输入的值)并将计算得到的结果直接输出
cout << "三角形面积为:" << area(x, y, z) << endl;
return 0;
}
9
1.2 程序的基本结构和要素

1.2.1 程序的基本结构

1.2.2 输入与输出

1.2.3 注释

1.2.4 标识符和关键字
10
1.2.1 程序的基本结构
[全局变量说明]
[#include <头文件>]
using namespace std;
[子函数1 [(形式参数)]
{
[子函数局部变量说明]
[语句序列]
}
[。。。。]
int main( )
{
函
[局部变量说明]
数
[语句序列]
体
return 0;
}





C++程序由函数组成;至少包括主函
数main()和(或)若干个子函数。
唯一的主函数main()是整个程序的入
口点。
一个函数又由变量及参数说明语句和
语句序列构成。
每个语句必须用分号结尾。一个语句
行可以写多个语句,一个语句可以写
在多行上。
C++语言允许在程序中插入注释行。
C++语言提供了包括I/O功能在内的大
量标准库函数,但调用这些函数时,
必须在程序头部包含头文件。
11
1.2.2 输入与输出

cin表示输入流对象,其基本用法为:



cin>>V1>>V2>>…>>Vn;
在输入时,应注意用空格或tab键将所输入的数据分隔开。
必须注意所输入数据的类型应与接受该数据之变量的类型相匹
配,否则输入操作将会失败或者得到的将是一个错误的数据。
cout表示输出流对象,其基本用法是:

cout << E1 << E2 <<…<< Em;
在输出时,要注意恰当使用字符串和换行符endl,提高输出信
息的可读性。
cout << x << " + " << y << " = " << sum << endl;
12
输入输出图示
cin>>x>>y;
x=3;
3
cin
4
>>
y=4;
键盘
图1.1 cin输入流(例1-2)
cout << "This is my first program! ";
cout
<<
"This is my first program."
显示器
图1.2 cout输出流(例1-1)
13
1.2.2 注释

C++的注释有两种形式:


//
/* … */
用于单行注释
用于多行注释

注释可以出现在空白符允许出现的任何地方,
但习惯上将注释和其所描述的代码相邻,一般
可以放在代码的上方或右方,不放在下方。

恰当使用注释可以使程序容易阅读。
14
1.2.2 标识符和关键字

是程序中变量、类型、函数和标号的名称。

由字母、数字和下划线“_”组成,第一个字符不能是数字。

“大小写敏感”。

各种C++编译器对在标识符中最多可以使用多少个字符的规定各
不相同,ANSI标准规定编译器应识别标识符的前6个字符。

在标识符中恰当运用下划线,大、小写字母混用以及使用较长的
名字都有助于提高程序的可读性。
15
标识符、关键词和标点符号
C++关键词
asm,auto,bad_cast,bad_typed,bool,break,case,catch,
char,class,const,const_cast,continue,default,delete,do,
double,dynamic_cast,else,enum,except,extern,explicit,false,
finally,float,for,friend,goto,if,inline,int,long,mutable,
namespace,new,operator,private,protected,public,register,
reinterpret_cast,return,short,signed,sizeof,static,static_cast,
struct,switch,template,this,throw,try,type_info,typedef,
typeid,union,unsigned,using,virtual,void,volatile,while


C++还有12个标识符作为编译预处理
define,elif,else,endif,error,if,ifdef,ifndef,
include,line,progma,undef

C++的标点和特殊字符有
! % ^ & * ( ) – + = { } | ~
[ ] \ ; ' : " < > ? , . / #
16
扩展阅读

1.3 C/C++背景

1.3.1 程序设计语言的发展

1.3.2 从C到C++
17
上机指导


1.4 Visual C++集成开发环境

Visual C++ 6.0

Visual C++ 2008(Visual C++ 9.0)
其他调试环境
18
应用举例

例1-4
计算下式的结果,其中x= -3 .5°,y= 6.7°
sin  x  y 
cos x  y 
#include <iostream>
#include <cmath>
//包含标准数学函数库
using namespace std;
int main()
{
double x, y;
//将角度单位由度转换为库函数所要求的弧度值
x=-3.5/180*3.14159;
y=6.7/180*3.14159;
//计算三角函数并输出
cout << sin(fabs(x)+fabs(y))/sqrt(cos(fabs(x+y))) << endl;
return 0;
}
19
应用举例

例1-5 计算保险经纪人月薪
假定每一名保险经纪人的月工资都由三部分组成:
底薪+奖金+业务提成。



奖金的颁发方法为:奖金为经纪人在公司的工作年数
*10,即每年10元;
业务提成的颁发方法为:当月销售额的3%提成。
编程要求:当用户按照屏幕提示分别输入经纪人的底薪、
工龄以及当月销售额后,程序计算并输出经纪人的月薪。
20
算法分析
1.
输入底薪baseSalary
2.
输入经纪人在公司的工作年数serviceYears
3.
计算奖金bonus = 10 * serviceYears
4.
输入经纪人当月销售额totalSale
5.
计算提成additionalBonus = 0.03 * totalSale
6.
计算经纪人的月薪Salary = baseSalary+bonus+additionalBonus
7.
输出结果
#include <iostream>
using namespace std;
int main()
{
//声明部分,定义程序中将用到的变量
double baseSalary, bonus, totalSale, additionalBonus, Salary;
int serviceYears;
cout<<"请输入底薪:";
cin>>baseSalary;
cout<<"请输入经纪人在公司的工作年数:";
cin>>serviceYears;
//计算奖金bonus
bonus=10*serviceYears;
cout<<"请输入经纪人当月销售额:";
cin>>totalSale;
//计算提成additionalBonus
additionalBonus=0.03*totalSale;
//计算经纪人的月薪Salary
Salary = baseSalary+ bonus+ additionalBonus;
cout<<"该经纪人的月薪为:"<<Salary<<endl;
return 0;
}
案例:重量单位换算

编写一个重量单位换算程序,输入用公斤表
示的重量,然后程序能够转换并输出用镑和
盎司表示的等效重量。
请输入重量(公斤):23
转换为用磅表示的重量(磅):50.7055
转换为用盎司表示的重量(盎司):811.287
• 教学设问
• 如何设计变量及选择相应的数据类型?
• 公斤、磅和盎司的转换公式是什么?
*更多案例见本书配套教材《C/C++语言程序设计案例教程 》罗建军等编著,清华大学出版社
23
问题分析
为保证程序能够处理带小数点的数值,变量的数据类
型需选用可以对实数进行操作的双精度类型double。
故变量列表为:


double kilogram, pound, ounce;
//公斤、镑、盎司
公斤、磅和盎司的转换公式:


1磅=16盎司=0.4536千克(公斤)
算法如下:





1. 得到用公斤表示的重量
2. 将重量转化为磅:pound=kilogram/0.4536;
3. 将磅转化为盎司:ounce=pound*16;
4. 输出转换后的重量
24
// 重量单位换算
#include <iostream>
using namespace std;
int main()
{
double kilogram, pound, ounce; //公斤、镑、盎司
cout<<"请输入重量(公斤):";
cin >> kilogram;
pound=kilogram/0.4536;
ounce=pound*16;
cout<<"转换为用磅表示的重量(磅):"<<pound<<endl;
cout<<"转换为用盎司表示的重量(盎司):"<<ounce<<endl;
return 0;
}
进一步思考

如果要想从磅和盎司转换成公斤,应该怎么
修改程序?

如果要想将本案例程序的输出改成**磅**盎
司(磅和盎司都省略小数点后的位数),应
该怎么修改程序?
26
习题
1.
2.
在计算机上调试运行本章的所有例题,熟悉实验环境和方法。
修改例1-1程序,使其能够在计算机屏幕上显示:
*******************
* Hello World! *
*******************
3.
4.
仿照例1-2的加法计算器程序,编写一个通用计算器程序,当用户输
入两个数以后,可以计算并输出这两个数的和、差、积、商。
仿照例1-3,编写一个计算直角三角形斜边边长的程序,要求当输入
直角三角形的两个直角边边长后,能够计算出第三边(即斜边)的边
长。
1
y  x  6( x  )  ( x  3.2) /( x  7.7)
仿照例1-4,编写程序,计算
在x=3时的值。
x
仿照例1-5,编写一个程序,当输入某学生“英语”课程的平时成绩、
期中考试和期末考试成绩及各项占总成绩的比例后,可以计算出该生
“英语”课程的最终成绩。
2
5.
6.
3
27
结 束 语
学好程序设计语言的唯一途径是
你的编程能力与你在计算机上投入的时间成
28