




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章_C+概述1. C+语言的标准有哪些它有哪些编程方法结构化程序设计的结构有哪些答案:标准:C+国际标准ISO/IEC 14882:1998,常被称为C+98、标准C+或ANSI/ISO C+;C+标准第二版(ISO/IEC 14882:2003)。 3种编程方法:以C语言为子集的结构化程序设计模式、以类为核心的面向对象程序设计模式以及以模版为机制的通用编程模式。 结构化程序设计的结构:顺序结构、选择结构和循环结构。2. 面向对象的程序设计有3个主要特征,他们分别是什么试举例说明。答案:3个主要特征:封装、继承和多态。 封装:封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。例如C
2、+中的类,它定义了该集合中每个对象所共有的属性和方法。 继承:继承是让某个类型的对象获得另一个类型的对象的特征。例如:C+中子类对父类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。 多态:多态是指不同类型的对象接收相同的消息时产生不同的行为。多态机制使具有不同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。例如函数的重载。3. C+是以编译方式实现的高级语言,它的编译过程可分为3个子过程,它们分别是什么答案:创建、编译和连接。4. 参照本章示例,编写1个C+程序:输入圆的半径,输出其周长。答案:#include using namespace std;int ma
3、in() double r, area; coutr; area=2*r; cout圆的周长为:arean; return 0;第二章 数据类型和基本输入/输出1. 下列常量表示在C+中是否合法若不合法,指出原因;若合法,指出常量的数据类型。答案:32767:合法,int 35u:合法,无符号整形 :不合法,e后面的数字必须是整数 3L:合法,长整形 :合法,实数 87:不合法,八进制数中不应该出现8 “Computer System”:合法,字符串 “a”:合法,字符串 a:合法,字符 9645:不合法,96 45分别为字符类型 .5:合法,double2. 字符常量与字符串常量有什么区别指
4、出下列哪些表示字符哪些表示字符串哪些既不表示字符也不表示字符串0x66 China “中国” “8.42” 0x33 “nt0x34” r 8.34 “0x33” 0答案:字符: , 0, r 字符串:“中国”, “8.42”, “nt0x34”, “0x33” 非字符亦非字符串:0x66, China,0x33, 8.343. 定义两个变量a和b,初值分别为8和10,若要a和b的值互换,即a为10,b为8,如何实现(可用另外一个变量t作为过渡)如不用中间变量又如何实现答案:用变量temp作为过渡#include using namespace std;int main() int a=8,b
5、=10; int temp; temp=a; a=b; b=temp; couta: a, b: bendl; return 0;不用中间变量方法一:#include using namespace std;int main() int a=8,b=10; a=ab; b=ba; a=ab; couta: a, b: bendl; return 0;不用中间变量方法二:#include using namespace std;int main() int a=8,b=10; couta: a, b: bendl; a=a+b;b=a-b;a=a-b; couta: a, b: bendl; r
6、eturn 0;4. 用enum定义4个枚举常量Flase、FALSE、TRUE、True,使其值分别等于bool类型中的false、false、true、true。想一想这样做的好处是什么若使用const来定义,则如何进行并比较这两种定义的优缺点。答案:enum False=false,FALSE=false,TRUE=true,True=true; 好处:因为VC+中对大小写是敏感的,为了防止用户输入中大小写出错的情况,所以分别又定义了表示true和false的两种形式。const bool False=false; const bool FALSE=false;const bool TR
7、UE=true;const bool True=true;优缺点:用enum一次可以定义多个整型标识符变量,而const定义的标识符常量由其数据类型决定; 另外,用const定义看不出其关联性。5. 用const常量代替圆周率,分别输入半径40和,求圆面积。要求先输出圆周率和半径,再输出其面积。答案:#include using namespace std;const double PI=;int main() double radius1=40,radius2=; double area1,area2; area1=PI*radius1*radius1; area2=PI*radius2*r
8、adius2; cout圆周率: PI, 半径: radius1, 面积: area1endl; cout圆周率: PI, 半径: radius2, 面积: area2endl; return 0;6. 设学生人数是一个常数50,编程输出下列结果(双引号也要输出):“How many students in your class”“50”答案:#include using namespace std;const int STDNO=50;int main() coutHow many students in your class; coutendl; cout STDNO c1c2c3;若在执
9、行过程中,输入:a b c则cin执行后,c1、c2、c3的值分别是什么若输入:abcdef则cin执行后,c1、c2、c3的值又分别是什么答案:输入a b c后,c1的值为 , c2的值为a , c3的值为 输入abcdef后,c1的值为 a , c2的值为b , c3的值为 c8. 设有语句:int a, b, c;cinhexaoctbdecc;couthexatoctbtdecc;若在执行过程中,输入:12 12 12指出cin执行后,a、b、c的值分别是什么输出的结果是什么答案:输出结果是:1212 12 a、b、c的值分别是18,10和12第三章 运算符和表达式1. 将下列代数式写
10、成C+的表达式:(1)=sqrt(pow(sin(x),)(2)=(a+b)*h)/(2*m)(3)=exp(x*x)/sqrt(2*2. 求出下列算数表达式的值:(1) 5+7/3*4=13(2) +9/5+=(3) 8+2*9/2=17(4) a +23=97+23=120(5) 设x=,y=,a=7x+a%3*(int)(x+y)%2/4 =+1*int%2/4=+7%2/4=+1/4=(6) 设x=,y=,a=2,b=3(float)(a+b)/2-(int)x%(int)y=(7) 设x=8a+x%3+5/2-24=97+2+2-20=813. 在下列表达式中,哪些是合法的赋值表达式
11、哪些不是为什么(a,b,c,x,y都是已定义的int 型变量)(1) a=b=+ 是(2) c=+=x=y= 不是,因为是常量不能作为左值(3) x=(y=*45 是(4) a=x+=+y 不是,x+不能作为左值4. 写出下面表达式运算后a的值,设原来的a都是10.(1) a+=a a=a+a=20(2) a%=(7%2) a=a%(7%2)=10%1=0(3) a*=3+4 a=a*(3+4)=70(4) a/=a+a a=a/(a+a)=10/20=0(5) a-=a a=a-a=0(6) a+=a-=a*=a a+=a-=100 =a+=0 =a=05. 设m,n的值分别为10,8,指出
12、下列表达式运算后a,b,c,和d的值。(1) a=m+ + n+=10+8=18(2)b=m+ + +n=10+9=19(3)c=+m + +n=11+9=20(4)d=m- + n+=10+8=186. 设a,b,c的值分别为5,8,9;指出下列表达式运算后x ,y和z 的值(1) y=(a+b,c+a)=(13,14)=14(2) x=y=a,z=a+b x=5 y=5 z=13(3) y=(x=a*b , x+x , x*x)=(x=40,80,1600)=1600 x=40(4) x=(y=a ,z=a+b)=(y=5,z=13)=13 y=5 z=137. 设有变量:float x,
13、 y;int a ,b;指出运算下列表达式后x , y, a和b的值。(1)x=a=x=3 y为null a=3 b为null (2)a= x =x= y为null a=3 b为null(3)x=a=y=x= y=3.532 a=3 b为null(4) b=x=(a=25,15/2)x= y为null a=25 b=78. 若有char x=15;使得x的第0位(即二进制位的最右边的那一位,或称最低位)为0,其余位保持不变的赋值表达式是什么x=x & 1 (其中1是由即pow(2,0)算出来的)9. 用sizeof 运算符编写一段测试程序,测试本机中各基本数据类型或字符串所占的字节数,并将其填
14、写到下表中,然后分析其结果。基本数据类型所占字节数基本数据类型或字符串所占字节数char1float4short2double8int4long double8long4“nChtv0ina”10#includeusing namespace std;int main()cout char类型所占字节数为 sizeof(char)n;cout short类型所占字节数为 sizeof(short)n;cout int类型所占字节数为 sizeof(int)n;cout long类型所占字节数为 sizeof(long)n;cout float类型所占字节数为 sizeof(float)n;co
15、ut double类型所占字节数为 sizeof(double)n;cout long double类型所占字节数为 sizeof(long double)n;cout字符nChtv0ina所占字节数为 sizeof(nChtv0ina)n;return 0;10. 从键盘输入一个三位数,从左到右用a,b,c表示各位的数字,记为abc.现要求依次输出从右到左的各位数字,即输出另外三位数cba。试设计程序。#includeusing namespace std;int main() int n ,a , b , c , m; 设有变量int a=3,b=4,c=5;求下列表达式的值:(1) a+
16、bc&b=c 75&4=5True & False F(2) a|b+c&bc 3|9&453|9&F 3|F T|F T(3) !a|!c|bF|F|4T(4) a*b&c+a15&8T 2. 设a,b,c的值分别是15,18,19,指出下列表达式运算后x,y,a,b,c的值(1) x=ab&c+表达式运算:y=F&c+=F 此时 y=F ,a=15,b=18,c=19(3) x=a+bc&c+表达式运算:x=3319&c+=T 此时 x=15,b=18,c=20(4) y=a|b+|c+ 表达式运算:y=T|b+|c+=T 此时 y=T,a=15,b=18,c=193. 输入三个整数a,b
17、,c要求按照从小到大的顺序输出方法一:#include using namespace std;int main() int a,b,c,temp; cout请输入三个整数:abc; if(ab) /*如果ab,交换a与b的值*/ temp=a; a=b; b=temp; if(ac) /*如果ac,交换a与c的值*/ temp=a; a=c; c=temp; if(bc) /*如果bc,交换b与c的值*/temp=b; b=c; c=temp; cout这三个数从小到大的排列为endl; couta=aendl; coutb=bendl; coutc=cendl; return 0;方法二:
18、#include using namespace std;int main()int a,b,c,temp;cout请输入三个整数:abc;if(ab) /*如果ab,交换a与b的值*/ temp=a; a=b;b=temp; if(bc) /*如果ac,交换a与c的值*/ temp=b; b=c; c=temp; if(ab) /*如果bc,交换b与c的值*/ temp=a; a=b; b=temp; cout这三个数从小到大的排列为endl;couta=aendlb=bendlc=cendl;return 0;4. 有一个数学函数 写一个程序,输入x,输出y.#include using
19、namespace std;int main()int x,y;coutx;if(x=10) y=x-1; else if(x1) y=2*x+2;else y=3*x*x+3*x-1; couty的值为yendl; return 0;5. 给出一个百分制的成绩,要求输出成绩为A,B,C,D.其中,85分以上为A,7584分为B,6574分为C,65分以下为D。#include using namespace std;int main() float fScore; coutfScore; if( fScore100|fScore0) cout输入的分数无效=85) coutA=75) cou
20、tB=65) coutCendl; else coutDendl; return 0;6. 选(D)7. 求下列循环次数(1) for(int i=0,x=0;!x&i=5;i+) 循环了6次(2) while(int i=0)i-; 循环了0次(3) int i=5;do couti-endl; i-; While(i!=0); 循环了无数次8. 编程求100以内被7或5 整除的最大自然数#include using namespace std;int main() int max; for(int i=1;i=100;i+) if(i%5=0|i%7=0) max=i; cout这个最大的
21、自然数是maxendl;return 0;9. 分析下列程序的输出结果(1) x=5,y=4,z=1(2) k=4(3) # 10. Fibonacci数列中的前两个数是1和1,从第三个数开始,每个数等于前两个数之和。编程计算并输出次数列中的前30个数 。 #include#includeusing namespace std;int main()int sum=0 ,a=1,b=1;for(int i=1;i=6;i+) for(int j=1;j=5;j+) if(i=1&j=2) coutsetw(7)1,; else sum=a+b; coutsetw(7)sum,; a=b; b=s
22、um; coutendl; return 0; 11. 编程求n!,即#include#includeusing namespace std;int main()int n,m=1;coutn;for(int i=0;i=1;n-) m*=n; */ m*=(n-i);cout n的阶乘为mendl; return 0;12. 从键盘上输入一个整数n的值,按下式求出y 的值,并输出n和y 的值(y用浮点数表示) y=1!+2!+3!+n!方法一: #include#includeusing namespace std;int main()int n,y=0,m=1;coutn;for(int
23、j=0;jn;j+)for(int i=0;in-j-1;i+)m*=(n-i-j);y+=m;m=1;cout y的值为yendl;return 0; 方法二:#includeusing namespace std;int main()int n,m=1;double y=;coutn;for(int i=1;i=n;i+)m*=i; y+=m;cout y的值为yendl; return 0;13. 用泰勒级数求e的近似值,直到最后一项小于 为止。 方法一:#include#includeusing namespace std;int main()double e=,m=1;int n=1
24、;do m=m*(m+1); n+;while(m10*10*10*10*10*10); for(int j=0;jn;j+)m=;for(int i=0;in-j-1;i+)m*=(n-i-j);e+=m);cout e的值为e+1endl; return 0;方法二:#includeusing namespace std; int main()double e=, m;int i=1,n=1;dom=n;i+;n*=i;e+=m;while(m=;cout e的值为e+1endl; return 0;14. 设计一个程序,输出所有的水仙花数。所谓水仙花就是一个三位的整数,其各位数字的立方和
25、等于该数本身。#includeusing namespace std;int main()int n=100,a ,b,c; 设计一个程序,输入一个4位整数,将各位数字分开,并按其反序输出。要求必须用循环语句。#includeusing namespace std;int main()int n,a ; coutn;if(1000=n & n=9999) cout这个四位数的反序为:;for(int i=1;i=4;i+) a=n%10; n=n/10; couta; else cout输入不正确endl;coutendl;return 0;16. 求的近似值的公式为其中,n=1,2,3,设计
26、一个程序,求出n=1000时的近似值。#includeusing namespace std;int main()int n=1000;double pi,p=;for(n=1000;n=1;n-) p=p*n/*n-1)*n/*n+1); pi=p*2;coutpiendl; return 0;17. 用迭代法求x=。其中公式如下:要求前后两次求出的x的差的绝对值小于。#include #include using namespace std;int main()double a;const double EPSTLON = 1E-5;couta;double xnew=a;double x
27、old;do xold = xnew; xnew = (xold + a/xold)/2;while(fabs(xnew - xold) = EPSTLON);cout它的平方根是:xnewendl;return 0;18. 打印下列菱形图案。#include using namespace std;int main() int i,j,num=7; for(i=0;inum/2;i+) Hermite多项式#includeusing namespace std;double hermite(double x,int n);int main()double x;int n;cout1)和整数n
28、(n=0):;cinxn;coutendl;if(x=1|n0)cout输入数字无效!endl;elsefor(int i=0;i=n;i+)coutHermite(x,i)=hermite(x,i)endl;return 0;double hermite(double x,int n) 阿克曼函数#includeusing namespace std;int acm(int m,int n);int main() coutAcm(5,3)=acm(3,3)endl; coutAcm(4,2)=acm(4,2)endl;coutAcm(5,5)=acm(5,5)endl;return 0;in
29、t acm(int m,int n)int h;if(m=0) h=n+1;else if(n=0) h=acm(m-1,1); else h=acm(m-1,acm(m,n-1); return h;10. 设计一个函数,要求能将一个正整数n按反序输出,n的位数不定。例如,123输出321。分别用递归函数和非递归函数来实现,编写完整的程序并测试。#includeusing namespace std;void output(int n);int main()output();coutendl; return 0;void output(int n) 4 让设计一个程序通过重载求两个数中最大数
30、的函数max(),分别实现求两个实数和两个整数及两个字符的最大者。有同学把函数名字改成fmax()或者nMax()什么的;有同学直接使用未定义的变量.8 让用递归和非递归方法求Hermite多项式:很多同学只用递归方法实现;程序中出现2x, 2xh(n-1)第六章_数组1 选择填空。(1) 选C: 数组下标中的n只能是常量(2) 选D:行号下标取值范围是0,1。列号下表取值范围是0,1,2。所以B,C越界,A代表的是数组b23的第二行第一个元素的存储地址。(3) 选B:数组x的长度是6,数组y的长度是52 下列invert函数的功能是将数组a 中n个元素逆序存放,填充方框。(1) ij(2)
31、ai=aj(3) j-3 函数fingmax找出数组a 的最大元素下标,并返回主函数,输出下标及最大值,填充方框。(1) akai(2) k(3) datapos4 函数fun的功能是判断s所指的字符串是否“回文”,是返回1,否返回0,填充方框。(1) n-1(2) si!=sj(3) return 15 输入一组非0整数(以0为结束标志)到一维数组中,设计一个程序,求平均值,并分别统计这组元素中的正数和负数。 #include using namespace std; int main() int array100;double ave;int pos=0,neg=0,sum=0,i;cou
32、t 输入整数(以0结尾): ; for(i=0;iarrayi; sum+=arrayi;if(arrayi=0) i-;break; else if(arrayi0) pos+;else neg+;ave=sum/i;cout这个数组的平均数是aveendl;cout这个数组有pos个正数endl;cout这个数组有neg个负数endl;return 0;6 输入10个数到一维数组,按从大到小的次序排序后输出,分别用三个函数实现数据的输入,输出及排序 方法一:#include using namespace std; void INPUT(double array10);void OUTPU
33、T(double array10);void SORT(double array10);int main() double array10;INPUT(array);SORT(array); OUTPUT(array); return 0;void INPUT(double array10) cout请输入十个数endl;for(int i=0;iarrayi; cout输入完毕endl;void SORT(double array10) double temp; for(int i=1;i10;i+) for(int j=0;j10-i;j+) if(arrayjarrayj+1) temp
34、=arrayj;arrayj=arrayj+1;arrayj+1=temp; void OUTPUT(double array10) cout排序后的数组为endl;for(int i=0;i=9;i+) coutarrayiendl; 方法二:#include using namespace std; void INPUT(double array,int n);void OUTPUT(double array,int n);void SORT(double array,int n);int main() double array10;INPUT(array,10);SORT(array,1
35、0);OUTPUT(array,10);return 0;void INPUT(double array,int n) cout请输入十个数endl;for(int i=0;iarrayi;cout输入完毕endl;void SORT(double array,int n) double temp; for(int i=1;in;i+) for(int j=0;jn-i;j+) if(arrayjarrayj+1) temp=arrayj;arrayj=arrayj+1;arrayj+1=temp; void OUTPUT(double array,int n) cout排序后的数组为endl
36、;for(int i=0;in;i+) coutarrayiendl; 7 采用插入排序法,输入10个整数安升序排序后输出。#include using namespace std; void INSERTSORT(int array,int &n,int a);void OUTPUT(int array,int n);int main() int array10,NUM=0,m;for(int i=0;i10;i+) cout输入第i+1m; INSERTSORT(array,NUM,m); OUTPUT(array,NUM); return 0;void INSERTSORT(int ar
37、ray,int &n,int a) int i;for(i=0;in;i+) if(ai;j-) arrayj=arrayj-1; arrayi=a; n+;void OUTPUT(int array,int n) for(int i=0;in;i+) coutarrayit; if(i+1)%5=0) coutendl;coutendl; 8 求一个n*n阶矩阵两对角线元素之和 方法一:#include using namespace std; int main() int array33=1,2,3, 4,5,6, 7,8,9; int sum=0; for(int i=0;i3;i+)
38、sum+=arrayii; cout对角线之和为:sumendl; return 0; 方法二:#include using namespace std;const int n=3; int main() int arraynn; int sum=0; for(int i=0;in;i+) for(int j=0;jarrayij; if(i=j|i+j=n-1) sum+=arrayij; cout两对角线之和为:sumendl; return 0; 9 编程求矩阵加法 #include using namespace std; int main() int a133=1,2,-1, -2,
39、1,0, 1,0,3; int a233=5,7,8, 2,-2,4, 1,1,1;int sum33; for(int i=0;i3;i+) for(int j=0;j3;j+) sumij=a1ij+a2ij; coutsumijt; if(j+1)%3=0)coutendl; return 0; 10 设计函数void strcpy(char a,b),将b中的字符串复制到数组a中#include using namespace std; void strcpy(char a,char b);int main() char buf20;strcpy(buf ,ChengNing);cou
40、tbufendl; return 0;void strcpy(char a,char b)int i=0; while(bi!=0) ai=bi; i+; ai=0;第七章 指针和引用1 已知int d=5,*pd=&d,b=3;求下列表达式的值:(1)*pd*b=15(2)+*pd-b=3(3)*pd+=5(4)+(*pd)=62 选择(1)A(2)B(3)A(4)B3 用指针作为函数的参数,设计一个实现两个参数交换的函数。然后实现输入三个实数,按升序排序后输出。方法一:#include using namespace std;void swap(double *a,double *b);i
41、nt main()double x, y, z;coutxyz;cout3个实数为:x,y,zy)swap(&x,&y);if(yz)swap(&y,&z);if(xy)swap(&x,&y);cout排序后3个实数为:x,y,zendl;return 0;void swap(double *a,double *b)double temp;temp=*a;*a=*b;*b=temp;方法二:#include using namespace std;void swap(void *a,void *b,int size);void sort(double *a,int size);int main()中n指定数组元素个数。编写完整的程序并测试。#include using namespace std;int find(int *data,int n,int x);int main()int data=1,2,3,4,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程第三方担保合同
- 安全生产检查与隐患排查
- 办公室日常保洁工作指引
- 高中数学几何初步探索课教案
- 数学思维训练:圆锥曲线的教与学教案
- 关于设立新公司的合作协议
- 三亚安置房买卖合同
- 农民培训与技术指导作业指导书
- 水库高边坡专项施工方案
- 地磅设备租赁合同
- 基础护理及病房管理
- 办理拆迁事项委托书
- 2023年湖北省生态环保有限公司招聘笔试真题
- 2023年新疆事业单位开展招聘考试真题
- 学校班主任谈心制度实施方案
- 2024年《工会法》知识竞赛题库及答案
- 煤矿事故现场处置管理制度
- CRISPR-Cas9-基因编辑技术简介
- 2024年湖南省高考化学试卷真题(含答案解析)
- 上海市精神卫生中心招聘考试试卷及答案
- 2024年大学试题(财经商贸)-国际服务贸易考试近5年真题集锦(频考类试题)带答案
评论
0/150
提交评论