程序技术基础笔记1.doc_第1页
程序技术基础笔记1.doc_第2页
程序技术基础笔记1.doc_第3页
程序技术基础笔记1.doc_第4页
程序技术基础笔记1.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序技术基础的笔记1 i=0,这是一个赋值的表达式,它永远不会为真,因为该表达式就是那个赋给i的值,即为0。2 &的运算级比|要高。( =)的运算级比 (= !=)要高。所以,例如:P != xy| B&A 等效于 (P!=(xy)|(B&A)3 . 运算级别的排序: 单目运算 乘除运算 加减运算 关系排序 关系相等 逻辑与 逻辑或 赋值运算4条件表达式: (condition? Expression operator) ;例如:( m=b)&(a=c) d=a;else if (b=a)&(b=c) d=b;else (c=a)&(c=b); d=c;coutd:d一样可以进行提取的操作,但是不能提取空白的地方,而get()可以。12 for语句中的定对象只能在其中有效,不能在括号外运行。13 sqrt()是一个平方根的函数。14 X的平方可以用X*2来表示15 编译预处理命令以#开头,它们可以出现在程序的任何位置,但是一般写在首部。16 C+程序用到的库文件主要来自于 1)标准C语言库函数的头文件,起文件名带有.h,如:stdio.h math.h。2)标准C+语言类库的头文件,其文件名不带.h的后缀,如:iostream string .。3)由标准C语言库函数头文件扩展而来的标准C+的头文件,其文件名是把原有的标准C语言库函数头文件去掉.h后缀再加上前缀c而形成,如:cmath cstdio cstring。在C+程序文件中如果用到了带后缀的.h的标准C语言库函数的头文件时,不必用名字空间,只需要在文件中包含所用到的头文件即可。而用到C+语言的函数 和类时,则不仅要包含相应的文件,还需要在程序中 “using namespace std;”命令对名字空间std作声明。17 宏定义: 三种:1)不带参数的宏:#define 宏名 字面串 2)带参数的宏:#define 宏名 (形参数) 字面串 3) 终止宏定义:#undef 宏名18 回文数int n,m; 对称例如:121 ,1234321 ,11 i=n;m=0; while(i) m=m*10+n%10; n=n/10; 用这个来判断这个数是不是回文数。19 闰年的函数是isLeap()。20 变量的作用域和存储类别:根据变量的作用范围分为局部变量和全局变量(外部变量:从定义开始到源程序结束),;内层的变量可以和外层变量名字相同,因为它们的作用范围不同,而且位置不同,在内存中占用的是不同的储存单元因而不会引起系统的识别错误。但是系统在处理它们的方法是局部变量优先于全局变量。21 变量分为四种:自动类型,静态类型,寄存器类型和外部类型。在函数中定义的局部变量默认为自动类型,在函数之外的全局变量即为外部类型。也可以在定其义时在其前加上修饰词:static ,register 将该变量声明为静态类型或寄存器类型。从而说明它的存储位置在;内存的静态存储区或CPU的寄存器中。内存中的供用户使用的存储空间可以分为三部分:程序区,静态存储区,动态存储区。在程序执行期间,数据分别放在静态存储器和动态存储器中,叫做静态存储方式和动态存储方式。动态存储区的变量在函数调用开始时才被分配相应的存储 单元中,函数结束时即释放这些空间,这种分配时动态的,如果在一个程序中两次调用同一个函数时,饿 要进行两次分配和释放,而且两次的分配空间都有可能不同,程序中的大多数变量都是这样的。全局变量和静态变量放在静态存储区中,它们在程序开头的时候就被分配了固定 的存储单元,直到整个程序执行完毕才释放这些空间,静态局部变量虽然只有局部作用域,但是却具有静态(永久)生存期。虽然静态局部变量在函数调用结束后仍然存在,但是其他函数是不能使用的,它只能在其在念书的下一次调用中有效。 有时希望函数中局部变量的值在函数调用结束后不消失而保留原值,这时就应该定义该变量为静态局部变量。和auto static register不同,extern只能用来声明已经定义的外部变量,而不能用来定义变量,这个仅仅是声明而已。静态存储器中的变量在未被用户初始化的情况下,系统00会自动将其初始化,为0,而动态存储区中的变量,在未被用初始化的情况下其内容是随机的。22 声明动态存储变量的C+关键字是auto不是dynamic。但是可以省略。23 #include2425 using namespace std;26 void test()27 28 int i=0; /自动变量29 static int j=0; /局部变量30 i+;j+;31 couti=ij=jendl;32 33 int main()34 for(int i=0;i=3;i+)35 test(); /函数三次被调用36 return 0;37 38 结果是i=1 j=1;39 i=1 j=2 40 i=1 j=341 内敛函数(inline function):空间换时间,规模小而又频繁调用的简单函数才适用声明为inline函数。在其中不能包括复杂的控制语句,如循环语句 switch语句 递归调用等等。因为这些结构的代码不能爱编译时被自动的嵌入到相应的位置成为有效的执行代码。如果有这些代码,系统也会当做一般性的函数来处理的。这是一个例子42 函数声明(又称为函数原型或函数的引用性 声明,是定义函数的首部)的一般形式: 函数类型 函数名(参数类型1参数类型2,。)或 函数类型 函数名(参数类型1 参数名1 ,参数类型2 参数名2。)43 当你在头文件中加了.h后在后面不要加上这一句话using namespace std;一般不在头文件前加上c而是在其后加上文件扩展名h。44 函数的接口:包括函数的类型,函数的名字和参数等等,main()函数的接口是int main(),squr()函数的接口是double squr(double a),45 保留给函数形式参数的内存是活动记录的一部分。46 标准目录 当前目录 绝对路径给出文件的出入方式?怎么的关系。47 用十进制 八进制 十六进制 表示数值分别是dec oct hex。例如:coutdec“c:”cendl;这是用十进制表示c的方法。但是一般不加注释的就是默认为用十进制的表示方法。48 如何求一个字符串的长度:string a;int i=0;cout请输入一个字符串(不能是两个或多个)a;while(ai!=0) i+;couti:iendl;return 0;48#include#includeusing namespace std;int main()double a=0; double n=1;int i;int j;for(i=1;i=21;i+=2) for(j=1;j=i;j+)n*=j;a+=n;couta;return 0;和#include#includeusing namespace std;int main()double a=0; int i;int j;for(i=1;i=21;i+=2) double n=1;for(j=1;j=i;j+)n*=j;a+=n;couta;return 0;的结果不同,在于定义的n的位置不同,所以在这里要注意一下到底应该在哪儿做定义。49编写一个程序从09十个数中选其中的三个数用组合法组成一个三位数,计算其中的各个奇数之和:#include#includeusing namespace std;int main()int i,j,h;double Q=0;for(i=1;i=9;i+)for(j=0;j=9;j+)for(h=0;h=9;h+)if(100*i+10*j+h)%2!=0)Q+=100*i+10*j+h;coutQ;return 0;50 :求出两个数的最大公约数和最小公倍数:#include#includeusing namespace std;using namespace std;void main()int a,b,c,d,m;cincd;if(cd)m=d; d=c;c=m;a=c;b=d;while(b!=0)m=a%b;a=b;b=m;coutaendl;coutc*d/aendl;51:#include#includeusing namespace std;void main()long int n,s;s=n=0;while(s=100000)+n;s+=n*n*n;coutn-1;解释:在后面为什么要加上一个n-1呢?因为若不加上的话,则此时的s的值会比100000大一点。#include#includeusing namespace std;void main()long sum=0;int a;int i=1;while(sum=100000)a=i*i*i;sum+=a;i+;coutn;s=n*(n+1)*(n+2)*(n+3);r=sqrt(s);if(s!=r*r)couts不是一个完全平方数endl;elsecouts数一个完全平方数endl;53:!(P&Q)与!P&!Q的表达的结果不同 ,因为后面一个是先算P&!Q的这个运算。(注意)54: 在P288的程序中:在调用完了float CylinerVolume函数,则转移到函数float DonutSize,并且同时释放CylinerVolume的活动记录所占得内存,在函数DonuSize中的return 语句执行完了之后则DonuSize的活动记录所占得内存也得到了释放。55:一个函数可以有多个return语句。56:在max()和min()的通用版中前要加上#include,一些有用的函数:int PromptAndGet(): int a=PromptAndGet(); 判断是否是元音的函数bool IsVowel(): bool IsVowel(char ch);阶乘的函数:factorial(): int factorial(int n);57:在void函数中一可以有return 语句,但是不能有表达式。58:在不同的块中可以允许用相同的标识符。虽然名字可以在一个嵌套块中重用,但是不能再名字初始定义的同一块内重新定义该名字,这种限制意味着下面的代码段式非法的:int i; float i; 在同一个块中重新定义一个名字是非法的,即使在它们的中间有一个嵌套块也是不行的:int i;char i; (这个是合法的)float i; (这个是不合法的)59:在一个函数中不允许出现另一个函数的定义,这并不与函数原型的使用相左。C+要求在全局作用域中定义一个函数,程序的全局作用域不会包含在任何一个语句块中,60:当一个全局对象出现在局部作用块中,应该用单目运算符:来引用全局对象。如果没有对全局对象初始化,则使用值为0;61: const int a , int b, int c;b=a+2;(合法)a=c+2;(不合法)62:一个源文件中的函数是平行的。63:函数可以没有参数,也可以没有返回值。即所有的操作都在函数中完成,所有的数据均在函数中取得。64:当编译器遇到调用内敛函数时,系统不会调用该函数,而是把该函数代码全部“插入”到调用的位置。这是内敛函数与普通函数最大的区别。65:当表达式值的类型和函数类型不同时,将表达式的类型自动转换为函数类型,这是由系统强制进行转换的,可能出现不保值的情况。66:5/3的值是1,而5/3.0的值才是真正的正确的值。或者是5.0/3也是正确的值。66: 1!+3!+5!+21!=?#include#includeusing namespace std;int main()int a;int b;double sum;double c=0;for(a=1;a=21;a+=2)sum=1;for(b=1;b=a;b+)sum*=b;c+=sum;coutcendl;return 0;或者是这样的:#include#includeusing namespace std;Double f(int i)int j;double t=1;for(j=1;j=i;j+)t*=j;return t;int main()int a; Double c;Double sum=0;for(a=1;a=21;a+=2)c=f(a);sum+=c;coutsum0? m:-m;int main()double a;double b=0; int n=1;int i=1; int c=1;while(1.0/f(c)=1e-6)b+=i*1.0/c;n+;i=-i;c=2*n-1;a=4*b;couta0? m:-m;int main()double a;double b=0; int n=1;int i=1; intc=2*n-1;while(1.0/f(c)=1e-6)b+=i*1.0/c;n+;i=-i;a=4*b;couta=1e-6)sum+=i*1.0/t;t+=2;i=-i;a=4*sum;co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论