1、威海市第一中学研究性学习成果展示课题名称c+语言入门 指导教师柳鑫伟班级学科负责人其他成员团队照片电话 电子邮件一、研究背景 信息技术作为当前先进生产力的代表,已经成为我国积极发展的重要支柱和网络强国的重要支撑,信息技术涵盖了获取、信息、表示、传输、贮存、和信息加工在内的各种技术,自己计算机问世以来,信息技术沿着以计算机、互联网,再到以大数据为核心的发展脉络,深刻影响着社会的经济基础和技术创新,推动着社会信息化、智能化的发展,重塑着人们交流沟通的时间观念和空间观念。而我们处于云计算,大数据,人工智能,互联网+的时代,现在的生活工作离不开信息学。 信息学的根基就是算法,数据结构,程序设计。二、研
2、究目的与意义 C+由美国 AT /名字空间,采用标准名字空间int main() /主函数,是所有 C+程序的运行起始点【例 1.1】在屏幕上输出“Hello World!” 。#includeusing namespace std; int main()cout告诉编译器的预处理器将输入输出流的标准头文件(iostream)包括在本程序中。这个头文件包括了 C+中定义的基本标准输入输出程序库的声明。3、using namespace std使用 std(标准)名字空间的意思。所谓的名字空间是标准 C+中的一种机制,用来控制不同类库的冲突问题。使用它可以在不同的空间内使用相同名字的类或者函数。
3、4、int main( )这一行为主函数(main function)的起始声明。main() 是所有 C+程序的运行的起始点。不管它是在代码的开头,结尾还是中间,此函数中的代码总是在程序开始运行时第一个被执行。所有 C+程序都必须有一个 main(),int main()。main 后面跟了一对圆括号( ),表示它是一个函数。C+中所有函数都跟有一对圆括号( ),括号中可以有一些输入参数。注意,圆括号中即使什么都没有也不能省略。如例题中显示,主函数 main()中的内容,由一对花括号 括起来。 5、cout /使用 cin,cout,须调用 iostream 库using namespace
4、 std;5int main()int x,y; /定义整型变量 coutx; /输入小朋友的人数y=10*x; /计算总票价coutusing namespace std; int main() int s,h,up,down; up=15; down=25; h=2*150/up; s=(up+down)*h/2; cout /使用 cin,cout,须调用 iostream 库using namespace std; int main()char a; /定义字符变量 cina; /输入给定一个字符 cout /使用 cin,cout,须调用 iostream 库using namesp
5、ace std;int main() int a,b,c; /定义三个变量coutab; /输入 A、B 的值c=a; a=b; b=c; /交换 A、B 的值cout)、小于(=)、小于等于()六种。5.赋值运算符用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(int main() int x,y,z1,z2;x=7; y=8;z1=y-(x+); /计算 z1=1,计算后 x=8z2=y-(+x); /计算前 x 的值自加 1,x 的值为 9,再与 y 求差cout)、小于 (=) 、小于等于(n2; /n3 的值为_ n3=n1关系运算逻辑
6、运算逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下:1.与运算 (ab)=c;b+cb; f=abc;第三节 常量和变量一、常量常量是指在程序中使用的一些具体的数、字符。在程序运行过程中,其值不能被更改。11如 123,145.88,m,TRUE 等。1、整型常量:如 3、-5、0 等。整型常量是表示整数的常量。有三种表示形式:1)十进制形式。如 99、-1。2)八进制形式。以数字 0 打头,由 0-7 构成,如 012,表示八进制整数 12,即 12(8)。3)十六进制形式。以 0x 打头,如 0x12A,表示十六进制整数 12A,即 12A(16)。2、实型常
7、量:如 3.1、-6.1E+2(科学记数法) 。3、字符常量:是用单引号括起来的字符,如 k 、5 、%。注意:a与“a“表示的含义是不同的,a表示一个字符常量,“a“表示一个字符串。一个常量可以直接调用(如 124,A) ,也可以给常量取个名字用一个标识符代表它,这就是符号常量。其语法格式为:const 类型说明符 常量名=常量字符;例如:const double PI=3.1415926;或者 类型说明符 const 常量名=常量字符;例如 :double const PI=3.1415926;可写在主函数之前,也可以写在主函数中二、变量定义变量代表了一个存储单元,其中的值是可以改变的,因
8、此称为变量。一个程序中可能要使用到若干个变量,为了区别不同的变量,必须给每个变量(存储单元)取一个名(称为变量名) ,该变量(存贮单元)存储的值称为变量的值,变量中能够存储值的类型为变量的类型。1.变量名用一个合法的标识符代表一个变量。如 n,m,rot,total 等都是合法变量名。在程序中用到的变量要“先定义后使用” ,变量名应遵循自定义标识符的命名规则,并建议使用“见名知义”的原则,即用一些有意义的单词作为变量名。在 C+语言,变量名大小写有区别。用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。C+语言规定,标识符只能由字母或下划线“_”开头,后面的字
9、符可以是字母或数字。对于标识符的长度,不同的 C+语言编译器有不同的规定,考虑到系统的可移植性,建议变量名的长度不要超过 8 个字符。例如:month、_age、s2 为合法的标识符;m.k.jack、a /调用 iostream 库using namespace std; const double PI=3.14; /PI 是符号常量。代表 3.14int main()float r,c,s; /定义实型变量coutr; /输入 r 的值c=2*PI*r; /计算圆的周长s=PI*r*r; /计算圆的面积cout库函数格式语法:printf(格式控制字符串,输出表达式 1,输出表达式 2,)
10、 ;其中格式控制字符串由两部分构成,格式说明字段和普通字符(包括转义字符) 。一个格式说明字段将引起一个输出参数项的转换与显示,它由%引出格式说明字段,格式说明字段与后面的输出表达式参数要对应一致。int a=975311; printf(“%d”,a);输出结果 975311double a=123.456; printf(“%f”,a);输出结果 123.456000(默认 6 位精度)控制精度,输出 8 位小数13printf(“%.8f”,a);加修饰字符串,输出“面积=123.1234567”printf(“面积=%.7f”,a);输出百分号printf(“%”);【例 2.5】输入
11、半径 r,求圆的周长及面积。 ( 取 3.1415926)要求结果保留 7 位小数输入样例:r=5输出样例:周长=31.4159360,面积=78.5398178#include /调用 iostream 库#includeusing namespace std; const double PI=3.1415926; /PI 是符号常量。代表 3.1415926int main() const double PI=3.1415926; float r,c,s; /定义实型变量coutr; /输入 r 的值c=2*PI*r; /计算圆的周长s=PI*r*r; /计算圆的面积printf(“周长=
12、%.7f ,面积=%.7fn”,c,s); /显示计算结果,【练习 3.1】甲流疫情死亡率甲流并不可怕,在中国,它的死亡率并不是很高。请根据截止 2009 年 12 月 22 日各省报告的甲流确诊数和死亡数,计算甲流在各省的死亡率。输入:输入仅一行,有两个整数,第一个为确诊数,第二个为死亡数。输出:输出仅一行,甲流死亡率,以百分数形式输出,精确到小数点后 3 位。样例输入:10433 60样例输出:0.575%【练习 3.2】计算多项式的值对于多项式 f(x) = ax3+bx2+cx+d 和给定的 a,b,c,d,x,计算 f(x)的值,保留到小数点后 7 位。输入:输入仅一行,包含 5 个
13、实数,分别是 x,及参数 a、b、c、d 的值,每个数都是绝对值不超过 100 的双精度浮点数。数与数之间以一个空格分开。输出:输出一个实数,即 f(x)的值,保留到小数点后 7 位。样例输入:2.31 1.2 2 2 3样例输出:33.0838692【练习 3.3】温度表达转化利用公式 c= 5*(f-32)/9(其中 c 表示摄氏温度,f 表示华氏温度)进行计算转化,输入华氏温度 f,输出摄氏温度 c,要求精确到小数点后 5 位。输入:输入一行,包含一个实数 f,表示华氏温度。 (f = -459.67)输出:输出一行,包含一个实数,表示对用的摄氏温度,要求精确到小数点后 5 位。样例输入
14、:4114样例输出:5.00000【练习 3.4】与圆相关的计算给出圆的半径,求圆的直径、周长和面积。输入圆的半径实数 r,输出圆的直径、周长、面积,每个数保留小数点后 4 位。输入:输入包含一个实数 r(0 using namespace std;int main() char c1,c2;c1=a;c2=A;15coutusing namespace std;int main() int x; short y; cout#includeusing namespace std;C+语言标准函数库提供了许多标准输入、输出函数,本节将介绍 6 个最基本的输入、输出函数:字符输入 getchar,
15、字符输出 putchar,格式化输入 scanf,格式化输出printf,流输入 cin,流输出 cout。一、字符输入函数 getchargetchar 函数是接收从键盘输入的单个字符数据。其语法格式为:getchar(void);/ void 无效的,空的【说明】1)通常把输入的字符赋予一个字符变量,构成赋值语句。例如:char ch;ch=getchar();2) getchar 函数只能接受单个字符,输入数字也按字符处理。3)输入多于一个字符时,只接收第一个字符。4) getchar 函数等待用户输入,直到按回车键才结束,可用于暂停程序的运行,直到输入一个回车键。5)如果在程序中连续有
16、两个以上 getchar()函数,应该一次性输入所需字符,最后再按回车键,否则会把回车作为一个字符传给后面的 getchar()函数。18【例 5.1】利用 getchar 函数接收键盘输入。#include#includeusing namespace std;int main() char ch;ch=getchar();/读入字符cout#includeusing namespace std;int main()char c=B; /定义字符变量 c 并赋值Bputchar(c); /输出该字符putchar(66); /用 10 进制 ASCII 码值输出字母B运行结果:BB【练习 5
17、.1】利用 getchar 和 putchar 语句连续输入字符并输出到屏幕输入样例:asd输出样例:asd三、通过 cout 流输出数据流插入运算符和 cin 结合在一起使用,可从键盘输入数据。格式 1:功能:是从键盘读取一个数据并将其赋给“变量” 。20说明:在使用 cin 输入的时候必须考虑后面的变量类型。如果你要求输入一个整数,在 后面必须跟一个整型变量,如果要求一个字符,后面必须跟一个字符型变量。【例 5.7】声明一个整型变量 age 然后等待用户从键盘输入到 cin 并将输入值存储在这个变量中。int age;cin age; 也可以连续使用,实现从键盘对多个变量输入数据。例如 c
18、in a b; 等同于:cin a;cin b; 格式 2:这要求从键盘输入的数据的个数、类型与变量相一致。从键盘读取数据时,各数据之间要有分隔符,分隔符可以是一个或多个空格键、回车键等。【例 5.8】流读取运算符和 cin 的使用#includeusing namespace std;int main( ) char c;int i ;float x,y;coutixy;c=i;coutusing namespace std;int main()21int a;scanf(“%d”,printf(“%d”,a);六、格式化输出函数 printf printf 函数的功能是格式化输出任意数据列
19、表,其一般调用格式为:printf(格式控制符,输出列表)【说明】1)格式控制由输入格式说明和普通字符组成,必须用双引号括起来。格式说明由%和格式字符组成,作用是将要输出的字符转换为指定的格式,如%d,%c 等。普通字符是在输出时原样输出的字符,一般在显示时起提示作用。2)输出列表是需要输出的一组数据(可以为表达式和变量) ,各参数之间用“, ”分开。要求格式说明和各输出项在数量和类型上要一一对应,否则将会出现意想不到的错误。七、几种输入输出格式的几点说明1、cin 和 cout 在 Dev C+中只能调用库,而其他输入输出格式要调用库或库。2、cin 和 cout 属于 C+的概念,调用时涉
20、及输入输出流,而 scanf 和 printf 属于 C的概念,是 C 语言的标准输入/输出库中的函数,所以在时效上,scanf 和 printf 优于cin、cout,对于大数据的输入输出,通常情况下应该用 scanf、printf。3、对于普通数据的输入输出,cin 和 cout 比较方便,而在格式化方面,scanf 和printf 比较容易。cin 效率比 scanf 低很多,尤其输入数据达到 20 万以上时非常明显,在 100 万时 cin 读入就会超时。 4、scanf 和 printf 也缺点,cin 和 cout 能够自动识别变量的数据类型,因此,在进行输入输出时,不需要指定数据
21、类型,printf 和 scanf 函数在输入输出时需指定数据类型。格式化输入输出训练1.输出保留 3 位小数的浮点数读入一个单精度浮点数,保留 3 位小数输出这个浮点数。输入:只有一行,一个单精度浮点数。输出:也只有一行,读入的单精度浮点数。样例输入:12.34521样例输出:12.3452.输出保留 12 位小数的浮点数22读入一个双精度浮点数,保留 12 位小数,输出这个浮点数。输入:只有一行,一个双精度浮点数。输出:也只有一行,保留 12 位小数的浮点数。样例输入:3.1415926535798932样例输出:3.1415926535803.空格分隔输出读入一个字符,一个整数,一个单精
22、度浮点数,一个双精度浮点数,然后按顺序输出它们,并且要求在他们之间用一个空格分隔。输出浮点数时保留 6 位小数。输入:第一行是一个字符;第二行是一个整数;第三行是一个单精度浮点数;第四行是一个双精度浮点数。输出:输出字符、整数、单精度浮点数和双精度浮点数,之间用空格分隔。样例输入: a 122.33.2样例输出:a 12 2.300000 3.2000004.输出浮点数读入一个双精度浮点数,分别按输出格式“%f” , “%f”保留 5 位小数, “%e”和“%g”的形式输出这个整数,每次在单独一行上输出。输入:一个双精度浮点数。输出:第一行是按“%f”输出的双精度浮点数;第二行是按“%f”保留
23、 5 位小数输出的双精度浮点数;第三行是按“%e”输出的双精度浮点数;第四行是按“%g”输出的双精度浮点数。样例输入:12.3456789样例输出:12.34567912.345681.234568e+00112.34575.字符菱形给定一个字符,用它构造一个对角线长 5 个字符,倾斜放置的菱形。输入:输入只有一行, 包含一个字符。输出:该字符构成的菱形。样例输入:*样例输出:*23*第六节 顺序结构程序练习1.A*B 问题输入两个正整数 A 和 B,求 A*B 的值。注意乘积的范围和数据类型的选择。输入:一行,包含两个正整数 A 和 B,中间用单个空格隔开。1 = A,B = 50000。输
24、出:一个整数,即 A*B 的值。样例输入:3 4样例输出:122.计算 2 的幂给定非负整数 n,求 2n 的值,即 2 的 n 次方。输入:一个整数 n。0 = n 31。输出:一个整数,即 2 的 n 次方。样例输入:3样例输出:8【选做】3.分糖问题某幼儿园里,有 5 个小朋友编号为 1,2,3,4,5,他们按自己的编号顺序围坐在一张圆桌旁。他们身上都有若干个糖果(键盘输入) ,现在他们做一个分糖果游戏。从 1 号小朋友开始,将自己的糖果均分三份(如果有多余的糖果,则立即吃掉) ,自己留一份,其余两份分给他的相邻的两个小朋友。接着 2 号、3 号、4 号、5 号小朋友同样这么做。问一轮后
25、,每个小朋友手上分别有多少糖果。样例输入:8 9 10 11 12 样例输出:11 7 9 11 64.反向输出三位数输入一个三位数,要求把这个数的百位数与个位数对调,输出对调后的数。样例输入:234样例输出:n=4325.求平均分已知某班有男同学 x 位,女同学 y 位,x 位男生平均分是 87 分,y 位女生的平均分是85,问全体同学平均分是多少分?(结果保留四位小数)6.评委打分歌手大奖赛上 6 名评委给一位参赛者打分,6 个人打分的平均分为 9.6 分;如果去掉一个最高分,这名参赛者的平均分为 9.4 分;如果去掉一个最低分,这名参赛者的平均分为 9.8 分;如果去掉一个最高分和一个最
26、低分,这名参赛者的平均是多少(保留两位小数)?7.海伦公式传说古代的叙拉古国王海伦二世发现的公式,利用三角形的三条边长来求取三角形面积。已知ABC 中的三边长分别为 a,b,c,求ABC 的面积,结果保留三位小数。(提示:海伦公式24)()(cpbaps,其中 p=(a+b+c)/2 )。【选做】8.分钱游戏。甲、乙、丙三人共有 24 元钱,先由甲分钱给乙、丙两人,所分给的数与各人已有数相同;接着由乙分给甲、丙,分法同前;再由丙分钱给甲、乙,分法亦同前。经上述三次分钱之后,每个人的钱数恰好一样多。 求原先各人的钱数分别是多少?【选做】9. 求一元二次方程求一元二次方程 x2+3x+2=0 的两
27、个实数根。结果保留 3 位小数。10.计算浮点数相除的余计算两个双精度浮点数 a 和 b 的相除的余数,a 和 b 都是双精度浮点数。这里余数(r)的定义是:a=k*b+r,其中 k 是整数,0=rb。输入: 输入仅一行,包括两个双精度浮点数 a 和 b。输出:输出也仅一行,ab 的余数 样例输入:73.263 0.9973样例输出:0.4601【选做】11.计算球的体积对于半径为 r 的球,其体积的计算公式为 V=4/3*r3,这里取 =3.14。现给定 r,即球半径,类型为 double,求球的体积 V,保留到小数点后 2 位。输入:输入为一个不超过 100 的非负实数,即球半径,类型为
28、double。输出:输出一个实数,即球的体积,保留到小数点后 2 位。样例输入:4样例输出:267.95【选做】12.反向输出一个五位数将一个三位数反向输出,例如输入 358,反向输出 853。输入: 一个三位数 n。输出:反向输出 n。样例输入:100000样例输出:00000113.大象喝水一只大象口渴了,要喝 20 升水才能解渴,但现在只有一个深 h 厘米,底面半径为 r 厘米的小圆桶(h 和 r 都是整数)。问大象至少要喝多少桶水才会解渴。输入:输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深 h 和底面半径 r,单位都是厘米。输出:输出一行,包含一个整数,表示大象至少要喝
29、水的桶数。样例输入:23 11样例输出:3【选做】14.计算线段长度已知线段的两个端点的坐标 A(Xa,Ya),B(Xb,Yb),求线段 AB 的长度,保留到小数点后 3 位。输入:第一行是两个实数 Xa,Ya ,即 A 的坐标。第二行是两个实数 Xb,Yb,即 B 的坐标。输入中所有实数的绝对值均不超过 10000。输出:一个实数,即线段 AB 的长度,保留到小数点后 3 位。25样例输入:1 12 2样例输出:1.414【选做】15.计算三角形面积平面上有一个三角形,它的三个顶点坐标分别为(x1, y1), (x2, y2), (x3, y3),那么请问这个三角形的面积是多少,精确到小数点
30、后两位。输入:输入仅一行,包括 6 个单精度浮点数,分别对应 x1, y1, x2, y2, x3, y3。输出:输出也是一行,输出三角形的面积,精确到小数点后两位。样例输入:0 0 4 0 0 3样例输出:6.00【选做】16.等差数列末项计算给出一个等差数列的前两项 a1,a2,求第 n 项是多少,输入:一行,包含三个整数 a1,a2,n。输出:一个整数,即第 n 项的值。样例输入:1 4 100样例输出:298十一、评价自我评价一直以来,我就对编程很感兴趣,所以参加了 c+语言基础班的学习,这个研究性学习虽然压力很大,但是给我打开了一个新的视野,我学会了使用计算机语言来解决问题,锻炼了我的思维能力,这是一个很神奇的事情。在学习的过程中,我和我的小伙伴相互配合,相互帮助,共同进步,每次运行新的程序成功的时候,都有有一种成绩感。我自己感觉到这个学习锻炼了我的毅力,磨练了我的意志,也为我将来学习计算机相关知识打下了坚实的基础。成员相互评价某某同学在这次学习中表现出认真学习新的知识、积极思考的一些优秀品质,得到了全体同学的认可。26指导教师评价某某同学在本次活动中,积极参与,思维很活跃,表现出了顽强的毅力和探索精神,圆满地完成了课题的研究任务,希望在今年的学习中继续保持这种劲头!十二、活动原始集料(调查问卷、访谈记录、观察记录、活动照片等) (可以另附页)2728