C++入门培训讲义Word文档下载推荐.docx
- 文档编号:20914876
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:17
- 大小:23.20KB
C++入门培训讲义Word文档下载推荐.docx
《C++入门培训讲义Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++入门培训讲义Word文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
inta,b,c;
cin>
>
a>
b;
c=a+b;
c;
程序运行之后,需要输入2个整数,输完第一个数按一下空格键,输完第二个数按一下Enter(回车键)。
观察程序运行结果,说说这个程序的作用是什么?
三.参考书:
《全国青少年信息学奥林匹克竞赛教程信息学奥赛一本通(C++版)第二版》,(董永建舒春平等主编,科学技术文献出版社出版),同学们可以到图书馆借阅。
第二课时:
C++编程体验
1.巩固C++程序结构,记住“保存”、“编译”和“运行”的快捷键(ctrl+s、F9、F10);
2.了解C++数据类型(int和float);
3.掌握整除和求余运算(整除/求余%);
4.学习编写顺序结构的C++程序。
二.学习内容:
1.计算票价
已知每张门票价格为50元,输入游客人数,计算并输出票价。
intmain()
intn,k;
n;
k=n*50;
k<
endl;
2.计算梯形面积
输入梯形上底、下底和高,计算并输出梯形面积。
floata,b,h,s;
b>
h;
s=(a+b)*h/2;
s<
3.输入一个三位数,反序输出,比如输入:
789,输出:
987。
inta,b,c,n;
a=n%10;
b=(n/10)%10;
c=n/100;
a<
b<
c<
第三课时:
C++选择语句
1.学习if单分支和双分支结构语句;
2.学习switch语句,;
3.学习复合语句;
1.票价打折
已知每张门票价格50元,5人以上的团体票为45元,输入游客人数,计算并输出票价。
if(n>
4)
{
k=n*45;
}
else
k=n*50;
k;
思考:
如果题目改为:
5人以上打9.5折,程序是否需要修改?
2.计算2017年各月天数
输入2017年的月份,计算并输出该月的天数。
intmonth,day;
month;
switch(month)
case4:
day=30;
break;
case6:
case9:
case11:
case2:
day=28;
default:
day=31;
day<
本题也可以用if语句实现,请试试。
第四课时:
C++循环语句
(1)
一.上节课思考题:
已知每张门票价格50元,5人以上打9.5折,输入游客人数,计算并输出票价。
intn;
floatk;
k=n*50*0.95;
提示:
因为9.5折是实数,所以金额的变量类型应修改为float。
输入2017年的月份,计算并输出该月的天数(if语句实现)。
day=31;
//先把天数统一设置为31天
if(month==2)//如果是2月份,把day变量修改为28天
day=28;
if((month==4)||(month==6)||(month==9)||(month==11))//如果是4月或6或9或11月,
//把day变量修改为30天
||是逻辑运算符,“或”的意思。
二、循环语句
1导游购票1
已知每张门票价格50元,5人以上打9.5折。
售票处有10个导游在排队,因为每个旅游团人数一般都不相同,所以每个导游希望购买的门票张数也不一定相同。
现在要求你编写一个程序,输入10个导游需要的门票张数,计算并输出各自的总价。
解题重点:
本题和原题的最主要区别是“10个导游在买票”,本质上就是把原来的那个程序运行10遍。
相同的事情重复多遍,这在计算机领域叫“循环”。
本题明确规定10遍,属于“已知次数的循环”。
要用for语句。
参考程序:
{intn;
for(inti=1;
i<
=10;
i++)
2导游购票2
售票处有多个导游在排队,因为每个旅游团人数一般都不相同,所以每个导游希望购买的门票张数也不一定相同。
现在要求你编写一个程序,输入每一个导游需要的门票张数,计算并输出各自的总价。
当输入的门票张数为0时,程序结束。
已知导游人数不超过100,每个导游购买的门票不超过1000张。
本题和上一题的最主要区别是“导游人数不确定”,也就是重复执行的次数不确定了。
这属于“未知次数的循环”。
要用while语句。
while(n!
=0)//当输入的门票张数不等于0的时候,就计算。
今天的两道“循环”练习题,都是输入一张数,输出一个票价。
再输入一个张数,又输出一个票价。
如果题目要求“连续输入全部导游需要的门票张数,再连续输出相应的总票价”该如何实现?
第五课时:
C++循环语句
(2)
学习要点:
1.复习自增自减运算符,i++与++i的区别;
2.For循环、循环嵌套;
练习题:
1.计算1+2+3+……+100的和;
ints=0;
for(inti=1;
=100;
++i)
s=s+i;
cout<
return0;
2.计算1*2*3*……*20的积;
intlonglongs=1;
=20;
s=s*i;
3.计算1!
+2!
+3!
+……+20!
的和;
intlonglongs=0;
intm=1;
for(intj=1;
j<
=i;
++j)
m=m*j;
s=s+m;
思考题:
1.对n!
和的改进;
2.输出水仙花数;
第6课时数组
1.掌握“数组”这一数据类型的使用场合;
2.掌握“数组”的定义、应用;
3.学习排序算法。
1.输入一个正整数n(不超过100),再输入n个整数,按相反的顺序将n个整数输出。
分析与探索:
输入n个整数,需要等到全部输入完毕,才可以从最后一个开始逆序输出,所以这n个整数需要事先保存起来,这n个数的类型相同,彼此之间有一定的关系,所以用一种新的数据类型——数组来定义:
Inta[101]就定义了一个有100个元素的整型数组。
inta[101],n;
for(inti=0;
a[i];
for(inti=n-1;
i>
=0;
--i)
a[i]<
'
'
2.输入一个正整数n(不超过100),再输入n个整数,按从小到大的顺序将n个整数输出。
freopen("
sort.in"
"
r"
stdin);
sort.out"
w"
stdout);
=n;
for(intj=i+1;
if(a[i]>
a[j])
intk=a[i];
a[i]=a[j];
a[j]=k;
"
3.作业p70例5.4约瑟夫问题
4.作业p76例5.8矩阵的行列交换
第7课时函数
1.掌握函数的声明、定义、调用;
2.掌握函数参数类型和作用范围;
3.学习递归算法。
先看p107两题作业:
1.编程求5!
+7!
+9!
+11!
的值。
2.编程求c(n,m)=n!
/(m!
*(n-m)!
)(n>
0,m>
0)
这两道题需要反复计算某一个数的阶乘,假如存在类似sin(x)这样的函数js(x),那么问题就轻松解决了,但c++的标准函数库中并没有这样的js(x)函数,需要我们自己定义。
函数需要先声明、定义,才可以调用,下面是第1题作业的参考程序:
intjs(int);
//声明函数
js(5)+js(7)+js(9)+js(11)<
//调用函数
intjs(intx)//定义函数
ints=1;
for(inti=1;
=x;
returns;
声明函数与定义函数的区别是:
声明时括号内可以只写参数类型,不写具体名称,语句末尾带一个“;
”号。
第8课时c++文件操作
到目前为止,我们写的程序都是从键盘输入数据,程序运行之后的结果也都是从显示器显示,在竞赛中,程序的输入、输出都需要使用文件。
使用freopen重定向输入、输出流。
格式如下:
freopen("
sum.in"
//以只读方式打开sum.in文件
sum.out"
//以写入方式打开sum.out文件
这样,程序就从sum.in文件中读取输入数据,运行结果也保存到输出文件sum.out中。
第1题:
计算a+b(文件名sum)
输入输出样例:
sum.in
2530
sum.out
55
数据规模:
a和b均不超过230
inta,b;
a+b;
fclose(stdin);
fclose(stdout);
第2题:
输入n个数,从大到小排序(文件名sort)
sort.in
8
585612251050645
sort.out
585650452512106
n不超过100000
algorithm>
inta[100000],n;
intcomp(constint&
a,constint&
b)
returna>
}
++i)
sort(a,a+n,comp);
NOIP2016全国信息学分区联赛提高组第一试玩具迷题(toy)
【问题描述】
小南有一套可爱的玩具小人,它们各有不同的职业。
有一天,这些玩具小人把小南的眼镜藏了起来。
小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外。
如下图:
这时singer告诉小南一个谜题:
“眼镜藏在我左数第3个玩具小人的右数第1个玩具小人的左数第2个玩具小人那里。
”
小南发现,这个谜题中玩具小人的朝向非常关键,因为朝内和朝外的玩具小人的左右方向是相反的:
面朝圈内的玩具小人,它的左边是顺时针方向,右边是逆时针方向;
而面向圈外的玩具小人,它的左边是逆时针方向,右边是顺时针方向。
小南一边艰难地辨认着玩具小人,一边数着:
singer朝内,左数第3个是archer。
archer朝外,右数第1个是thinker。
thinker朝外,左数第2个是writer。
“所以眼镜藏在writer这里!
”虽然成功找回了眼镜,但小南并没有放心。
如果下次有更多的玩具小人藏他的眼镜,或是谜题的长度更长,他可能就无法找到眼镜了。
所以小南希望你写程序帮他解决类似的谜题。
这样的谜题具体可以描述为:
有n个玩具小人围成一圈,已知它们的职业和朝向。
现在第1个玩具小人告诉小南一个包含m条指令的谜题,其中第i条指令形如“左数/右数第si个玩具小人”。
你需要输出依次数完这些指令后,到达的玩具小人的职业。
【输入格式】从文件toy.in中读入数据。
输入的第一行包含两个正整数n,m,表示玩具小人的个数和指令的条数。
接下来n行,每行包含一个整数和一个字符串,以逆时针为顺序给出每个玩具小人的朝向和职业。
其中0表示朝向圈内,1表示朝向圈外。
保证不会出现其他的数。
字符串长度不超过10且仅由小写字母构成,字符串不为空,并且字符串两两不同。
整数和字符串之间用一个空格隔开。
接下来m行,其中第i行包含两个整数ai,si,表示第i条指令。
若ai=0,表示向左数si个人;
若ai=1,表示向右数si个人。
保证ai不会出现其他的数,1≤si<
n。
【输出格式】输出到文件toy.out中。
输出一个字符串,表示从第一个读入的小人开始,依次数完m条指令后到达的小人的职业。
【样例1输入】
7
3
0
singer
reader
0mengbier
1thinker
1
archer
0writer
1mogician
2
【样例1输出】
writer
cstdio>
intn,m,p,q,t=0;
intd[100005];
strings[100005];
toy.in"
toy.ans"
n>
m;
for(inti=0;
d[i]>
s[i];
p>
q;
if((d[t]==0&
&
p==0)||(d[t]==1&
p==1))//逆时针
t=(t-q+n)%n;
elseif((d[t]==1&
p==0)||(d[t]==0&
p==1))//顺时针
t=(t+q)%n;
s[t]<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 入门 培训 讲义