收藏 分销(赏)

C++基础习题.doc

上传人:二*** 文档编号:4517165 上传时间:2024-09-26 格式:DOC 页数:12 大小:66KB
下载 相关 举报
C++基础习题.doc_第1页
第1页 / 共12页
本文档共12页,全文阅读请下载到手机保存,查看更方便
资源描述
东 南 大 学 考 试 卷(A卷) 学号 姓名 密 封 线 课程名称 程序设计与算法语言Ⅰ 考试学期 12-13-2 得分 适用专业 自动化 考试形式 闭卷 考试时间长度 120分钟 自 觉 遵 守 考 场 纪 律 如 考 试 作 弊 此 答 卷 无 效 一、选择:共30分,每题2分 1、 下列标识符哪个是不合法的?___________ A. sin B. 5arry C. _name D. Example2_1 2、 以下数据类型中,表达单字节整数的是: A. char B. long long C. short D. float 3、 下列有关枚举类型的说明哪个是错误的?_________________ A.枚举常量(或称枚举成员)是以标识符形式表示的整型量; B.默认状态下,这个整数就是所列举元素的序号,序号从0开始; C.类型定义时可以为部分或全部枚举常量指定整数值,其余的枚举常量仍按默认方式取值。 D.各枚举常量的值可以重复,但各枚举常量标识符必须不同。 4、 C++中表示字符A,作为字面常量,的正确表示方法是___________。 A.'\65' B."A" C.65 D.'A' 5、 下面有关函数调用的说法哪一个是错误的_________________ A.实参与形参的数目要求必须是相同的; B.实参与形参的对应关系取决于位置而不是名字; C.实参与对应的形参应类型匹配,即实参的类型可以转化为形参类型; D.C++参数传递两种方式:传值与引用。 6、 判断下列哪些正确的常量_______________(多选), 7、 判断下列哪些是变量申明_______________(多选) A. "China" B. const int n = 10; C. int m = 5; D. 'a' E. char ch='a' F. int array[5] = {1, 2, 3, 4, 5}; G. char s[] = "Hello"; 8、 无论循环条件是否成了,循环至少执行一次的是 。 A. for语句 B. while语句 C. do...while语句 D. 以上都不是 9、 要判断char型变量m是否是数字字符,可以使用下列表达式 。 A.0 <= m && m <= 9 B.'0' <= m && m <= '9' C."0" <= m && m <= "9" D.'0' <= m <= 'Z' 10、 从语法上,下列语句正确的是______。 A. int A = 'A'; int &B = A; B. int A = 65; int * p = A; C. int A = 088; int * p = A; D. int A = 0x65; int * p = *A; 11、 float m = 3 / 2 + 0.5; 运行后m的值为:____________ A. 3 B. 2 C. 1.5 D. 1 12、 以下两个函数原型,不可同时存在的是:_____________ A. float Add(float a, float b); float Add(float a, int b); B. double Add(float a, float b); float Add(float a, float b); C. float Add(float a, float b = 0); float Add(float a, int b, int c); D. double Add(double a, double b); float Add(float a, float b); 13、 以下对字符串的初始化中,无法得到一个符合C++规范的字符串的是:_____________ A. char str[1024] = {'A', 'B', 'C'}; B. char str[3] = {'A', 'B', 'C'}; C. char str[1024] = "ABC"; D. char str[10] = "ABC"; 14、 从语法上,下列语句正确的是______。 A. int A[1024]; int &B = A; B. int A[1024]; int * p = A; C. int A[1024]; int ** p = A; D. int A[1024]; int p[1024] = A; 二、填空题(每空1分,共5分) 1. 程序构造的基本方法是 和 。 2. 计算机的存储器有内存和外存之分。程序员编写的程序以文件形式保存在磁盘上,目的是 。执行程序时,程序代码必须放在内存中,原因是 。 3. CPU中的Cache主要解决计算机CPU和主存之间 问题。 第二部分 C++程序设计 三、单选题(每题1分,共20分) 1. C++中的实数可以写成不同表示形式,下列表示形式中不正确的是 。 A. 54.32 B. 5.432E1 C. 1e5.432 D. .5432e2 2. 下面选项中能用作用户自定义的标识符是 。 A.what? B.-var C.3Xyz D.Float 4. 设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=c>d)后,m,n的值为 。 A.0,0 B.0,2 C.1,0 D.2,2 5. 设有说明: int x=10,f; float y=2.5;执行表达式f=x/(int)y后,则f、y的值分别为 。 A. 4,2 B. 5,2 C. 4,2.5 D. 5,2.5 6. 设有变量说明int i=3,j=5,m; 执行语句 m=(i++)-(--j);后,m的值是 。 A. -1 B. 0 C. -2 D. 不确定,与编译器有关 7. 为了使输出结果为4, 执行以下程序时给a和b输入的值应满足的条件是 。 #include <iostream.h> void main() { int s,t,a,b; cin>>a>>b; s=1,t=1; if(a>0)s++; if(a>b)t++; else if(a==b)t+=s; else t=2*s; cout<<t; } A. a>b B. a<b<0 C. 0<a<b D. 0>a>b 8. 若a,b均为int型变量,且a=100,则以下关于for循环语句的正确判断是 。 for(b=99;a!=b;++a,b--) cout<<“----\n”; A. 循环体只执行一次 B. 死循环 C. 循环体不执行 D. 输出 ---- 9. 在下面的函数原型说明中,存在着语法错误的是 。 A.   void BC(int a,int);      B. int BD(int , int); C.   double BE(int , int=5);     D. int BF(int x ; int y); 10. 下列函数定义中,会出现编译错误的是 。 A. void max(int x,int y,int &z) B. int max(int x,y) { z=x>y?x:y; } { int z; z=x>y?x:y; return z; } B. int max(int x, int y) D. int max(int x,int y) { int z; { return (x>y?x:y); } z=x>y?x:y; return z; } 11. 设有函数定义:void f(int n,double x);若以下选项中的变量都已正确定义并赋值,则调用f函数的正确形式为 。 A. f(int i,double z); B. j=f(1,100); C. f(x,n); D. void f(n,x); 12. 有以下程序 int fun1(double a){return 2*a;} int fun2(double x,double y) {double a=fun1(x); double b=fun1(y);return a+b; } void main() { int w=fun2(1.4,2.2); return 1; } 程序执行后变量w中的值是 。 A. 7 B. 6 C. 6.0 D. 1 13. 设有函数定义int add(int x,int y){return x+y;},则其不正确的重载函数的定义是 。 A. void add(int x,int y) {return;} B. add(int x,int y,int z) {return x+y+z;} C. int add(doble x,double y) {return x+y;} D. double add(int x,double y) {return x+y;} 14. 下列程序在编译时有错,该错误所在行是 。 #include <iostream.h> #define N 3 //A void main(void) { int data[N][N]; //B for(int i=0;i<N;i++) for(int j=0;j<N;j++) cin>>data[i][j]; //C for(int i=0;i<N;i++) for(j=0;j<N;j++) //D cout<<data[i][j]<<‘\t’; cout<<endl; } A. A和B B. A C. C D. D 15. 对于下列程序片段,叙述正确的是 。 #include <iostream.h> #define M(a,b) a*b; void main() { int x=M(3+4,5+6),y; y=M(3,4); cout<<x<<‘\t’<<y<<endl; } A. 输出29 12 B. 输出77 12 C. 输出 41 12 D.编译有错 16. 设有说明static int n1=10;const int n2=10; int n4=10; #define n3 10 则关于下列语句叙述正确的是 。 ①int data1[n1]; ②int data2[n2]; ③int data3[n3]; ④int data4[n4]; A. 全部正确 B. ①②③均正确 C. ②③均正确 D. 均不正确 17. 假如有:int a= 68; char c1=a; cout<<c1<<endl; 则输出结果为: A. a B. 68 C. D D. 语法错 18. 设有定义:int x[10]={0};int y[]={1,2,3};则下列叙述正确的是 。 A. 数组x的首元素为零,其他元素为随机数。组y的大小不确定; B. 数组x的所有元素均为零。数组y的大小为3; C. 数组x的所有元素均为零,数组y的大小不确定; D. 数组x的首元素为零,其他元素为随机数。数组y的大小为3。 19. 设有定义int a[]={1,2,3,4,5,6,7,8,9,10};则下列表达式中,数值为4的表达式的个数为 。 ①a[4] ②a[10]-6 ③a[3]+1 ④a[a[9]-a[6]] A. 1 B. 2 C. 3 D.4 20. 以下能正确定义二维数组的是 。 A. int a[][4]; B. int a[][4]={2*4}; C. int a[][4]={}; D. int a[2][4]={{1},{2},{3,4},{5}}; 四、阅读程序题(共41分)(注:答案请写在该题右边空白处。) 1.以下程序片段的输出结果为(4分) #include <iostream.h> void main() { int a=97; char c=0x61;//十六进制数61H cout<<a<<‘\t’; cout<<hex<<a<<‘\t’; cout<<c<<‘\t’; cout<<a+c<<endl; } 2.以下程序运行后的输出结果是(4分) #include <iostream.h> void main() { int x=1,y=2,z=3,t=0; if(y<x&&x<z) t=x; x=z; z=t; if(x<z&&y<z) t=y; y=z; x=t; cout<<x<<y<<z<<t<<endl; } 3.以下程序运行后的输出结果是(4分) #include <iostream.h> int f(int n) { return n %2;} void main() { int data[8]={1,3,5,2,4,6},s=0; for(int i=0; f(data[i]); i++) s+=data[i]; cout<<s<<‘\t’<<i<<endl; } 4. 以下程序运行后的输出结果是(6分) #include <iostream.h> void f(int x,int &y) { int t; t=x;x=y;y=t; cout<<x<<‘\t’<<y<<endl; } void main() { int a=10,b=20; cout<<a<<‘\t’<<b<<endl; f(a,b); cout<<a<<‘\t’<<b<<endl; } 5.仔细阅读下列程序,回答后面的问题(第一问4分,第二问2分) #include <iostream.h> double f() { static double f1=1; static double f2=0; double f3=f1+f2; f1=f2; f2=f3; return f3; } void main() { int n; cin>>n; for(int i=1;i<=n;i++) cout<<f()<<‘\t’; cout<<endl; } (1). 当从键盘输入4时,程序的输出结果是 。 (2). 该程序的功能是 。 6.程序运行后的输出结果是(4分) #include <iostream.h> void f(int x[], int i, int j) { int t; if(i<j){ t=x[i]; x[i]=x[j]; x[j]=t; i++;j--; f(x,i,j); } } void main() { int data[]={2,0,3,8}; f(data,0,3); for(int i=0;i<4;i++) cout<<data[i]<<‘\t’; cout<<endl; } 7. 程序运行后的输出结果是(7分) #include <iostream.h> void main() { int data[]={6,5,4,3,2,1,0}; for(int i=0;i<3;i++) for(int j=0;j<6-i;j++) if(data[j]>data[j+1]){ int t=data[j]; data[j]=data[j+1]; data[j+1]=t; } for(i=0;i<7;i++) cout<<data[i]<<‘\t’; cout<<endl; } 8.当程序运行过程中从键盘输入3时,输出结果是(6分) #include <iostream.h> void main() { const int N=10; int data[N][N]={0}; int n;int k=1; cout<<“请输入一个不大于10的正整数:\n“; cin>>n; for(int m=0;m<=n-1;m++) for(int j=0;j<=m;j++) data[m-j][j]=k++; for(m=n;m<=2*(n-1);m++) for(int j=m-n+1;j<n;j++) data[m-j][j]=k++; for(int i=0;i<n;i++){ for(int j=0;j<n;j++) cout<<data[i][j]<<‘\t’; cout<<endl; } } 五、程序完善题(每空2分,共24分) 1. 有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?以下是求解上述问题的程序,请仔细阅读,并完善程序。(6分) #include <iostream.h> void main(void) { int ; for( ; i>0; i--) ; cout<<”这堆桃子原来共有”<<num<<”只!”<<endl; } 2.完善下列程序,使其运行后能输出如右图1所示的图形(6分) #include <iostream.h> void main(void) { char c=‘A’; for(int i=1; i<=4; i++){ for(int j=1; j<=4-i; j++) A BBB CCCCC DDDDDDD CCCCC BBB A 图1 第2题的输出结果 cout<<" "; for(j=1; j<= ; j++) cout<<c; c++; cout<<endl; } ; for(i=1; i<=3; i++){ for(int j=1; j<=i; j++) cout<<" "; for(j=1;j<= ;j++) cout<<c; c--; cout<<endl; } } 3.下列程序的功能是在有序(降序)的数组中,用二分法查找指定的元素,请完善该程序(6分) #include <iostream.h> int B_Search(int data[],int x,int n) { int right=n-1; int left=0; int index; while(left<=right){ index=(left+right)/2; if(data[index]<x) ; else if(data[index]>x) ; else return index; } ; } void main(void) { int data[]={9,8,6,5,4,3,2,1}; int z; cout<<"请输入待查的数:"<<endl; cin>>z; int index=B_Search(data,z,sizeof(data)/sizeof(int)); if( index == -1) cout<<"数组中无此元素!"<<endl; else cout<<z<<"在数组中的位置为:"<<index<<endl; } 4.下列程序的功能是判别从键盘输入的一个不超过5位的整数是不是回文数,请完善程序。(6分) #include <iostream.h> int Is_Palindrome(int data[], int n) { int right=n-1; int left=0; while(left<=right){ if( ) return 0; else{ left++; right--; } } return 1; } void main(void) { const int N=5; int data[N]; int num=0;int x; cout<<"请输入待判别的数(不超过5位整数):"<<endl; cin>>x; int z=x; while(z!=0){ data[num]=z % 10; ; num++; } int flag=Is_Palindrome( ); cout<<"输入的数据是:"<<x<<endl; if(flag) cout<<"该数是回文数!"<<endl; else cout<<"该数不是回文数!"<<endl; } (此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持) 编辑版word
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服