搜档网
当前位置:搜档网 › C++C经典教程(十)

C++C经典教程(十)

C++C经典教程(十)
C++C经典教程(十)

C++/C经典教程(十)

第十章类的继承与组合

对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象设计的重点是类的设计,而不是对象的设计。

对于C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。本章仅仅论述“继承”(Inheritance)和“组合”(Co mpositio n)的概念。

注意,当前面向对象技术的应用热点是COM和CORBA,这些内容超出了C++教材的范畴,请阅读COM和CORBA相关论著。

10.1 继承

如果A是基类,B是A的派生类,那么B将继承A的数据和函数。例如:

class A

{

public:

void Func1(void);

void Func2(void);

};

class B : public A

{

public:

void Func3(void);

void Func4(void);

};

main()

{

B b;

b.Func1(); // B从A继承了函数Func1

b.Func2(); // B从A继承了函数Func2

b.Func3();

b.Func4();

}

这个简单的示例程序说明了一个事实:C++的“继承”特性可以提高程序的可复用性。正因为“继承”太有用、太容易用,才要防止乱用“继承”。我们应当给“继承”立一些使用规则。

l l 【规则10-1-1】如果类A和类B毫不相关,不可以为了使B的功能更多些而让B继承A的功能和属性。不要觉得“白吃白不吃”,让一个好端端的健壮青年无缘无故地吃人参补身体。

l l 【规则10-1-2】若在逻辑上B是A的“一种”(a kind of ),则允许B继承A的功能和属性。例如男人(Man)是人(Human)的一种,男孩(Bo y)是男人的一种。那么类Man可以从类Human派生,类Bo y可以从类Man派生。

class Human

{

};

class Man : public Human

{

};

class Boy : public Man

{

};

u u 注意事项

C语言从入门到精通所需的7本书

C语言从入门到精通所需的7本书 作者:王霸羔子 1.C primer plus C primer plus作为一本被人推崇备至的c入门经典,C primer plus绝非浪得虚名。应该算得上C教材里最好的入门书了。 在知识广度上,很少有书能匹及。它能为你系统学习c提供一个良好的平台。作者对c 的见解精辟。在娓娓叙述的同时,作者辅以大量程序以分析。它让我对C有了更加系统的全新认识。决非国人所写的那些公理化的教条说教,我觉得作者把自己的心血全部吐露。书很厚,近700页,却不没有让我觉得任何的烦琐。甚至是兴趣盎然。我把上面所有的课后题目都做了。 最为重要的是,看完这本书后,我再也不觉得c很高深枯燥无味了。如果你问我,你最大收获是什么。我会告诉你,兴趣! 2.The C programming language

拿到这本薄薄的书,很多人开始怀疑,C语言是这么几百页能讲清楚的么。看完这本书,我想答案已经很明了,却真的让人感到震憾。什么是好书?无法删减的书才是真正的好书。 K&R的书一如C语言的设计理念:简单而高效里面的习题建议都认真做一遍,而且是在linux下用vi来做,用makefile来编译,用shell脚本来进行测试,本来第八章的题就是和linux 相关的计算机的大学生们不应只会在WINDOWS下用VC来编程,而都应该在linux环境下进行程序设计,因为linux本身就是为开发者准备的操作系统。 3. C和指针 这本书最大的特点就是和指针结合在一起进行讲解,通过一些经典的C例题对所学的知识进行巩固,对指针的基础和深入的探讨,有助于初学者更好的理解C语言,还有明白C 的存储机制。我之前买了《C语言详解》和《C Primer Plus》结合这本书一起学习,可以说是完美的,希望每个热爱C语言的人能够拥有这本书。 我在这里推荐给所有想学好C语言的朋友! 4.C专家编程

摄影入门所有基础知识

摄影入门的所有基础知识 第一课: 数码相机光圈、快门解释及应用 光圈: 光圈的大小是相机镜头中控制光线的参数。说得直白一些,光圈的大小将决定光线穿过镜头的强弱。因此大家可以很容易地想像到,光圈越大其透过镜头投影到数码相机感光器上的光线也就越强,反之则越弱。那么它的大小也将直接影响到我们拍摄出的数码照片的成像质量。比如在快门时间相同的情况下,光圈越大则相片越亮,假如光圈过大的话,则会出现曝光过度的情况。无论对于传统相机还是数码相机,光圈都使用字母“f”来表示,而光圈中心孔径的大小则用相应的数值来表示,即“f+数值”。在使用中,值得大家注意的是,光圈的数值越小,代表光圈的孔径越大,进光量越多,反之则进光量越少。所以,通常在拍摄时所说的“加大光圈”是指把光圈的数值调小,将光孔加大的意思。比如从f 5.6调大一级到f4、或更大一级的f2.8等。 光圈从关闭到打开的差异,以及使用不同光圈数值所对光圈大小产生的影响。从图左上至右下分别是光圈处于关闭、f11、f8及f4不同状态下的光圈大小。由此,我们也可以理解光圈越大,投影到数码相机感光器上的光线也就越强的道理。 快门: 快门的速度也是拍摄照片时控制曝光时间长短的参数。为了让大家更容易理解,我们也可以把快门说成是让相机保持当前设定光圈大小的控制时间。对于快门速度的表示方法,也是使用相应的数字来进行设定,比如1/4秒、1/60秒等。它们分别表示让当前设定的光圈孔径大小保持1/30秒、1/60秒的时间。因此,大家也从中不难看出,使用不同的快门参数来保持单位光圈孔径的时间长短,也同样可以控制拍摄时的进光量,即曝光度。而上面提到的1/30秒便是1/60秒的两倍时间,而此时它们通过单位光圈孔径的光量也是成两倍的关系,那么反过来1/30秒则是1/15秒的二分之一时间,通过单位光圈孔径的光量则将会缩减一半。 在实际拍摄中,我们可以通过对快门速度的调节来实现不同的效果,比如看起来流动的“车河”或凝固的水滴等,它们便分别是使用慢速快门和高(快)速快门来实现的。当然,在使用时还要注意快门与光圈的合理配合,这点我们以后将要向大家重点介绍的。 下面讲一下在实际应用中应该如何协调它们之间的关系来更好地达到照片

C语言打字练习程序课程设计报告

青岛理工大学 《C语言程序设计》 题目打字练习程序 指导教师:李兰老师 姓名: 学号:2011 班级: 专业:计算机科学 地点:现代教育中心机房201 时间:2012.6.26 至2012.6.29

一、内容 本程序主要实现的是对使用者的打字速度进行练习和提高。因为界面友好亲和,因此能让使用者在轻松愉快中练习并快速提高自己的打字速度和准确性。程序主要的功能有记录使用者在本次使用中的击中数和总下落字母的个数之比。并且游戏设置了九个等级,随着数字的增加,等级越高,字母下落的速度逐步提高,这样能够更好的迎合不同水平的用户需求。使用本程序很简单,因为在写代码时,我很注重的是界面的友好,所以,在用户的每次操作前,界面上都有详细的操作提醒,只要跟着提示输入就能很快速地进入并开始练习。 二、上机环境 操作系统:windows XP(win7兼容) 开发工具:VC6.0 三、函数调用关系图 void main( ) start( ) printfScreen( ) levelChoice( ) newWord ( ) moving( ) wordHit( ) result( ) leave( )

四、各函数功能说明 1、void main( ) 主函数 2、void printScreen( ) 刷新屏幕函数 3、int levelChoice( ) 游戏等级选择函数 4、int newWord( ) 生成新字符函数 5、int moving( ) 字符下降函数 6、int wordHit( ) 击中字符函数 7、int result ( ) 结果输出函数 8、int start( ) 程序开始提示操作 9、void leave( ) 函数结束

C语言初学者的几个经典习题

1.求两个数的最小公倍数: #include void main() { int a,b, num1,num2,temp; printf("请输入两个数:\n"); scanf("%d%d",&num1,&num2); if (num1 int sum_day(int year,int month,int day); void main() { int year,month,day;int days; printf("请输入要查询的年月日\n"); scanf("%d%d%d",&year,&month,&day); days=sum_day(year,month,day); printf("该天是%d天\n",days); } int tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int sum_day(int year,int month,int day) { int i,days=0; if(year%4==0&&year%100!=0||year%400==0) tab[2]=29; for(i=1;i int isprime (int a); void main()

C语言入门经典(第四版)8-程序的结构

本文由泽五令贡献 ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 C入门经典(第4版) 入门经典( 第08章 程序的结构 08章 如第1 如第1章所述,将程序分成适度的自包含单元是开发任一程序的基本方式. 当工作很多时,最明智的做法就是把它分成许多便于管理的部分,使每一部分 能很轻松地完成,并确保正确完成整个工作.如果仔细设计各个代码块,就可 以在其他程序中重用其中的一些代码块. . C入门经典(第4版) 入门经典( 8.1 程序的结构 如概述所言,C程序是由许多函数组成的,其中最重要的就是函数main(), 如概述所言,C程序是由许多函数组成的,其中最重要的就是函数main(), 它是执行的起点.本书介绍库函数printf()或scanf()时,说明了一个函数可以调 它是执行的起点.本书介绍库函数printf()或scanf()时,说明了一个函数可以调 用另一个函数,完成特定的工作,然后调用函数继续执行.不考虑存储在全局 变量中的数据的负面影响,程序中的每个函数都是一个执行特定操作的自包含 单元 . 变量的作用域和生存期 变量的作用域和函数 C入门经典(第4版) 入门经典( 8.1.1 变量的作用域和生存期 .1.1 在前面所有的例子中,都是在定义main()函数体的起始处声明程序的变量. 在前面所有的例子中,都是在定义main()函数体的起始处声明程序的变量. 事实上,可以在任何代码块的起始处定义变量.这有什么不同吗?这是绝对不 同的.变量只存在于定义它们的块中.它们在声明时创建,在遇到下一个闭括 号时就不存在了 . C入门经典(第4版) 入门经典( 8.1.2 变量的作用域和函数 .1.2 在讨论创建函数的细节之前,最后要讨论的是,每个函数体都是一个块 (当然,它可能含有其他块).因此,在一个函数内声明的自动变量是这个函数 当然,它可能含有其他块) 的本地变量,在其他地方不存在.所以在一个函数内部声明的变量完全独立于 在其他函数内声明的变量.可以在不同的函数内使用相同的变量名称,它们是 完全独立的. C入门经典(第4版) 入门经典( 8.2 变量的作用域和函数 本书的程序广泛使用了内置函数,例如printf()或strcpy().还介绍了在按 本书的程序广泛使用了内置函数,例如printf()或strcpy().还介绍了在按 名称引用内置函数时如何执行它们,如何通过函数名称后括号内的参数,给函 数传递信息.例如printf()函数的第一个参数通常是一个字符串,其后的参数 数传递信息.例如printf()函数的第一个参数通常是一个字符串,其后的参数 (可能没有)是一系列变量或要显示其值的表达式 . 可能没有) 定义函数 Return语句 Return语句 C入门经典(第4版) 入门经典( 8.2.1 定义函数 创建一个函数时,必须指定函数头作为函数定义的第一行,跟着是这个 函数放在括号内的执行代码.函数头后面放在括号内的代码块称为函数体. C入门经典(第4版) 入门经典( 8.2.2 return语句 return语句 return语句允许退出函数,从调用函数中发生调用的那一点继续执行. return语句允许退出函数,从调用函数中发生调用的那一点继续执行. return语句最简单的形式如下: return语句最简单的形式如下: return; C入门经典(第4版) 入门经典( 8.3 按值传递机制 这个重点是:valuel和value2的副本作为变元传送给函数,而没有传送变 这个重点是:valuel和value2的副本作为变元传送给函数,而没有传送变 量本身.也就是说,函数不能改变存储在value1或value2中的值.例如,如果 量本身.也就是说,函数不能改变存储在value1或value2中的值.例如,如果 给两变量输入4.0和6.0,编译器会在堆栈上创建这两个值的副本,在调用 给两变量输入4.0和6.0,编译器会在堆栈上创建这两个值的副本,在调用 average()函数时,average()函数会访问这些副本.这个机制是C average()函数时,average()函数会访问这些副本.这个机制是C语言中给函 数传送变元值

最新最全标准C语言程序设计第五版课后基础练习题复习答案完整版.doc

课后练习题答案 Chapter 1 1.1×√×√√×√××√ 1.2b c 1.3ad 1.4semicolon printf math.h \n Chapter 2 2.1 ×√××√√×√××√× 2.2 typedef 255 external const Chapter 3 3.1 ×√××√√×××√√√ 3.2 integer modula 6 logical sizeof paratheses typeconversion precedence 3.3 F F T F F F 3.4 F T T T F 3.5 (b) (c) 3.6 0 -2 7 10.25 false 3 3 1 3.10 0 1 1 1 1 3.11 d } 100 3.12 110 111 3.13 1 3.14 200 3.15 x<=y 3.16 TRUE 3.19 2 1 4 3.20 -40 40 Chapter 4 4.1 ×√√√√√××√√√× 4.2 %hd %x ctype.h %l %*d [^] blank 6 - %e 4.4 (a) scanf(“%d %c %d”, &a, &b, &c); (b)scanf(“%d %f %s”, &a, &b, &c); (c) scanf(“%d-%d-%d”, &a, &b, &c); (d) scanf(“%d %s %d”, &a, &b, &c);

4.5 (a)10x1.230000 (b)1234x 1.23 (c)1234 456.000000 (d) “123.40 ” (e) 1020 1222(乱码) 4.7 (a)1988 x (b)乱码(c)120 乱码(d)乱码 x 4.8 (a)1275 -23 5.740000 (b) 1275 -235.740000 (c) 0 0.000000 (d) 1275xxxx-235.74 (e)Cambridge (f)1275 Cambridge 4.10 1988 无无 Chapter 5 5.1 √×√××××××√ 5.2 && switch break if-else x=y 5.4 (a)x = 2; y = 0; (b) x = 1; y = 0; 5.5 (a) if (grade <= 59) if (grade >= 50) second = second + 1; (b) if (number > 100) printf(“out of range”); else if (number < 0) printf(“out of range”); else sum = sum + number; (c) if (T > 200) printf(“admitted”); else if (M > 60) {if (M > 60) printf(“admitted”);} else printf(“not admitted”); 5.6 F T F T 5.8 (a) x > 10 (b) (x != 10)||(y ! = 5) || (z >= 0) (c) (x + y != z) || (z > 5) (d) (x > 5) || (y != 10) || (z >= 5) 5.9 (a) x = 5; y = 10; z = 1 (b) x = 5; y = 10; z = 1 (c) x = 5; y = 0; z =0 (d) 无变化 5.10 (a) x= 0; y = 2; z = 0; (b) x = 1; y = 2; z = 0; 5.12 8 5.13 Delhi Bangalore END 5.14 2 4 4 8 5.15 0 0 2 5.16 25 5.17 Number is negative 5.18 ABC

数码摄影入门基础知识

数码摄影入门基础知识 1、在相机的参数表中,有类似F2.8-4/? 甚至F3.5 - F5 / F7.6 - F11表示什么意思? 答:相机镜头的光圈F值,并不仅仅是一个孔径的问题,实际表示的是通光量,还和镜头的焦距等因素有关,是个相对值。对于一般的变焦镜头,即使光圈的物理孔径不变,焦距变长时通光量会变小,光圈F值也变小。F3.5 - F5 / F7.6 - F11表示:最大光圈在广角端,焦距最短时为F2.8,在长焦端,焦距最长时为F5;最小光圈在广角端,焦距最短时为F7.6,在长焦端,焦距最长时为F11。 当然,高级的专业镜头有的是恒定光圈,即F值不随焦距变化,其实那是在变焦时,光圈的物理口径相应在变。恒定光圈的镜头要比同质量的一般镜头贵很多。 2、为什么数码相机的最小光圈都不够小,比如C-700是F8、N995是F10,而传统相机中动辄F11、F16甚至F22为什么? 答:我们平时所说的光圈值F2.8、F8、F16等是光圈“系数”,是相对光圈,并非光圈的物理孔径,与光圈的物理孔径及镜头到感光器件(胶片或CCD或CMOS)的距离有关。 当光圈物理孔径不变时,镜头中心与感光器件距离愈远,F数愈小,反之,镜头中心与感光器件距离愈近,通过光孔到达感光器件的光密度愈高,F数就愈大。 多数非专业数码相机镜头的焦距短、物理口径很小,F8时光圈

的物理孔径已经很小了,继续缩小就会发生衍射之类的光学现象,影响成像。所以一般非专业数码相机的最小光圈都在F8至F11,而专业型数码相机感光器件面积大,镜头距感光器件距离远,光圈值可以很小。 3、什么是包围式曝光?如何使用? 答:包围式曝光(Bracketing)是相机的一种高级功能。尽管测光技术日臻完善,由于光线条件、被摄主体千变万化,仍可能会有测光偏差。为了防止因测光失误而错失重要拍摄主题,在许多高档传统相机中就已经引入了包围式曝光功能,就是当你按下快门时,相机不是拍摄一张,而是以不同的曝光组合连续拍摄多张,从而保证总能有一张符合摄影者的曝光意图。 在数码相机中,不但引入了针对曝光量的包围式曝光,有的相机甚至可以针对白平衡、对焦等进行包围式拍摄。 4、自动曝光模式下怎样调整曝光量? 答:虽然相机自动测光的技术日益完善,中央重点测光、分区测光等智能化程度越来越高,但是机器毕竟是机器,仍然有测不准的时候,如果被摄物亮度分布不均匀,如在明亮的背景前面拍人物的逆光照,很容易受背景亮度的影响而使人物曝光不足,这时可使用AE锁或曝光补偿来解决这类问题,有曝光补偿装置的相机可以进行+2、+1、

c语言入门经典必背个程序

c语言入门经典必背个程序 c语言入门经典必背18个程序 1 、/* 输出9*9 口诀。共9 行9 列,i 控制行,j 控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d 表示左对齐,占3 位*/ } printf("\n");/* 每一行后换行*/ } } 2 、/* 古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔 子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/* 控制输出,每行四个*/ f1=f1+f2; /* 前两个月加起来赋值给第三个月*/ f2=f1+f2; /* 前两个月加起来赋值给第三个月*/ } } 3 、/* 判断101-200 之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除 2 到sqrt( 这个数) ,如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main()

C语言基础知识(详细版)

C语言程序的结构认识 用一个简单的c 程序例子,介绍c 语言的基本构成、格式、以及良好的书写风格,使小伙伴对 c 语言有个 初步认识。 例1:计算两个整数之和的c 程序: #include main() { int a,b,sum; /* 定义变量a,b ,sum 为整型变量*/ a=20; /* 把整数20 赋值给整型变量a*/ b=15; /* 把整数15 赋值给整型变量b*/ sum=a+b; /* 把两个数之和赋值给整型变量sum*/ printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); /* 把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c 语言程序都必须包括以下格式: main() { } 这是c 语言的基本结构,任何一个程序都必须包含这个结构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main() - 在c 语言中称之为“主函数” ,一个c 程序有且仅有一个main 函数,任何一个c 程序总是从 main 函数开始执行,main 函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main 函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(; ),在c 语言中,我们把以一个分号结尾的一句话叫做一个 c 语 言的语句,分号是语句结束的标志。 5、printf( “ a=%d,b=%d,sum=%d\n” ,a,b,sum); 通过执行这条c 语言系统提供给我们直接使用的屏幕输出 函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头 (2)不以分号结尾这一行没有分号,所以不是语句,在c 语言中称之为命令行,或者叫做“预编译处理命令” 。 7、程序中以/* 开头并且以*/ 结尾的部分表示程序的注释部分,注释可以添加在程序的任何位置,为了提高程序的可读性而添加,但计算机在执行主函数内容时完全忽略注释部分,换而言之就是计算机当做注释部分不存在于主函数中。 C程序的生成过程 C程序是先由源文件经编译生成目标文件,然后经过连接生成可执行文件。 源程序的扩展名为.c ,目标程序的扩展名为.obj , 可执行程序的扩展名为.exe 。

(完整word版)c语言初学必背代码

//1.成绩判断 #include int main() { //成绩 int score; printf("请输入你的成绩:\n"); scanf("%d", &score); //判断 if(score >=0 && score < 60) { printf("不及格\n"); } else if(60 <= score && score < 80) { printf("中等\n"); } else if(80 <= score && score < 100) { printf("优秀\n"); } else { printf("输入错误!\n"); } } //2.计算1到100的和 #include int main() { int sum = 0;//存结果变量 int i; for(i=1;i <= 100;i++) { sum = sum + i; } printf("sum=%d\n", sum); } //3.最大公约数 #include //求m,n的最大公约数 int main() { int m, n; int i, k; printf("请输入两个数:"); scanf("%d %d", &m, &n); //三元运算符找较小的那个 k = m < n ? m : n; //从较小的那个数倒着往前找 for(i=k; i>=1; i--) { //这是公约数 if((m % i == 0) && (n % i ==0)) { printf("最大公约数是%d\n", i); break;//跳出for循环 } } } //4.最小公倍数 #include //求m,n的最小公倍数 int main() { int m, n; int max, min;//m,n中较大,较小的那个 int k;//max, 2*max, 3*max, .....

c语言程序设计第五版习题答案

习题解析与答案 第1章C语言概述 一.简答题 1.概述C语言的主要特点。 【解答】 (1)语言简洁、紧凑,使用方便、灵活。 (2)数据类型丰富,表达能力强。 (3)运算符多样。C语言中的运算符包含的范围非常广泛。 (4)具有结构化的控制语句。如if…else语句、while语句、do while语句、switch 语句、for语句。 (5)允许直接访问物理地址。C语言中含有的位和指针运算,能够直接对内存地址进行访问操作。 (6)所生成的目标代码质量高,可移植性好。 2.构成C语言程序的基本单位是什么?它由哪几部分组成? 【解答】函数是构成C语言程序的基本单位。一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。 3.C语言程序的运行一般要经过哪几个步骤? 【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。 二.运行程序写结果 1.输入下面程序并运行。 main() { int a1,a2,x; a1=100; a2=50; x=a1-a2; printf(″x=%d\n″,x); } 【解答】运行结果为:x=50 2.输入下面程序并运行。 main() { int a1,a2,x; a1=10; a2=20; x=a1*a2; printf(″a1=%d,a2=%d\n″,a1,a2); printf(″x=%d\n″,x); } 【解答】运行结果为:a1=10,a2=20 x=200

三.编程题 1.参照本章例题,编写一个C程序,用于显示如下信息: ************************* I love C programs! ************************* 【分析与提示】 ①要有文件包含语句#include 。C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的。这些函数的说明都包括在stdio.h文件中。 ②main是主函数的名称。用{}括起来的内容是函数体,函数体由若干条语句组成,这是计算机要执行的部分,每条语句以分号“;”结束。 ③注意显示的信息有三行,所以要用到换行符“\n”。 参考代码: #include main() { printf("************************\n"); printf(" I love C programs! \n"); printf("************************\n"); } 第2章数据类型及其运算 一.简答题 1.C语言中的数据类型主要有哪几类? 【解答】短整型(short int ) 整型整型(int) 长整型(long int ) 基本类型字符型 (char)单精度(float) 实型(浮点型) 双精度(double) 枚举类型(enum) 数组类型 构造类型结构体类型 (struct) 共用体类型(union) 指针类型 空类型(void) 2.字符常量与字符串常量有什么区别?

摄影知识入门(经典入门级教程)

摄影知识入门 傅春山刘文健 第一章一张好照片的三个基本原则 摄影家的眼力 我们在书籍中,网络上常常能看到让我们拍手叫好的美丽的照片,我们也渴望自己能拍出这样的照片来,在摄影论坛上我们常常看到很多摄影初学者看到一幅好照片时问,是什么相机拍的,什么镜头拍的,光圈快门多少?其实这些都只是技术细节,即使知道了这些也无助于拍摄出佳作来。就像尽管知道了达·芬奇用的是什么颜料和画笔,却无法画不出《蒙娜丽莎》。 对于每个初学摄影的人来说,最重要的是拍摄照片时应当追求什么。在通过照片逐步理解这些指导原则的过程中,你会培养出自己的一种意识,懂得在周围世界该追求什么。这种能在周围世界中发现和捕捉到美好画面的能力就是我们所说的"摄影家的眼力"。 接下来,我们就运用几条简明的指导原则告诉你应当追求什么。 三条基本原则 现在我们在看一幅照片时,只集中讨论三条基本原则。 1.一幅好照片要有一个鲜明的主题(有时也称之为题材)。或是表现一个人,或是表现一件事物,甚至可以表现该题材的一个故事情节。主题必须明确,毫不含糊,使任何观赏者一眼就能看得出来。 2.一幅好照片必须能把注意力引向被摄主体,换句话说,使观赏者的目光一下子就投向被摄主体。 3.一幅好照片必须画面简洁,只包括那些有利于把视线引向被摄主体的内容,而剔除或者虚化那些可能分散注意力的内容。 只要根据这三条基本原则开始思考,你就会发现你作为摄影者的生活开始发生变化。

你会用新的标准去观赏一幅美丽的照片。更重要的是你会用全新的方式去观察这大千世界,运用摄影家的眼力通过取景器捕捉画面,在学习的过程中,培养观察、发现、选取周围世界各种主题的能力。 三条基本原则的运用 不论什么时候只要你打算按下快门,必须提醒自己的第一问题是: 第一、这张照片我要表现的主题是什么? 举一张普通的日常生活照来举例,这幅作品 的主题是什么呢?它可能有很多不同的寓意--这 完全取决于你对这个主角的看法了。就拿哈姆雷 特这个角色来说吧,人们对他就争论了几百年, 一百个人心里就有一百个哈姆雷特。一幅成功的 照片对于观赏者来说,也是仁者见仁智者见智。 换句话说,一幅照片的寓意取决于观赏者对它的 理解。这和作者的意图可能一致,也可能相左。 第二,如何把观赏者的视线吸引到被摄主体身上? 市上的照片,熙熙攘 攘的人群中,我们的 一下子注意到这位 背着缝纫机的妇女, 她背着并不轻的缝 纫机穿过集市,靠手 工挣点辛苦钱,但她

摄影入门的所有基础知识-摄影入门基础知识

摄影入门的所有基础知识 第一课:数码相机光圈、快门解释及应用 光圈: 光圈的大小是相机镜头中控制光线的参数。说得直白一些,光圈的大小将决定光线穿过镜头的强弱。因此大家可以很容易地想像到,光圈越大其透过镜头投影到数码相机CCD感光器上的光线也就越强,反之则越弱。那么它的大小也将直接影响到我们拍摄出的数码照片的成像质量。比如在快门时间相同的情况下,光圈越大则相片越亮,假如光圈过大的话,则会出现曝光过度的情况。无论对于传统相机还是数码相机,光圈都使用字母“ f”来表示,而光圈中心孔径的大小则用相应的数值来表示,即“ f+数值”。在使用中,值得大家注意的是,光圈的数值越小,代表光圈的孔径越大,进光量越多,反之则进光量越少。所以,通常在拍摄时所说的“加大光圈”是指把光圈的数值调小,将光孔加大的意思。比如从f5 . 6调大一级到f4、或更大一级的f2 . 8等。 光圈从关闭到打开的差异,以及使用不同光圈数值所对光圈大小产生的影响。从图左上至右下分别是光圈处于关闭、f11、f8及f4不同状态下的光圈大小。由此,我们也可以理解光圈越大,投影到数码相机CCD S光器上的光线也就越强的道理。 快门: 快门的速度也是拍摄照片时控制曝光时间长短的参数。为了让大家更容易理解,我们也可以把快门说成是让相机保持当前设定光圈大小的控制时间。对于快 门速度的表示方法,也是使用相应的数字来进行设定,比如1/4秒、1/60秒等。 它们分别表示让当前设定的光圈孔径大小保持1/30秒、1/60秒的时间。因此, 大家也从中不难看出,使用不同的快门参数来保持单位光圈孔径的时间长短,也 同样可以控制拍摄时的进光量,即曝光度。而上面提到的1/30秒便是1/60秒的两倍时间,而此时它们通过单位光圈孔径的光量也是成两倍的关系,那么反过来 1/30秒则是1/15秒的二分之一时间,通过单位光圈孔径的光量则将会缩减一半。 在实际拍摄中,我们可以通过对快门速度的调节来实现不同的效果,比如看起来流动的“车河”或凝固的水滴等,它们便分别是使用慢速快门和高(快)速快门来实现的。当然,在使用时还要注意快门与光圈的合理配合,这点我们以后将要向大家重点介绍的。 下面讲一下在实际应用中应该如何协调它们之间的关系来更好地达到照片最佳的曝光效果.首先,这要取决于我们的创作思路。比如我们打算抓拍动作较快的瞬间,那么第一个要保证的因素便是快门,比如1/125秒的快门速度便基本可以抓拍到行人的步行动作,而不会使人物变虚。在确定了快门的速度后,再根据当前的光线和想要达到的景深效果来选择光圈的大小。事实上,通过不同快门 和光圈的组合,其所达到的曝光量是相同的,只是它们所适合的拍摄环境及拍摄出的效果不同而以。比如在充足的阳光下使用1/125秒快门和f11的光圈,其获得曝光量与快门和光圈分别为1/250秒、f8是相同的。 景深,在上面一段中我们提到了“景深”的概念,在拍摄中合理地利用景深的效果可以为我们拍摄的照片起到不可轻视的作用,因为它可以更加突出你所要拍摄的对象。景深是指在一次镜头聚焦调节中,所成影像最远部分和最近部分之间的距离,而这部分画面应该具有可以接受的清晰细节。在实际操作中光圈越大,景深越小;光圈越小,景深越大。此外,景深还有两个重要的效应: 1、微距拍摄时的景深比被摄体在较远的位置的时候要小;

(完整word版)(整理)C语言入门经典案例及源代码.

循环控制输出图案 【程序1】 题目:输出9*9口诀。 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码: #include "stdio.h" main() { int i,j,result; printf("\n"); for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } } 【程序2】 题目:要求输出国际象棋棋盘。 1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 2.程序源代码: #include "stdio.h" main() { int i,j; for(i=0;i<8;i++) { for(j=0;j<8;j++) if((i+j)%2==0) printf("%c%c",219,219); else printf(" "); printf("\n"); } } ============================================================== 【程序3】 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 2.程序源代码: #include "stdio.h"

main() { int i,j; printf("\1\1\n");/*输出两个笑脸*/ for(i=1;i<11;i++) { for(j=1;j<=i;j++) printf("%c%c",219,219); printf("\n"); } } 【程序4】 题目:打印出如下图案(菱形) * *** ****** ******** ****** *** * 1.程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for循环,第一层控制行,第二层控制列。 2.程序源代码: main() { int i,j,k; for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\n"); } for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*"); printf("\n"); } }

c语言入门推荐书

C语言入门 学c++吧。 Essential C++ C++ Primer Accelerated C++: Practical Programming by Example 以上的三本书是我最推崇的C++教程,我对它们进行过细心的阅读,感觉受益匪浅,因此也不遗余力地向你推荐。 《Essential C++》(《Essential C++中文版》,华中科技大学出版社,2001)出自久负盛名的《C++ Primer》作者之一Stanley E. Lippman之手。的确有很多人对这个大师级的人物竟然写这样一本面向零基础的轻薄短小的入门教材感 到不可理解。Lippman自己的解释是在参与一部电影的制作时(他拥有艺术硕士的学位!),他由于某种需要必须学习Perl语言,在学习的过程中他“在感伤的心境中明白”,C++ Primer无法扮演初学者导师的角色,那本书太庞大复杂了——对于那些想立刻学会C++语言并进行简单应用的人来说。于是他便有了这本并不太精细却体现语言核心的著作。这本书完全面向零基础读者,您可以对编程一无所知,《Essential C++》仍会引导您走向用C++编程之路,正如它的贴切的书名中所说的,它体现了C++的精髓(脚注:essential,精髓的、本质的)。 《C++ Primer》(《C++ Primer中文版(第4版)》,人民邮电出版社,2006)是一本庞大复杂的C++书籍,由三位世界级的大师Stanley B. Lippman、Josée LaJoie、Barbara E. Moo合力打造。虽然它的书名可以翻译为《C++入门》(脚注:primer,初级读本、入门(书)),但这本书真得有点“名不副实”,这本英文版有912页的厚书详细地介绍了C++的方方面面和点点滴滴。然而,阅读C++ Primer这本讲解地很深入的教程的确也不需要什么准备知识。不过由于这本书的复杂性,读完Essential C++做基础再读本书却是更多人的选择。如果您想从零开始深入的学习C++,或者您在学习C++的道路上遇到了什么疑难,C++ Primer肯定会帮助您。另外,本书目录和正文中关于名词术语的中英文对照就是参照C++ Primer的附录完成的。 《Accelerated C++》(《Accelerated C++中文版》,中国电力出版社,2003)是另一种风格的C++教程。两位作者Andrew Koenigh和Barbara E. Moo是C++圈子里少见的夫妇搭档,Barbara的参与给本书带来了一种清新细腻的女性化风格。这本书同样也是适用于零基础的读者,同样轻薄短小,但却从最基础的程序语句一路讲到了STL的使用,知识密集度极高,并有很多例子。正如书名所说的,此书极有加速度(accelerate)。书中的某些习题也颇有难度、值得思考。但要注意的是据说本书的中文版(我没看过)的翻译有许多微瑕,请谨慎购买。

摄影入门基础知识介绍

写这篇文章的目的有二。一是为了正而八经的写些单反的扫盲给最近一大群朋友开始玩摄影,二是实在现在入门教材有些太扯淡,便用我的思维来介绍一下摄影。同时每一部分都有些我认为能帮助的练习提示,大家轻拍。 作为一个扫盲课程,大概所会提到的内容如下: 1.光圈,快门,ISO,白平衡(光圈优先,快门优先,全手动模式) 2.点测光,区域测光,逆光补偿 3.半按快门的故事,对焦模式的选择 4.什么是APS画幅,镜头基本常识,如何看Histogram(直方图),如何分析EXIF 5*.入门构图技巧 本文中的所有练习,请忽略画面色彩,建议使用黑白色彩模式拍摄。 一、无论如何,在上手照相机前,还是从最基本的开始——光圈,快门,ISO,白平衡 无论怎么简化或者通俗的去讲,作为记录光影的技术,都无法避免去讲到光。其中最重要的就是曝光铁三角——ISO,光圈,快门。 那么先从ISO开始讲: ISO通俗理解就是感光度,或者更简单来说就是对光的敏感度,也就是说ISO越高,只需要越短时间就能正确曝光。听起来很逆天,嗯,不过相应的代价也很明显。(Photos from https://www.sodocs.net/doc/6e1405404.html,)

ISO 80 ISO 100 ISO 200 ISO 400 ISO 1600 ISO 3200 很明显的在ISO80的时候画面很平缓,而到ISO3200的时候已经充满噪点了。 我的建议是,在不影响到快门速度的情况下,尽量稳定在ISO100~200,如果超过ISO1600还得不到理想的快门速度,那么请尝试使用三脚架。 光圈: 光圈并不难理解,不过光圈影响的除了光量之外,还有景深。

f/2.8 (大光圈) f/22 (小光圈) 光圈越大,景深越淺(能够做到背景很模糊) 光圈越小,景深越深(能够使背景也比较清楚) 一个很简单但是很重要的运用便是:风景照小光圈深景深,人像静物大光圈浅景深。

51单片机及C语言入门教程

51单片机 及C语言入门教程 注:排成16开版式,是为了方便自已打印阅读。请不要用于非法用途。 2007.12.20

51单片机及C语言入门教程 第一课 建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个人学习和小型应用的开发。(安装的方法和普通软件相当这里就不做介绍了) 安装好后,你是不是迫不及待的想建立自己的第一个C程序项目呢?下面就让我们一起来建立一个小程序项目吧。或许你手中还没有一块实验板,甚至没有一块单片机,不过没有关系我们可以通过KEIL软件仿真看到程序运行的结果。 首先当然是运行KEIL51软件。怎么打开?噢,天!那你要从头学电脑了。呵呵,开个玩笑,这个问题我想读者们也不会提的了:P。运行几秒后,出现如图1-1的屏幕。 图1-1启动时的屏幕

接着按下面的步骤建立您的第一个项目: (1)点击Project菜单,选择弹出的下拉式菜单中的New Project,如图1-2。接着弹出一个标准Windows文件对话窗口,如图1-3,这个东东想必大家是见了N次的了,用法技巧也不是这里要说的,以后的章节中出现类似情况将不再说明。在"文件名"中输入您的第一个C程序项目名称,这里我们用"test",这是笔者惯用的名称,大家不必照搬就是了,只要符合Windows文件规则的文件名都行。"保存"后的文件扩展名为uv2,这是KEIL uVision2项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。 图1-2New Project菜单 图1-3文件窗口 (2)选择所要的单片机,这里我们选择常用的Ateml公司的AT89C51。此时屏幕如图1-4

相关主题