|---|
| |
诚信应考 , 考试作弊将带来严重后果!
《 C++ 程序设计试卷》
注意事项:1. 考前请将密封线内填写清楚;
2. 所有答案请答在试卷的答案栏上;
3 .考试形式:闭卷
4. 本试卷共 五 大题,满分100分, 考试时间120分钟。
|---------|-------|-------|-------|-------|-------|--------|
| 题 号 | 一 | 二 | 三 | 四 | 五 | 总分 |
| 得 分 | | | | | | |
| 评卷人 | | | | | | |
- 单项选择题:(每题2分,共20分)
- 结构化程序设计的三种基本控制结构是( C )。
A)输入、处理、输出 B)树形、网形、环形
C)顺序、选择、循环 D)主程序、子程序、函数
解析:顺序,选择,循环
- 下列哪个是C++的合法变量名( D )?
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的值为( C )。
A) 1 B) 2 C) 3 D) 4
显而易见
- for(int x=0,y=0;!x&&y<=5;y++)语句执行循环的次数是( 6 )。
A)0 B)5 C)6 D)无限循环
- 若一个函数体中定义与全局变量相同名字的变量x,在函数体内对x赋值,修改的是 ( D )。
A)局部变量和全局变量都被修改 B) 全局变量x
C)不确定 D) 局部变量 x
- 设有如下定义语句:int a[5],*p=a;,则下列表达式错误的是( B )。
A)p++ B)a++ C)p-a D)a+1
数组无法做++操作
- 设有变量定义: double x; int m; 函数原型声明:void f(double *, int &);
则正确的函数调用语句是( A )。
A) f(&x,m); B) f( x, &m); C) f(*x, &m); D) f (x,*m);
- 若用数组名作为调用函数的实参,则传递给形参的是( A )。
A) 数组存贮首地址 B) 数组的第一个元素值
C) 数组中全部元素的值 D) 数组元素的个数
- 设有二维数组a[3][4], 不等价的一对表达是( d )。
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
D应该为*(a[0]+2)
- 若有函数原型int max (int a , int b); 并且有:int (*p) ( int , int ) = max ;
调用max函数的正确方法是( C )。
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分)
答:yB\xB
- 以下程序的输出结果是什么?请说明原因。(2分)
int main()
{ unsigned short a=65535;
short int b;
b=a;
cout<<"b="<<b;
return 0;
}
答:-1
- 设有说明char a[6], * b =a; sizeof(a), sizeof(b)的值各是多少?分析结果原因。(3分)
答:
6
4
- 设有说明int a[2*3]; 请写出两个表示数组a最后一个元素地址的表达式(2分)。
答:&a[5]
a+5
- 设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的原型。(2分)
main()
{ double s[10][22];
int n;
┆
fun(s);
┆
}
答:void fun(doubke **p)
- 设有如下定义:
struct person{char name[10]; int age;};
person class[10]={"Johu", 17,
"Paul", 19
"Mary", 18,
"Adam 16,};
根据上述定义,写出能输出字母M语句。(3分)
答:6. class[2].name[0]
- 以下语句不能正确输出单链表head的数据元素值,请找出原因。(2分)
struct link{int data; link * next; };
link *head, *p;
......
p=head;
while(p!=NULL) {cout<<p-}data; p=p->next; }
......
答:
- 设有函数调用语句 array_max_min(a ,n, max, min); 功能是由参数max, min返回基本整型数组a 的n个元素中的最大值和最小值。对应的函数原型是什么?(3分)(只需给出原型,不用写函数定义)
答:void array_max_min(int *, int , int *,int *);
- 阅读程序,写出运行结果:(每小题4分,共20分)
- #include<iostream>
using namespace std;
int main ()
{ int x,n;
x=n=5;
x+=n++;
cout<<x<<n<<endl;
return 0;
}
-
106
-
#include<iostream>
using namespace std;
int main ()
{ char s[6]="abcde", *p=s;
cout<<*p<<p<<endl;
return 0;
}
-
aabcde
-
#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;
}
- 2,1
3,1
3,2
- 以下程序的输出的结果是
#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 ; }
- 程序填空题:(每空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;
}
(1) a= =b && b= =c
(2) a= =b || a= = c || b= =c
- 以下程序功能是打印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;
}
(3) i <10
(4) j % 3
- 下列程序实现两个变量的值互换。
#include <iostream>
using namespace std;
void swap(int *, int *);
int main()
{ int a=3,b=8;
swap(++【++ ++5++ ++】++ );
cout<<"a="<<a<<" b="<<b<<endl;
return 0;
}
void swap(int *x,int *y)
{ int temp=++【++ ++6++ ++】++ ; *x=*y; *y=temp; }
(5) &a, &b
- 求n(n≥6)内的所有偶数表示为两个素数之和,下图为输入16的运行结果。补充完整以下程序。
[提示:一个偶数n(n≥6)可以表示为 1+(n-1),2+(n-2),3+(n-3),... ]
#include <iostream>
using namespace std;
#include<cmath>
#include<iomanip>
int isprime(int);
int main()
{ int num,i,n;
cout<<" 请输入一个偶数N(N>=6):";
cin>>num;
for( n=6; n<=num; n+=2)
for( i=3;i<=n/2;i+=2)
if(++【++ ++7++ ++】++_____)
{cout<<setw(3)<<n<<"="<<setw(3)<<i<<" +"<<setw(3)<<(n-i)<<endl;
break;}
return 0;
}
int isprime(int m)
{ int i, k=sqrt(m);
for(i=2; i<=k; i++)
if(++【++ ++8++ ++】++_____) return 0 ;
++【++ ++9++ ++】++_____
}
(7) isprime(i) && isprime(n-i)
(8) !( m%i)
- 编程题:(18分)
- (6分)编写程序,打印正整数的平方和立方值。程序运行后显示相应的提示信息,要求输入2个正整数,然后显示这个范围的数据的平方和立方值。例如,分别输入整数1和10,执行效果如下图所示。
答:
- #include <iostream>
using namespace std;
#include<iomanip>
int main()
{ int a,b,i;
cout<<" 请输入第一个整数(>=0):";
cin>>a;
cout<<" 请输入第二个整数(>第一个整数):";
cin>>b;
cout<<setw(10)<<"N"<<setw(10)<<"平方"<<setw(10)<<"立方"<<endl;
for( i=a;i<=b;i++)
cout<<setw(10)<<i<<setw(10)<<i*i<<setw(10)<<i*i*i<<endl;
return 0;
}
- (6分)以下程序求一维数组元素的最大值,并返回此值。请依题意编写函数f及填写函数原型。
#include <iostream>
using namespace std;
const int n=10;
++__________++ //f函数原型
int main()
{int a[n], i, max;
for(i=0; i<n; i++)
cin>>a[i];
max=f(a,n);
cout<<"max="<<max;
return 0;
}
答:
int f(int *a,int n)
{int i,max;
max=a[0];
for(i=1;i<n;i++)
if(a[i]>max) max=a[i];
return max;
}
- (6分)以下程序的功能是分离一个浮点数的整数部分和小数部分。程序用字符串存放输入数据,执行效果如图所示。根据main函数,请写出separate函数的原型和实现定义。
#include<iostream>
using namespace std;
___ void separate(char *s, int &a, int &b)
{int i;
for(i=0;s[i]!='.';i++)
a=a*10+s[i]-48;
for(i++;s[i]!=0;i++)
b=b*10+s[i]-48;
}_________________________________________ //separate函数原型
int main()
{ char s[20];
int i=0, d=0;
cout<<"请输入一个浮点数: ";
cin>>s;
separate(s, i, d); //调用函数
cout<<s<<"整数部分是:"<<i<<endl;
cout<<s<<"小数部分是:"<<d<<endl;
return 0;
}