华中师范大学成人本科 学年第二学期
《c语言程序设计基础》 试卷 (B卷)
考试时间:90分钟 闭卷 任课老师:
班级: 学号: 姓名: 成绩:
一、选择题:(每小题2分,共30分)
1.由C++目标文件连接而成的可执行文件的缺省扩展名为( )
A.cpp B.exe C.obj D.lik
2.下列符号中,不可以作为变量名的是( )
A.list_p_7 B.PA123 C.ready D.if
3.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为( )
A.main B.MAIN C.name D.function
4.设x和y均为bool量,则x&&y为真的条件是( )
A.它们均为真 B.其中一个为真 C.它们均为假 D.其中一个为假
5.执行下面程序段的输出结果是( )
int x=4,y=-55;
if (x>0) if (x>10) cout <<”AA” else cout <<”BB”
else if (y<-8) if (y>-20) cout <<”CC” else cout <<”DD”;
A.AA B.BB C.CC D.DD
6.符串常量”hello”的长度是( )
A.5 B.6 C.7 D.8
7.以下语句,int i=2,j=2,m,n;m=i++;n=++j;则m,n,i,j的值分别为( )
A.2,3,2,2 B.2,3,3,3 C.2,2,3,3 D.3,3,2,2
8.假定a为一个整型数组名,则元素a[4]的字节地址为( )
A.a+4 B.a+8 C.a+16 D.a+32
9. x>0 || y==5的相反表达式为( )。
A. x<=0 || y!=5 B. x<=0 && y!=5 C. x>0 || y!=5 D. x>0 && y==5
10.在下面的函数声明中,存在着语法错误的是( )
A.void BC(int a , int) B.void BD(int , int)
C.void BE(int , int=5) D.int BF(int x ; int y)
11. 循环体至少被执行一次的语句为( )。
A. for循环 B. while循环 C. do循环 D. 任一种循环
12.已知一函数中有下列变量定义,其中属于静态变量的是( )
A.int a=5; B.static double b; C.register char c; D.auto short d;
13. do语句能够改写为( )语句。
A. 复合 B. if C. switch D. while
14.要使语句: p=new int[10]; 能够正常执行,p应定义为( )
A.int p; B.int p[10]; C.int *p; D.int (*p)[10];
15. 编写C++程序一般需经过的几个步骤依次是( )。
A. 编译、编辑、连接、调试 B. 编辑、编译、连接、调试
C. 编译、调试、编辑、连接 D. 编辑、调试、编辑、连接
二、填空题(每小题1分,共10分)
1.char、short和int类型的大小分别为 、 和 。
2.表达式float(25)/4和int(14.6)%5的值分别为 和 。
3.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为 。
4.在C++语言中,用转义字符序列 或操纵符 表示输出一个换行符。
5. 一个函数的函数体就是一条_________语句。
6. 设px是指向一个类动态对象的指针变量,则执行“delete px;”语句时,将自动调用该类的 。
7.关系表达式x+y>5的相反表达式为
8. 空串的长度为___,存储它需要占用___个字节。
9.表达式: x=625,i=(x>100?10:100) 的值是 。
10. C++语言中的每条基本语句以 作为结束符,每条复合语句以 作为结束符。
三、写出下列每个函数的功能(每小题4分,共20分)
1、#include<math.h>
bool SG(int x) {
/ /x为大于等于2的整数
int a=int(sqrt(x));/ /取x的平方根
int i=2;
while(i<=a) {
if(x%i= =0) break;
i+ +; }
if(i<=a)return 0;else return 1;}
c语言斐波那契数列2、#include <iostream.h>
int SC(int a,int b,int c){
if(a>=b && a>=c) return a;
if(b>=a && b>=c) return b;
if(c>=a && c>=b) return c;}
3、#include <math.h>
bool SG(int x){
int a=int(sqrt(x));
int i=2;
while(i<=a){
if(x%i==0) break;
i++;}
if (i<=a) return 0;
else return 1;}
4、int SC(int a,int b,int c) {
if(a>=b && a>=c) return a;
if(b>=a && b>=c) return b;
if(c>=a && c>=b) return c;}
四、阅读下列程序,在 处填入适当内容,使程序完整(每个空1分,共10分,)
1、斐波那契数列的第1和第2个数分别为0和1 ,从第三个数开始,每个数等于其前两个数之和。求斐波那契数列中的前20个数,要求每行输出5个数。
#include<iostream.h>
void main() {
int f,f1,f2,i;
cout<<” 斐波那契数列:\n”;
f1=0; f2=1;
cout<<setw(6)<<f1<<setw(6)<<f2;
for(i=3;i<=20;i++) {
f=______(1)______;
cout<<setw(6)<<f;
if(_____(2)______) cout<<endl;
f1=f2;
f2=____(3)_______; }
cout<<endl; }
2、打印出2至99之间的所有素数(即不能被任何数整除的数)。
#include<iostream.h>
#include<math.h>
void main()
{
int i,n;
for(n=2; ___(1)___; n++) {
int temp=int(sqrt(n)); //求出n的平方根并取整
for(i=2; ___(2)___; i++)
if(n%i==0) ___(3)___;
if(i>temp) cout<<n<<' '; }
cout<<'\n';}
3、采用辗转相除法求出两个整数的最大公约数。
#include<iostream.h>
void main()
{
int a,b;
cout<<"请输入两个正整数:";
cin>>a>>b;
while(a<=0 || __(1)___) {cout<<"重新输入:"; cin>>a>>b;}
while(b) {
int__(2)__;
r=a%b;
___(3)___; ___(4)___; //分别修改a和b的值}
cout<<a<<endl; //输出最大公约数 }
五、写出下列程序的运行结果(每小题5分,共30分)
1. main ( )
{ int a=4,x=5,b=8;
fun(b,6);
printf("%d,%d,%d\n",a,b,x);
}
fun (int a,int b)
{ int x=3;
printf("%d,%d,%d\n",a,b,x);
}
运行结果:
2、#include<iostream.h>
void SB(char ch){
switch(ch){
case 'A':case 'a':
cout<<"well!";break;
case 'B':case 'b':
cout<<"good!";break;
case 'C':case 'c':
cout<<"pass!";break;
default:
cout<<"bad!";break;}
void main(){
char a1='b',a2='C',a3='f';
SB(a1);SB(a2);SB('A');
cout<<endl;}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论