1、C+基础习题东 南 大 学 考 试 卷(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. float3、 下列有关枚举类型的说明哪个是错误的?_A枚举常量(或称枚举成员)是以标识符形式表示的整型量;B默认状态下,这个整数就是所
2、列举元素的序号,序号从0开始;C类型定义时可以为部分或全部枚举常量指定整数值,其余的枚举常量仍按默认方式取值。 D各枚举常量的值可以重复,但各枚举常量标识符必须不同。4、 C+中表示字符A,作为字面常量,的正确表示方法是_。A65 BA C65 DA5、 下面有关函数调用的说法哪一个是错误的_A实参与形参的数目要求必须是相同的;B实参与形参的对应关系取决于位置而不是名字;C实参与对应的形参应类型匹配,即实参的类型可以转化为形参类型;DC+参数传递两种方式:传值与引用。6、 判断下列哪些正确的常量_(多选),7、 判断下列哪些是变量申明_(多选)A. China B. const int n =
3、 10;C. int m = 5;D. aE. char ch=a F. int array5 = 1, 2, 3, 4, 5;G. char s = Hello;8、 无论循环条件是否成了,循环至少执行一次的是 。A. for语句 B. while语句 C. do.while语句 D. 以上都不是9、 要判断char型变量m是否是数字字符,可以使用下列表达式 。A0 = m & m = 9 B0 = m & m = 9C0 = m & m = 9 D0 = m b)&(n=cd)后,m,n的值为 。A0,0 B0,2 C1,0 D2,25. 设有说明: int x=10,f; float y
4、=2.5;执行表达式f=x/(int)y后,则f、y的值分别为 。A. 4,2 B. 5,2 C. 4,2.5 D. 5,2.56. 设有变量说明int i=3,j=5,m; 执行语句 m=(i+)-(-j);后,m的值是 。 A. -1 B. 0 C. -2 D. 不确定,与编译器有关7. 为了使输出结果为4, 执行以下程序时给a和b输入的值应满足的条件是 。#include void main() int s,t,a,b; cinab; s=1,t=1; if(a0)s+; if(ab)t+; else if(a=b)t+=s; else t=2*s; coutb B. ab0 C. 0a
5、ab8. 若a,b均为int型变量,且a=100,则以下关于for循环语句的正确判断是 。for(b=99;a!=b;+a,b-) couty?x:y; int z; z=xy?x:y; return z; B. int max(int x, int y) D. int max(int x,int y) int z; return (xy?x:y); z=xy?x:y; return z; 11. 设有函数定义:void f(int n,double x);若以下选项中的变量都已正确定义并赋值,则调用f函数的正确形式为 。 A. f(int i,double z); B. j=f(1,100)
6、; 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. 113. 设有函数定义int add(int x,int y)return x+y;,则其不正确的重载函数的定义是 。 A. void add(int x,in
7、t 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 #define N 3 /A void main(void) int dataNN; /Bfor(int i=0;iN;i+) for(int j=0;jdataij; /C for(int i=0;iN;i+) for(j=0;jN;j+) /D coutdat
8、aijt; coutendl; A. A和B B. A C. C D. D15. 对于下列程序片段,叙述正确的是 。 #include #define M(a,b) a*b; void main() int x=M(3+4,5+6),y; y=M(3,4); coutxtyendl; 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 data1n1; int data2n2; int data3n
9、3; int data4n4;A. 全部正确 B. 均正确 C. 均正确 D. 均不正确17. 假如有:int a= 68; char c1=a; coutc1endl; 则输出结果为: A. a B. 68 C. D D. 语法错18. 设有定义:int x10=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
10、,8,9,10;则下列表达式中,数值为4的表达式的个数为 。 a4 a10-6 a3+1 aa9-a6 A. 1 B. 2 C. 3 D.420. 以下能正确定义二维数组的是 。 A. int a4; B. int a4=2*4; C. int a4=; D. int a24=1,2,3,4,5; 四、阅读程序题(共41分)(注:答案请写在该题右边空白处。)1.以下程序片段的输出结果为(4分)#include void main() int a=97; char c=0x61;/十六进制数61H coutat; couthexat; coutct; couta+cendl;2.以下程序运行后的
11、输出结果是(4分)#include void main() int x=1,y=2,z=3,t=0; if(yx&xz) t=x; x=z; z=t; if(xz&yz) t=y; y=z; x=t; coutxyztendl;3.以下程序运行后的输出结果是(4分)#include int f(int n) return n %2;void main() int data8=1,3,5,2,4,6,s=0; for(int i=0; f(datai); i+)s+=datai; coutstiendl;4. 以下程序运行后的输出结果是(6分)#include void f(int x,int
12、&y) int t; t=x;x=y;y=t; coutxtyendl;void main() int a=10,b=20; coutatbendl; f(a,b); coutatbendl;5.仔细阅读下列程序,回答后面的问题(第一问4分,第二问2分)#include double f() static double f1=1; static double f2=0; double f3=f1+f2; f1=f2; f2=f3; return f3;void main() int n; cinn; for(int i=1;i=n;i+) coutf()t; coutendl;(1). 当从键
13、盘输入4时,程序的输出结果是 。(2). 该程序的功能是 。6.程序运行后的输出结果是(4分)#include void f(int x, int i, int j) int t; if(ij) t=xi; xi=xj; xj=t; i+;j-; f(x,i,j); void main() int data=2,0,3,8; f(data,0,3); for(int i=0;i4;i+) coutdatait; coutendl;7. 程序运行后的输出结果是(7分)#include void main() int data=6,5,4,3,2,1,0; for(int i=0;i3;i+) f
14、or(int j=0;jdataj+1) int t=dataj; dataj=dataj+1; dataj+1=t; for(i=0;i7;i+) coutdatait; coutendl;8.当程序运行过程中从键盘输入3时,输出结果是(6分)#include void main() const int N=10; int dataNN=0; int n;int k=1; coutn; for(int m=0;m=n-1;m+) for(int j=0;j=m;j+) datam-jj=k+; for(m=n;m=2*(n-1);m+) for(int j=m-n+1;jn;j+) data
15、m-jj=k+; for(int i=0;in;i+) for(int j=0;jn;j+) coutdataijt; coutendl; 五、程序完善题(每空2分,共24分)1. 有一堆桃子不知数目,猴子第一天吃掉一半,觉得不过瘾,又多吃了一只,第二天照此办理,吃掉剩下桃子的一半另加一个,天天如此,到第十天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个?以下是求解上述问题的程序,请仔细阅读,并完善程序。(6分)#include void main(void) int ; for( ; i0; i-) ; cout”这堆桃子原来共有”num”只!”endl;2.完善下列程序,使其运行后能
16、输出如右图1所示的图形(6分)#include void main(void) char c=A; for(int i=1; i=4; i+) for(int j=1; j=4-i; j+)ABBBCCCCCDDDDDDDCCCCCBBBA图1 第2题的输出结果 cout ; for(j=1; j= ; j+) coutc; c+; coutendl; ; for(i=1; i=3; i+) for(int j=1; j=i; j+) cout ; for(j=1;j= ;j+) coutc; c-; coutendl; 3.下列程序的功能是在有序(降序)的数组中,用二分法查找指定的元素,请完
17、善该程序(6分)#include 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(dataindexx) ; else return index; ;void main(void) int data=9,8,6,5,4,3,2,1; int z; cout请输入待查的数:z; int index=B_Search(data,z,sizeof(data)/sizeof(int); if( index = -1) c
18、out数组中无此元素!endl; else coutz在数组中的位置为:indexendl;4.下列程序的功能是判别从键盘输入的一个不超过5位的整数是不是回文数,请完善程序。(6分)#include 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 dataN; int num=0;int x; cout请输入待判别的数(不超过5位整数):x; int z=x; while(z!=0) datanum=z % 10; ; num+; int flag=Is_Palindrome( ); cout输入的数据是:xendl; if(flag) cout该数是回文数!endl; else cout该数不是回文数!endl;(此文档部分内容来源于网络,如有侵权请告知删除,文档可自行编辑修改内容,供参考,感谢您的配合和支持)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1