选择填空:(每题1分,共10分)
1. 已知各变量的类型说明如下:
int a = 1;
double x = 1.42;
char ch;
则以下不符合C++语言语法的表达式是 C
A、a += 0x123fd B、x = 12e-8 C、ch = “x” D、ch = ‘\a\’
2.下面 D 是死循环。
A、for(i=0; i<10; i++) cout << i << " ";
B、for(i=10; i>=1; i--) cout << i << " ";
C、i=10; do { cout << i-- << " "; } while(i > 0);
D、i=0; while(i <= 10); cout << ++i << " ";
3. C++语言的跳转语句中,对于break和continue说法正确的是 C :
A、break语句只应用于循环体中
B、continue语句用于跳出循环语句
C、continue语句用于跳出当前的循环周期
D、break语句用于跳出当前的循环周期
4. 有如下定义语句:int a[] = {1,2,3,4,5};,则对语句int *p=a;正确的描述是 B 。
A、语句 int *p = a;定义不正确
B、语句 int *p=a;初始化变量p,使其指向数组对象a的第一个元素
C、语句int *p=a; 是把数组a的值赋给变量p
D、语句int *p=a; 是把a[0]的值赋给变量p
5 若有以下定义和语句,则合法的表示是 C
char a[ ] = ”abcdefg”; char *p=a;
A、变量p和变量a是等价的 B、数组a的长度是7 C、p[7]的值是’\0’ D、a[7]的值是‘0’
6下列语句正确的是 A
A char a[2] = {’a’}; B char 3a = ’\0’; C char a[ ] = 'abc'; D char a = "\0";
7、ch为char类型,判断ch为小写字符的表达式是 C 。
A、’a’<= ch <= ’z’ B、(ch >= ’a’) & ( ch <= ’z’)
C、(ch >= ’a’) && (ch <= ’z’) D、(ch >= ’a’) || (ch <= ’z’)
8.链表结点的结构类型为 struct linkRec {int data; linkRec *next;},如果指针rear指向尾结点,将节点p链入表尾,并将p作为新的表尾可用语句 B
A、 rear->next=p->next; rear=p; B、rear->next=p; rear=p;
C、 rear->next= rear; p->next= p; D、 (*rear ).next= rear; (*p).next =p;
简答题(16分)
1. 写出完成下列任务的表达式(6分):
a. 取出整型变量n的个位数
b. 取出整型变量n的十位以上的数字
c. 将整型变量a和b相除后的商存于变量c,余数存于变量d
d. 将字符变量ch中保存的小写字母转换成大写字符
e. 将double型的变量d中保存的数字按四舍五入的规则转换成整数
f 判断指针p是否为空指针
2. 重写代码(5分):
a.用一个switch语句重写下列代码(3分)
if (ch == ‘E’ || ch ==’e’)
++countE;
else if (ch ==’A’ || ch ==’a’)
++countA;
else if (ch ==’I’ || ch ==’I’)
++countI;
else
cout << “error”;
b.用一个if语句重写下列代码(2分)
if (ch ==’E’) ++c;
if (ch ==’E’) cout << c << endl;
3. 当遇到下列情况时,你将怎样编写for语句的控制行。(5分)
a.从1计数到100。
b.从2, 4, 6, 8, …计数到100。
c.从0开始,每次计数加7,直到成为三位数。
d.从100开始,反向计数,99, 98, 97, …直到0。
e.从’a’变到’z’。
程序理解:(每题3分,共30分)
1. 写出下面程序的执行结果
int main()
{ for (char ch = ‘A’ ; ch < ‘G’; ++ch)
switch(ch) {
case ‘A’ : case ‘B’ : cout << ch;
case ‘C’: cout << ‘C’ << endl; break;
case ‘D’: case ‘E’: cout << ch << endl; break;
case ‘F’: cout << ch;
default: cout << ch << endl;}
return 0;}
请写出下列程序段的输出结果
for (k = 0; k < 2; ++k);
for (m = k; m >= 0; --m)
cout << k << m << endl;
3. 写出以下程序的输出结果。
int main( )
{ char a[10] = {'a’,'b','c','d','e','f','7','8','9',0};
char *p;
int i = 8;
p = a + i;
cout << (p - 2);
return 0 ;}
4. 已知华氏温度到摄氏温度的转换公式为
EMBED Equation.3
某同学编写了一个将华氏温度转换成摄氏温度的程序:
int main()
{ int c, f;
cout << “请输入华氏温度:“ ;
cin >> f ;
c = 5 / 9 * ( f – 32) ;
cout << “对应的摄氏温度为:” << c;
return 0;}
但无论输入什么值,程序的输出都是0.请你帮他找一找哪里出问题了。
5 写出运行结果
int main()
{ int a[3]={1, 2 , 3}, *p;
int i, b[6];
p = a;
b[0] = *p;
p++; b[1] = *p;
b[2] = *p;
b[3] = *(p – 1);
b[4] = (*p) + 1;
b[5] = *(p + 1);
for(i=0; i<6; i++) cout << b[i] << " ";}
6 写出运行结果:
void foo( int &c){
static a = 1;
c += a++;}
int main()
{int a;
int &b = a;
a = 10;
foo(a);
cout << a << endl;
foo(++b);
cout << a << endl;
return 0;}
7 写出运行结果
template
T avg(T x[],int n);
int main()
{ int a[] = {4,5,2,8,9,3};
double b[] = {3.5,6.7,2,5.2,9.2};
cout << "average of A: " << avg(a,6) << endl;
cout << "average of B: " << avg(b,5) << endl;
return 0;}
template
T avg(T x[],int n)
{ int i;
T maxv = x[0];
for(i=1;i