C++复习题面向过程部分
一、单项选择题 1. 函数调用不可以( D )。 A. 出现在一个表达式中 B. 出现在执行语句中 C. 作为一个函数的实参 D. 作为一个函数的形参 2. 以下正确的描述是( B )。 A. 函数的定义可以嵌套,函数的调用不可以嵌套 B. 函数的定义不可以嵌套,函数的调用可以嵌套 C. 函数的定义和函数的调用均可以嵌套 D. 函数的定义和函数的调用均不可以嵌套 3. 若用数组名作为函数调用的实参,传递给形参的是( A )。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组全部元素的值 D. 数组元素的个数 4. 以下错误的描述是( D )。 A. 被调用函数中可以不用return语句 B. 被调用函数中可以用多个return语句 C. 被调用函数中,如果有返回值,就一定要有return语句 D. 被调用函数中,一个return语句可返回多个值给调用函数 5. 以下正确的描述是( C )。 A. 不允许设置参数的默认值 B. 设置参数的默认值只能在定义函数时设置 C. 设置参数的默认值时,应该设置右边的参数 D. 设置参数的默认值时,应该全部参数都设置 6. 采用重载函数的目的是( D )。 A. 实现共享 B. 减少空间 C. 提高速度 D. 使用方便,提高可读性 7. 将两个字符串连接起来组成一个字符串时,选用( C )函数。 A. strlen() B. strcap() C. strcat() D. strcmp() 8. 以下叙述中正确的是( B )。 A. 使用#define可以为常量定义一个名字,该名字在程序中可以再赋另外的值 B. 使用const定义的常量名有类型之分,其值在程序运行时是不可改变的 C. 在程序中使用内联函数使程序的可读性变差 D. 在定义函数时可以在形参表的任何位置给出缺省形参值 9. 下面的标识符中,( C )是文件级作用域。 A. 函数形参 B.语句标号 C.外部静态类标识符 D.自动类标识符19. 设array为一个数组,则表达式sizeof(array)/sizeof(array0)的结果为( B )。 A. array数组首地址 B. array数组中元素个数 C. array数组中每个元素所占的字节数 D. array数组占的总字节数 10. 用new运算符创建一个含10个元素的一维整型数组的正确语句是( C )。 A. int *p=new a10; B. int *p=new float10; C. int *p=new int10; D. int *p=new int10=1,2,3,4,5 11. 下列给字符数组赋初值时,正确的是( A )。 A. char s1=”abcdef”; B. char s24=”abcd”; C. char s323=“abc”,”xyz”; D. char s44=a,x,s,t; 12. 设有定义“static int data56;”,设该数组在静态存储区中的起始地址为十进制的100,若每个int型数占4个字节,则数组元素data23的地址为( D )。 A. 115 B.124 C.130 D.160 13. 假定变量m定义为“int m=7;”,则定义变量p的正确语句为( B )。 A. int p=&m; B. int *p=&m; C. int &p=*m; D. int *p=m; 14. 假定k是一个double类型的变量,则关于变量p的正确定义语句为( D )。 A. double p=&k; B. int *p=&k; C. double &p=*k; D. char *p=”Thank you!”; 15. 变量s的定义为“char *s=”Hello world!”;”,要使变量p指向s所指向的同一个字符串,则应选取( A )。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 16. 关于void 指针,下列说法正确的是( C )。 A. void 指针就是未指向任何数据的指针 B. void 指针就是已定义而未初始化的指针 C. 指向任何类型数据的指针可直接赋值给一个void 指针 D. void 指针值可直接赋给一个非void 指针 17. 假定一条定义语句为“int a10, x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的语句为( D )。 A. x=pa3; B. x=*(a+3); C. x=a3; D. x=*pa+3; 18. 假定有定义“int b10; int *pb;”,则不正确的赋值语句为(D )。 A. pb=b; B. pb=&b0; C. *pb=new int; D. pb=b5; 19. 假定p是具有double类型的指针变量,则表达式+p使p的值(以字节为单位)增加( C )。 A. 1 B. 4 C. sizeof(double) D. sizeof(p) 20. 假定p指向的字符串为”string”,则cout<<p+3的输出结果为( C )。 A. string B. ring C. ing D. i 21. 假定p指向的字符串为”string”,若要输出这个字符串的地址值,则使用( D )。 A. cout<<*p; B. cout<<p; C. cout<<&p; D. cout<<(void *)p; 22. 定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为( A )。 A. int *p=new int30; B. int *p=new int(30); C. int *p=new 30; D. *p=new int30; 23. 假定p是具有int*类型的指针变量,则给p赋值的正确语句为( B )。 A. p=new int; B. p=new int*; C. p=new int*; D. p=new int10; 24. 要使语句“p=new int1020;”能够正常执行,p应被事先定义为( D )。 A. int *p; B. int *p; C. int *p20; D. int(*p)20; 25. 假定有“struct BOOKchar title40; float price; BOOK *book=new BOOK;”,则正确的语句为( A )。 A. strcpy(book->title,”Wang Tao”); B. strcpy(book.title,”Wang Tao”); C. strcpy(*book.title,”Wang Tao”); D. strcpy(*book)->title,”Wang Tao”); 26. 假定有“struct BOOKchar title40; float price; BOOK *book;”,则不正确的语句为( A )。 A. BOOK *x=new book; B. BOOK x="C+ Programming",27.0; C. BOOK *x=new BOOK; D. BOOK *x=book; 27. 假定有“struct BOOKchar title40; float price;book;”,则正确的语句为( B )。 A. BOOK &x= &book; B. BOOK &x=book; C. BOOK &x=new BOOK; D. BOOK &x=BOOK; 28. 下列对引用的陈述中不正确的是( C )。 A. 每一个引用都是其所引用变量的别名,因此必须初始化 B. 形式上针对引用的操作实际上作用于它所引用的变量 C. 一旦定义了引用,一切针对其所引用变量的操作只能通过该引用间接进行 D. 不需要单独为引用分配存储空间 29. 假定变量a和pa定义为“double a10, *pa=a;”,要将12.35赋值给a中的下标为5的元素,不正确的语句是( D )。 A. pa5=12.35; B. a5=12.35; C. *(pa+5)=12.35; D. *(a0+5)=12.35; 30. 假定变量b和pb定义为“int b10, *pb=b;”,要将24赋值给b1元素中,不正确的语句是( C )。 A. *(pb+1)=24; B. *(b+1)=24; C. *+b=24; D. *+pb=24; 31. 假定指针变量p定义为“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句( A )。 A. delete p; B. delete *p; C. delete &p; D. delete p; 32. 假定指针变量p定义为“int *p=new int30;”,要释放p所指向的动态内存,应使用语句( D )。 A. delete p; B. delete *p; C. delete &p; D. delete p; 33. 假定变量x定义为