源代码C++程序设计基础案例教程吴艳清华大学出版社Word下载.docx
《源代码C++程序设计基础案例教程吴艳清华大学出版社Word下载.docx》由会员分享,可在线阅读,更多相关《源代码C++程序设计基础案例教程吴艳清华大学出版社Word下载.docx(143页珍藏版)》请在冰点文库上搜索。
格式输出控制符的验证。
inta,b,c,d,e;
pleaseinputfivenumbers(a-dec,b-oct,c-hex,d-hex,e-dec):
a;
oct>
hex>
c;
d;
dec>
e;
hex:
a="
hex<
a<
dec:
b="
dec<
b<
c="
c<
oct:
d="
oct<
d<
e="
e<
程序运行时,输入:
1217a2ff10
第3章程序设计结构
【例3-1】顺序结构的应用案例1。
要求用户通过键盘输入一直角三角形的底长和高,然后计算出此直角三角形的面积。
floatx,h,area;
”pleaseinputtwonumbers:
”<
h;
”x=”<
x<
”,h=”<
h<
area=1.0/2*x*h;
”area=”<
【例3-2】顺序结构应用案例2。
通过程序设计实现求任意两个实型数据的和。
floatx,y,add;
”,y=”<
y<
add=x+y;
”+”<
”=”<
add<
【例3-3】单分支结构应用案例1。
通过键盘输入任意两个整数,输出较大的数。
inta,b,max;
cout<
”请输入两个数字:
”;
cin>
if(a>
b)
max=a;
if(a<
=b)
max=b;
”两个数中较大的是:
max<
【例3-4】单分支结构应用案例2。
通过键盘输入任意两个整数,要求第一个数中放大数,第二个数中放小数。
inta,b,t;
”交换前的结果:
”,”<
{
t=a;
a=b;
b=t;
”交换后的结果:
”<
【例3-5】双分支结构应用案例1。
利用双分支结构改写【例3-3】,实现两个数中输出较大数。
max=a;
else
【例3-6】双分支结构应用案例2。
通过键盘输入任意一个年份,判断该年份是否为闰年。
(闰年的条件是:
年份可以被4整除但是不能被100整除,或者年份可以被400整除)。
{
intyear;
”请输入一个年份(四位):
year;
if((year%4==0&
&
year%100!
=0)||(year%400==0))
year<
”是闰年!
else
”不是闰年!
运行结果为:
【例3-7】多分支结构的应用案例1。
将键盘输入的百分制成绩转换成五级计分制的成绩输出。
五级计分制成绩确定规则:
’A’(90~100)、’B’(80~89)、’C’(70~79)、’D’(60~69)、’E’(60分以下,不包括60)
{intscore;
chargrade;
”请输入一个分数值(0~100):
score;
if(score>
=90&
score<
=100)
grade=’A’;
elseif(score>
=80&
=89)
grade=’B’;
=70&
=79)
grade=’C’;
=60&
=69)
grade=’D’;
else
grade=’E’;
score<
”分所处的等级为:
grade<
【例3-8】多分支结构的应用案例2。
用户通过键盘输入任意一个年份与月份,自动显示该年的当月所包含的天数。
intyear,month,day;
”请输入一个月份:
month;
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
day=31;
elseif(month==4||month==6||month==9||month==11)
day=30;
if(year%4==0&
year%100!
=0)
day=29;
else
day=28;
”年”<
month<
”月有”<
day<
”天”<
【例3-9】多分支结构应用案例3。
修改例3-7,利用开关语句实现成绩的等级。
chargrade;
”pleaseinputascore:
switch(score/10)
case10:
case9:
grade=’A’;
break;
//若score/10结果为10,则执行case9后的语句序列
case8:
grade=’B’;
case7:
grade=’C’;
case6:
grade=’D’;
default:
grade=’E’;
”thegradeofscoreis:
【例3-10】多分支结构应用案例4。
设计一个小型计算器,能够实现加、减、乘、除和乘方的运算。
math.h>
floatx1,x2;
charop;
”请输入两个数值:
x1>
x2;
”请输入一个运算符:
op;
switch(op)//字符类型表达式
case'
+'
:
x1+x2<
-'
x1-x2<
*'
x1*x2<
/'
x1/x2<
^'
pow(x1,x2)<
theerrorofoperator!
【例3-11】多分支结构应用案例5。
应用枚举类型值进行输入值的判断,通过输入0显示“male”,输入1显示
“female”。
enumsex{male,female}s;
intn;
”请输入一个整数(0—male,1—female):
n;
switch(n)
case0:
s=male;
//0对应的male,1对应的female
case1:
s=female;
”您的输入错误!
\n”;
switch(s)
casemale:
”male\n”;
//注意break语句的使用
casefemale:
”female\n”;
例3-12】循环结构应用案例1。
用for循环实现就1~100之间所有偶数的和。
inti=0,sum=0;
for(;
i<
=100;
)//表达式1和表达式3省略
sum+=i;
i=i+2;
”sum=”<
sum<
}
【例3-13】循环结构应用案例2。
输出所有的“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
(例如,13+53+33=153,153是水仙花数)
inti,j,k,n;
”水仙花数有:
for(n=100;
n<
1000;
n++)
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
”“;
【例3-14】循环结构应用案例3。
用while循环实现就1~100之间所有偶数的和。
while(i<
i=i+2;
【例3-15】循环结构应用案例4。
编写程序,实现求任意两个正整数的最大公约数和最小公倍数。
intm,n,r,temp,p;
m>
if(m<
n)
temp=m;
m=n;
n=temp;
p=m*n;
while(n!
r=m%n;
n=r;
”最大公约数是:
m<
”最小公倍数是:
p/m<
【例3-16】循环结构应用案例5。
用do……while循环结构实现1~100之间所有偶数的和。
do
sum+=i;
}while(i<
=100);
【例3-17】循环结构应用案例6。
制作一个小游戏,要求:
系统自动生成0~50之间的随机数x,用户去猜其具体的数值。
要求:
(1)若用户猜的数值大于该数,则提示大于该数。
(2)若用户猜的数值小于该数,则提示小于该数。
stdlib.h>
intmin=0,max=50;
intx,y;
x=rand()%50;
系统已经生成随机数(0~50),请您输入您猜测的数据:
;
if(y>
x)
{
max=y;
当前数值范围为:
min<
--"
elseif(y<
min=y;
您猜对了,您非常棒!
}while(true);
【例3-18】break语句的应用案例。
编程实现模拟ATM机的执行流程。
vector>
intpassword,Id;
****************进入自动提款系统****************"
\n请输入密码:
password;
if(password==142536)
\n欢迎您使用ATM系统,请按键选择您所需要的服务"
\n您的密码错误,请重新输入"
exit
(1);
\n1:
查询"
\n2:
取款"
\n3:
存款"
\n4:
退出"
\n请输入您的选择:
Id;
switch(Id)
进行查询操作中......"
case2:
进行取款操作中......"
case3:
进行存款操作中......"
case4:
exit
(1);
您的输入有误!
【例3-19】continue语句的应用案例。
continue语句应用在循环语句中,验证continue语句的功能。
intx=1,n=10;
while(n-->
if(x>
4)
continue;
//若x>
4成立则结束本次循环做一下循环
x++<
"
}
x="
n="
//注意n的值
【例3-20】goto语句的应用案例。
利用goto语句实现求1~100之内偶数的和。
inti,sum=0;
i=0;
a:
i=i+2;
if(i<
100)
gotoa;
sum="
【例3-21】结构嵌套的应用案例1。
若一个数恰好等于它的因子之和,则这个数称为完数。
编写程序输出100以内的所有完数。
(如,1+2+3=6,而1、2、3是6的因子,所以说6是完数)。
inti,j,s;
for(i=2;
i++)
s=0;
for(j=1;
j<
i;
j++)
if(i%j==0)
s+=j;
if(s==i)
”是完数。
【例3-22】结构嵌套的应用案例2。
求15个学生英语课程的平均分。
inti;
floatsum=0,ave,score[15];
”请输入15个学生的高数成绩:
for(i=0;
15;
score[i];
for(i=0;
sum+=score[i];
ave=sum/15;
”这15个学生高数课程的平均分为:
ave<
【例3-23】结构嵌套的应用案例3。
结构嵌套中break和continue语句的应用。
inti,x=1,y=0;
10;
x+=3;
5)
**x="
y="
y=x+5;
x="
y="
若将上例中的continue语句改成break语句,则运行结果为:
【例3-24】结构嵌套的应用案例4。
有n个数,已按由小到大顺序排列好,要求输入一个数,把它插入到原有数列中,而且仍然保持有序,同时输出新的数列。
分析:
通常插入算法应包含四个主要步骤:
(1)确定插入位置。
(2)把从最后一个元素到插入位置的每一个元素中的值,依次向后移动一个位置,即把a[n]中的值放入a[n+1]中,把a[n-1]中的值放入a[n]中,依此类推,直到把a[i]中的值放入a[i+1]中。
(3)在确定的插入位置上放入x的值。
(4)元素的个数增1。
#include<
inti,n,j;
inta[11]={12,27,35,41,53,67,74,80,96,100};
原数列为:
a[i]<
'
\t'
输入插入数:
j=9;
while(j>
=0&
a[j])
a[j+1]=a[j];
j--;
a[j+1]=n;
插入后的数组:
11;
第4章函数
【例4-1】函数调用应用案例1。
已知一数组(含有10个元素)中前两个元素的值,后面元素的值分别是前两个元素之和,利用函数求出该数组所有元素的值。
iomanip.h>
voidfun(intarray[],intn);
inta[10]={5,8},i;
fun(a,10);
setw(4)<
a[i];
voidfun(intarray[],intn)
intj;
for(j=2;
array[j]=array[j-1]+array[j-2];
【例4-2】函数调用应用案例2。
编写函数将化氏温度转换为摄氏温度,公式为C=(F-32)*5/9;
并在主函数中调用。
floatfun(floatf)
{floatc;
c=5.0/9*(f-32);
//注意这里是5.0/9,不能写成5/9
returnc;
{floatx;
请输入一个温度值:
x;
输入的温度值为:
转换后,值为:
fun(x)<
【例4-3】函数调用应用案例3。
编写函数利用数组名作参数计算二维数组arr[3][4]中所有元素的和。
iostr