《C++程序设计试卷》
单项选择题:(每题2分,共20分)
- 结构化程序设计的三种基本控制结构是( )。
A)输入、处理、输出 B)树形、网形、环形
C)顺序、选择、循环 D)主程序、子程序、函数
- 下列哪个是C++的合法变量名( )?
A) 8d B) ex3.12 C)1_2a D) _int
- 若整型变量 int a=2,b=1,c=3,d=4; 则条件表达式a<b?a:c<d?c:d的值为( )。
A) 1 B) 2 C) 3 D) 4
- for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是( )。
A)0 B)5 C)6 D)无限循环
- 若一个函数体中定义与全局变量相同名字的变量x,在函数体内对x赋值,修改的是 ( )。
A)局部变量和全局变量都被修改 B) 全局变量x
C)不确定 D) 局部变量 x
- 设有如下定义语句:int a[5],*p=a;,则下列表达式错误的是( )。
A)p++ B)a++ C)p-a D)a+1
- 设有变量定义: double x; int m; 函数原型声明:void f(double *, int &);
则正确的函数调用语句是( )。
A) f(&x,m); B) f( x, &m); C) f(*x, &m); D) f (x,*m);
- 若用数组名作为调用函数的实参,则传递给形参的是( )。
A) 数组存贮首地址 B) 数组的第一个元素值
C) 数组中全部元素的值 D) 数组元素的个数
- 设有二维数组a[3][4], 不等价的一对表达是( )。
A) *(a[0]+2) 与 a[0][2] B) a[0]+3 与 &a[0][3]
C) *a[1] 与 a[1][0] D) a[0][2] 与 a[0]+2
- 若有函数原型int max (int a , int b); 并且有:int (*p) ( int , int ) = max ;
调用max函数的正确方法是( )。
A) ( * p ) max ( a , b ) ; B) * p max ( a , b ) ;
C) ( * p ) ( a , b ) ; D) * p ( a , b ) ;
答案栏:
1、____ 2、____ 3、____ 4、____5、____ 6、____7、___ 8、____9、___ 10、____
- 简答题:(共20分)
- 语句 cout<< ”y\x42\\x\102\nx”的显示结果是什么?说明理由。(3分)
答:
- 以下程序的输出结果是什么?请说明原因。(2分)
int main()
{ unsigned short a=65535;
short int b;
b=a;
cout<<”b=”<<b;
return 0;
}
答:
- 设有说明char a[6], * b =a; sizeof(a), sizeof(b)的值各是多少?分析结果原因。(3分)
答:
- 设有说明int a[2*3]; 请写出两个表示数组a最后一个元素地址的表达式(2分)。
答:
- 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的原型。(2分)
main()
{ double s[10][22];
int n;
┆
fun(s);
┆
}
答:
- 设有如下定义:
struct person{char name[10]; int age;};
person class[10]={“Johu”, 17,
“Paul”, 19
“Mary”, 18,
“Adam 16,};
根据上述定义,写出能输出字母M语句。(3分)
答:
- 以下语句不能正确输出单链表head的数据元素值,请找出原因。(2分)
struct link{int data; link * next; };
link *head, *p;
……
p=head;
while(p!=NULL) {cout<<p.data; p++; }
……
答:
- 设有函数调用语句 array_max_min(a ,n, max, min); 功能是由参数max, min返回基本整型数组a 的n个元素中的最大值和最小值。对应的函数原型是什么?(3分)(只需给出原型,不用写函数定义)
答:
- 阅读程序,写出运行结果:(每小题4分,共20分)
- #include<iostream>
using namespace std;
int main ()
{ int x,n;
x=n=5;
x+=n++;
cout<<x<<n<<endl;
return 0;
}
- #include<iostream>
using namespace std;
int main ()
{ char s[6]="abcde", *p=s;
cout<<*p<<p<<endl;
return 0;
}
- #include <iostream>
using namespace std;
int main()
{ int i,j;
for( i=1; i<=3; i++ )
{ j=1;
while (j<i)
{ cout << i<<','<<j<<endl;
j++;
}
}
return 0;
}
- 以下程序的输出的结果是
#include <iostream>
using namespace std;
void incre();
int x=3;
int main()
{ int i;
for (i=1;i<x;i++) incre();
}
void incre()
{ static int x=1;
x*=x+1;
cout <<x;
}
- #include <iostream>
using namespace std;
void fun ( int , int , int * ) ;
int main ( )
{int x , y , z ;
fun ( 5 , 6 , &x ) ;
fun ( 7 , x , &y ) ;
fun ( x , y , &z ) ;
cout << x << ","<< y << "," << z ;
return 0;
}
void fun ( int a , int b , int * c )
{ b+=a ; * c=b-a ; }
答案栏:1、__________________________ 2、__________________________
3、__________________________ 4、__________________________
5、__________________________
- 程序填空题:(每空2分,共22分)
- 下面程序的功能是:输入三角形的三条边存放在变量a,b和c 中,判别它们能否构成三角形,若能,则判断是等边、等腰、还是其它三角形,在横线上填上适当内容。
#include <iostream>
using namespace std;
int main()
{ float a, b, c ;
cout<<"a,b,c=";
cin>>a>>b>>c;
if ( a+b>c && b+c>a && c+a>b )
{
if ( 【1】 )
cout<<"等边三角形!\n";
else if ( 【2】 )
cout<<"等腰三角形!\n";
else cout<<"其它三角形!\n";
}
else cout<<"不能构成三角形!\n";
return 0;
}
- 以下程序功能是打印100以内个位数为6且能被3整除的所有数。
#include <iostream>
using namespace std;
int main ( )
{ int i , j ;
for ( i = 0 ; ___【3】___ ; i + + )
{ j = i * 10 + 6 ;
if ( ___【4】____ ) continue ;
cout << j << ” ” ;
}
return 0;
}
- 下列程序实现两个变量的值互换。
#include <iostream>
using namespace std;
void swap(int *, int *);
int main()
{ int a=3,b=8;