资源描述
东 南 大 学 考 试 卷(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
展开阅读全文