c++复习资料及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C++》复习资料及答案
一、判断题
1、在变量定义int sum , SUM; 中sum和SUM是两个相同的变量名。
(N )
2、字符串”china"在内存中占据的存储空间是5个字节。
(N )
3、在C++语言中,"A”和’A'是等价的.(N )
4 、C++表达式4/7和4。
0/7的值是相等的,且都为double型。
(N )
5、关系表达式a=b〉c 等价于a=(b>c) ,同时也等价于a==b〉c。
( N )
6、continue 语句和break 语句的区别是:break 语句提前跳出switch结构或结束循环的执行;continue 语句只结束本次循环,而不是终止整个循环的执行。
(Y )
7、数组是一种构造型数据,即是若干相同类型的数据的集合。
()
8、C++语言中,二维数组中元素排列的顺序是:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。
( )
9、#include “iostream。
h” 的作用是将说明标准输入输出流对象的头文件包含到当前源文件中来.(Y )
10、C++语言中允许函数“嵌套调用"和“递归调用”,所谓“递归调用”就是指:在调用一个函数的过程中又出现直接或间接地调用该函数本身。
(Y )
二、选择题
1、由C++源程序文件编译而成的目标代码文件的缺省扩展名为(C )
A)。
cpp B)。
exe C).obj D)。
lik
2、设x和y均为bool类型(bool类型:1或0),则x&&y为真的条件是(A )
A).它们均为真B)。
其中一个为真
C)。
它们均为假D).其中一个为假
3、设有int i;则表达式i=1,++i,++i||++i,i的值为( C )
A)。
1 B).2 C).3 D)。
4
4、设有int i;则表达式(i=1,i=10)?i++||++i:++i的值为(A )
解析:(i=1,i=10)?i++||++i:++i
(i=1,i=10)是真的情况表达式的值=i++||++i
是假的时候=++i
(i=1,i=10)这个是逗号运算符最终i=10,是真
所以表达式的值是i++||++i = 10 ||12 = 1
A).1 B).2 C).3 D).10
5、设有int a[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是( )
A).10,11,12 B).11,12,12
C).10,12,12 D)。
11,11,12
6、设a、b和c都是int型变量,且a=3,b=4,c=5,则下列表达式中,值为0的表达式是()
A).’A’&&’B’ 1 B).a〈=b 1
C)。
c〉=b||b+c&&b—c 1 D). a<=b+c&&c>=a+b
7、若x和y都是int型变量,x=100,y=200,则下面程序片段cout〈〈(x,y)〈<endl;的输出结果是()
解析:语句中遵循优先级高的优先执行的原则,括号优先级最高,所以(x, y)最先计算。
这是一个逗号表达式,注意,是一个表达式,是表达式就有值.逗号表达式的值等于最右边的那个值,即x,y,z的值是z,依次类推.所以(x, y)=y=200,最后执行语句其他部分,输出200
A)。
200 B)。
100
C)。
100 200 D).输出格式符不够,输出不确定的值
8、下面各语句中,能正确进行字符串赋值操作的语句行是()
A)。
char s[4][5]={”ABCDE”}; B)。
char s[5]={’A','B’,'C’,'D’,’E’}(char s[6]= {'A',’B',’C’,'D',’E'})
C). Char *s;s=”ABCDE";D). char *s;cin〉〉s;
9、若有:int a[6]={4,5,6,9,5,7},*p=a,*q=p;则对数组元素的错误引用是()
A)。
a[4] B). *(p+4) C)。
*a++(变量才能加减)D)。
*q++
10、下列不正确的转义字符是()
A)。
’\\' B)。
'\” C).’074' D)。
’\0’
11、假定a和b为int型变量,则执行以下语句后b的值为()
a=1;b=10;
do
{b—=a;a++;}
while (b——〈0);
A)。
9 B)。
–2 C)。
-1 D)。
8
12、对于结构中定义的成员,其隐含访问权限为()
A)。
public B)。
protected
C)。
private D)。
static
13、设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是()
A)。
k=*P1+*P2; B).p2=k;C)。
P1=P2;D).K=*P1 *(*P2);
14、设有如下定义:
int arr[]={6,7,8,9,10};
int * ptr;
则下列程序段的输出结果为()
ptr=arr;
*(ptr+2)+=2;
cout<〈*ptr<〈*(ptr+2)〈〈endl;
A)。
8,10 B).6,8 C)。
7,9 D)。
6,10
15、执行以下程序段后,m的值为()
int a[2][3]={{1,2,3},{4,5,6} };
int m,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A )。
15
B ). 14 C)。
13 D ). 12
三、 填空题
1、描述命题“A 小于B 或小于C”的表达式为 。
2、在C++中有二种参数传递方式: 和 。
3、定义重载函数时,应在参数个数、参数类型或参数次序上 。
4、拷贝初始化构造函数使用 来初始化创建中的对象。
5、一个C++函数由两部分组成,即: 和 。
6、一个C++程序总是从 开始执行.
7、C++语言程序中出现的/*……*/部分或//……部分所起的作用
是: .
8、C++语言中数组元素的访问方式有两种,即: 和 。
9、C++规定:在每一个字符串的结尾加上一个 ,以便系统据此判断字
符串是否结束。
10、C++语言中数据类型的转换有两种,即: 和 .
11、C++语言规定了运算符的优先级和结合性,其结合性分为: 和 。
12、若有int x=4,y=7; 则表达式x+=y,x *=x+y 的值为 。
13、x 〉1 && y !=0的相反条件为 。
14、过程化程序设计方法中,程序由三种基本结构,即:顺序结
构、 、 .
15、在C++中,若需要在程序文件中进行标准输入输出操作,则必须在开始加入预处理命
令 ,若使用到数学库中的函数时,要在源程序的开始加入预处理命
令 。
16、C++语言中用来存放变量地址的变量称作 。
17、int *p [10]; 的含义
是 。
18、int **p ; 的含义是 .
四、简答题
1、请用C++语言的表达式表示下列代数式。
(1) d x π÷
55sin 3 (2)
b a e -3
1 (e=2。
71828) (3) t h a b h b a ÷+-⨯+4
2 (4) 50sin •+b a e (e=2.71828)
(5)
)
5
(2 ln x a
x
a+
⨯
+
2、根据要求完成下列各题。
(1)用两种方法实现一个字符串str,并赋以初值”welcome to Nanjing !"。
(2)定义结构体类型date,该结构体包含的成员为year (整型)、month (整型)、day (整型),再使用typedef
将结构体类型date等价成DA TE,最后使用DA TE定义一个变量pdate。
五、程序分析题
1、写出下列程序运行结果:
(1) #include "iostream。
h”(4分)
void main()
{int x=5,y=8,*px,*py;
px=&x,py=&y;
cout〈〈"num1=”<〈*px〈〈','〈〈”num2=”〈〈*py〈〈’;';
if(x〈y) swap1(x,y);
cout〈〈"num1=”<〈*px〈<’,’〈〈”num2="〈〈*py<〈';';
if(x<y)swap2(px,py);
cout〈<”num1=”〈〈*px<〈’,’<〈”num2="〈〈*py〈〈’;’;
if(x<y) swap3(px,py);
cout〈<"num1="〈〈*px〈<’,’〈<"num2=”〈<*py<<';’;
}
swap1(int a,int b)
{int t;
t=a;a=b;b=t;
cout〈〈”num1=”〈<a<<’,’〈<"num2="<<b〈〈';’;
}
swap2(int *p,int *q)
{int *t;
t=p; p=q;q=t;
cout<<"num1=”〈<*p〈〈’,’<〈”num2="〈<*q〈〈’;’;
}
swap3(int *p,int *q)
{int t;
t=*p;*p=*q;*q=t;
cout〈〈"num1=”〈<*p〈〈',’〈〈”num2=”〈<*q〈<’;';
}
(2)#include “iostream。
h" (3分)
main(int argc,char *argv[])
{int i;
cout<〈”argc="〈〈argc〈〈’;' ;
for(i=0;i〈=argc—1;i++)cout〈<argv[i]〈〈’;’ ;
}
若上面的程序编译`连接后生成可执行文件ABC。
EXE,
若输入以下命令行abc filel file2 〈enter> (表示回车) 注:文件的路径可以不考虑
(3)#include 〈iostream。
h〉(4分)
class A
{ int a,b;
public: A(){a=b=0;}
A( int aa ,int bb ) :a(aa),b(bb)
{cout 〈〈”a="〈〈a〈〈”, ”〈<"b="<〈b〈〈endl;}
~A(){cout〈<”Destructor!”<〈endl;}
};
void main()
{A x ,y(2 ,3); } //对象x , y消亡后分别自动调用析构函数~A( )
2、试分析下列程序或函数的功能。
(4分)
(1) #include ”iostream.h”
void main( )
{ char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{ str[i]=cin.get();
if(str[i]=='\n’) break;
}
str[i]='\0’;
sptr=str;
while(*sptr) cout〈<(*sptr++);
}
3、程序改错题:(4分)
从键盘输入一个分数(0~100),判断它属于哪个分数段,并输出分数段字母代号。
#include 〈iostream.h〉
main()
{int num; char grade;
cout<〈“please input num:”;
cin>>num;
if((grade>=90)&&(grade〈==100)grade="A”; cout〈〈“The grade is:”<〈grade;
if (grade〉=80) grade=”B"; cout〈〈“The grade is:"<〈grade;
if (grade〉=70)grade=”C"; cout<〈“The grade is:”〈〈grade;
if (grade>=60)grade=”D";cout<〈“The grade is:”<〈grade;
else grade=”E”; cout<〈“The grade is:”<〈grade;
}
4、程序填空题: (每空1分,共8分)
(1)以下程序通过调用自定义函数scopy( )将字符串s1复制到字符串s2,并输出显示,请填空。
#include “iostream。
h"
void scopy ( , )
{while(*p!= '\0’)
{;;;}
*q=’\0’;
}
void main( )
{char *s1=”Nanjing,China”;
char s2[20];
cout<<"\nThe s1 is:"<<s1;
;
cout〈<”\nThe s2 is:”〈〈s2;
}
(2) class A
{int *a ;
int n;
public:A(int nn=0) :n(nn)
{if(n==0)a=0;
else a= ;//分配长度为n的动态数组
}
void seta(int *aa)
{for (int i=0;i<n;i++)a[i]=aa[i];}
//定义析构函数,释放动态数组空间} ;
六、编程题
1、编制一个完整的程序:从键盘输入10个整型数组元素,调用自定义函数void sort(int array[], int n )对其进行由大到小排序,最后将排序结果输出到显示器终端,要求自定义函数sort()中用冒泡法实现排序.
04财计《C++程序设计语言》答案
一、判断题(10分)
1~ 5 :F,F,F,F,F
2~10:T,T,T,T,T
二、选择题(25分)
1 ~ 5 :C,A,C,A,C
6 ~10:D,A,C,C,C
11~15:D,A,B,D,A
16~ 20:C,D,D,A,A
三、语法填空题(15分)
1、A〈B || A〈C 。
2、值传递和地址传递。
3、不相同。
4、已存在同类型对象的引用。
5、函数的说明部分和函数体部分。
6、main函数的入口地址处。
7、注释说明,以增加程序的可读性。
8、下标方式和指针方式.
9、字符串结束标志’\0’
10、自动类型转换和强制类型转换。
11、左结合性和右结合性。
12、198 。
13、x〈=1 ||y==0 .
14、选择结构、循环结构。
15、#include <iostream.h〉,#include “math.h” .
16、指针变量。
17、定义指针数组p,它有10个指向整型数据的指针元素组成.
18、定义一个指针变量p,它指向一个指向整型数据的指针变量。
四、简答题(16分)
1、请用C++语言的表达式表示下列代数式.
(1)x*x*x*sin(55*3。
14/180)/(3.14*d)
(2) 1.0/3*exp(a—b)
(3)(a+b*b*h-b/4)/(a+h/t)
(4)exp(a+b)*sin(50*3。
14/180)
(5)log(a+x/5.0*sqrt(a+x*x))
2、根据要求完成下列各题。
(1) static char str[ ]=”welcome to Nanjing !” ;
char *str="welcome to Nanjing !” ;
(2)struct date
{int year;
int month;
int day;
};
typedef struct date DATE;
DATE pdate;
五、程序分析题
1、(1)、各cout按执行次序输出的结果为5,8;8,5;5,8; 8,5; 5,8;8,5;8,5 (2)、程序执行后的输出结果是:argc=3;abc。
exe ; file1; file2;
(3)、程序的输出结果是:a=2,b=3
Destructor!
Destructor!
2、程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。
3、改错题:
#include 〈iostream。
h>
main( )
{int num; char grade;
cout<〈“please input num:”;
cin>>num;
if((grade>=90)&&(grade<=100)grade="A”;cout〈〈“The grade is:”〈<grade;
else if (grade〉=80) grade=”B”;cout〈〈“The grade is:"〈〈grade;
else if (grade〉=70)grade=”C";cout〈〈“The grade is:”<<grade;
else if (grade〉=60)grade=”D”;cout〈<“The grade is:"〈<grade;
else grade=”E";cout<〈“The grade is:”<〈grade;
endif
endif
endif
endif
}
4、填空题:
(1) 以下程序通过调用自定义函数scopy( )将字符串s1复制到字符串s2,并输出显示,请填空。
char *p ,char *q *q=*p; p++; q++;scopy(s1,s2);
(2)new int [n]; //分配长度为n的动态数组
~A() {delete [ ]a ; } //定义析构函数,释放动态数组空间
六、程序设计题(7分)
#include <iostream.h>
main()
{int arr [10];
for(int i=0;i〈10;i++)
cin〉〉arr [i];
Sort(arr,10);
for(int i=0;i〈10;i++)
cout〉>arr [i];
}
void sort(int array[],int n)
{int i,j,k;
for (i=0;i〈=n-1;i++)
for(j=0;j〈=n-i;j++)
if (array[j]>=array[j+1])
{k=array[j];array[j]=array[j+1];array[j+1]=k;}}。