2014年春季学期《可视化程序设计》试卷A一.选择(每道小题2分,共20道小题,合计40分)1.在C++语言的if 语句中,用作判断的表达式为( )。
A 、关系表达式B 、逻辑表达式C 、算术表达式D 、任意表达式 2.设i 和k 都是int 类型,则以下for 循环语句( )。
for(i=0,k=-1;k=1;i++,k++) cout << "****\n"; A 、判断循环结束的条件不合法 B 、是无限循环C 、循环体一次也不执行D 、循环体只执行一次 3.下列关于this 指针的说法正确的是( )A 、this 指针存在于每个函数之中B 、在类的非静态函数中this 指针指向调用该函数的对象C 、this 指针是指向虚函数表的指针D 、this 指针是指向类的函数成员的指针 4.若给出以下程序,其输出为( )。
#include <iostream.h> void main(void) { int a=4,b=7;cout << (a=a+1,b+a,b+1) << endl; }A 、5B 、8C 、11D 、程序有错误,无法运行5.若给定条件表达式(m)?(a++):(a--),则其中表达式m ( )。
A 、和(m==0)等价B 、和(m==1)等价C 、和(m!=0)等价D 、和(m!=1)等价 6. 对二维数组的正确说明是( )。
A 、 int a[ ][ ]={1,2,3,4,5,6};B 、 int a[2][ ]={1,2,3,4,5,6};C 、 int a[ ][3]={1,2,3,4,5,6};D 、 int a[2, 3]={1,2,3,4,5,6}; 7. 定义一个函数实现交换x 和y 的值,并将结果正确返回。
能够实现此功能的是( )。
A 、 swap(int x, int y){ int t; t=x; x=y; y=t; }B 、 swap(int *x, int *y){ int t; t=x; x=y; y=t; }C 、 swap(int *x, int *y){ int t; t= *x; *x = *y; *y=t; }D 、 swap(int *x, int *y){ int *t; t=x; x=y; y=t; } 8. 下面函数的功能是( )。
void fun(char s1[ ], char s2[ ]) { while(*s2++=*s1++); }A 、 字符串比较B 、 字符串复制C 、 字符串连接D 、 字符串反向 9. 以下叙述不正确的是( )。
A 、 在C++程序中,严格区分大小写字母B 、 一个C++源程序有且仅有一个main 函数C 、 在C++程序中,注释只能位于一条语句的后面D 、 一个C++程序总是从main 函数开始执行 10. 下列叙述中,不正确的是( )。
A 、 this 指针是指向当前调用成员函数的对象的指针B 、 this 指针可用于类中非静态的数据成员和函数成员C 、 this 指针破坏了类的封装性D 、 this 指针的类型与所指对象的类型相同11.如有定义:int a[10],*p=a;以下正确的使用是( )。
A 、a[10]=5 B 、a=5 C 、*(p+1)=5 D 、p[5]=&a[5] 12. 如有以下定义:static int a[10];static char b[10]; float c[10];关于数组a ,b ,c 中各元素的值,下列说法中不正确的是( )。
A 、数组a ,b ,c 中各元素都没有被赋值,因而他们的值均为随机数据。
B 、数组a 中各元素的值均为0。
C 、数组b 中各元素的值均为’\0’。
D 、数组c 中各元素的值均为随机数据。
13.已知小写字母a 的ASCII 码值是97,则字符E 的ASCII 码值是( )。
A 、101B 、65C 、69D 、67 14.以下有关宏替换的叙述不正确的是( )。
A 、宏替换不占用运行时间。
B 、宏名无类型。
C 、宏替换只是字符替换。
D 、宏名必须用大写字母表示。
15.为了避免嵌套条件语句的二义性,C/C++语言规定else 总是与( )配对使用。
A 、同一行上的ifB 、缩排位置相同的ifC 、其之前最近的未配对的ifD 、其之后最近的未配对的if 16. 设有二维数组定义:int a[3][3]={{1,2},{0},{0,6}};数组元素a[0][1]、a[1][2]和a[2][2]的值分别是( )。
A 、 1,0,6B 、 2,0,0C 、 1,0,0D 、 2,0,6 17.若已定义 char s[10];则在下面表达式中不表示s[1]的地址的是( )。
A 、s+1B 、s++C 、&s+1D 、&s[1]班级: 学号: 姓名:………………………………密…………………………………………封…………………………………………线……………………………………………18.以下程序段中循环体执行的次数为()。
int i,j;for(i=0,j=1;i<=j+1;i+=2,j--)cout<<i<<endl;A、 3B、 2C、 1D、 019.如有下列定义:int y[3][2]={1,2,3,4,5,6};int (*p)[2]; 则下面说法正确的是()。
A、 p是一个数组指针。
B、 p是一个指针数组名。
C、 p含有两个数组元素。
D、 p指向数组y 。
20.下面程序段的运行结果是( )。
char str[ ]="ABC", *p=str; p++; cout<<*p;A、AB、BC、CD、\0二.填空(每道小题3分,共15道小题,合计45分)1.下面的程序段的运行结果为。
char str[] = "job", *p = str;cout << *(p+2) << endl;2. 已知宏定义:#define N 3#define Y(n) ((N+1)*n)执行语句z=2*(N+Y(5+1)); 后,变量z的值是。
3.下列函数功能是将数字a中的n个元素逆序存放,填空使程序完整。
void invert(int a[],int n){int i=0,j=n-1;while(i<j){ int t; ___________________i++;j--;}}4.下列函数是判断s所指的字符串是否是“回文”(即顺读和逆读都是相同的字符串),若是“回文”,函数返回1,否则返回0,填空,使程序完整。
void fun(char s[]){ int 1=0,j; j=strlen(s); while(i<j){ ___________________ i++; j--; }}5.下面程序输出两个字符串中相同的字符,请填空补充程序中的语句。
#include<iostream.h>void main( ){ char *p="KSEiemP5R", *q="KsEnbMP8Q";while( ) { if ( )cout<<*p; p++; q++; }cout<<endl; } 6.编一程序,求满足如下条件的最大的n: 12+22+32…+n2<1000。
#include<iostream.h>void main(){ int sum,n; sum=0;for(n=1;;n++){ sum+=n*n; if(sum>1000) ; }cout<<"1*1+2*2+3*3+...<1000的最大的n值为:"<< <<endl; } 7.从键盘上为数组a[3][2]输入任意整数值。
#include<iostream.h>void main(){ int a[3][2],i,j;for( ;;i++) for( ;;j++) { cout<<"a["<<i<<"]["<<j<<"]="; cin>>a[i][j]; } } 8.以下程序运行结果为:______,________#include <iostream.h>int i;void main( ){ i = 10; {int i=20; cout<< "i=" << i ;cout<< "i=" << ::i; }}9.下列程序的输出结果__________________。
#include<iostream.h>void main(){ int i; for(i=1;i<=5;i++){if(i%2) cout<<"<"; else continue; cout<<">"; }cout<<"*";}10.以下程序的运行结果是。
#include<iostream.h>void main(){int a,b,d=241; a=d/100%9; b=(-1)&&(-1); cout<<a<<","<<b; } 11. 以下程序的运行结果是。
#include<iostream.h>void main(){ int n=5; int &m=n; m*=2;cout<<“n=“<<n<<endl;}12.以下程序的运行结果是。
#include<iostream.h>void main( ){ char a[ ]="hello world", b[ ]="here wanglin";char *p1, *p2; int i; p1=a; p2=b;for(i=0; i<7; i++){ if ( *(p1+i)!=*(p2+i) ) cout<<*(p2+i); } }三.编程(每道小题8分,共3道小题,合计24分)1.编写一个程序,按所给的百分制的成绩分数,返回与该分数对应的等级代号字符,90~100分对应A级,75~89分对应B级,60~75分对应C级,60分以下对应D 级。