设为首页 加入收藏

TOP

C++笔试题库之编程、问答题 150~200道(一)
2014-11-23 23:42:02 来源: 作者: 【 】 浏览:15
Tags:试题库 编程 答题 150 200

151、写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值


int a = 4;


(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);


a =


答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;


改后答案依次为9,10,10,11



152、某32位系统下, C++程序,请计算sizeof 的值


char str[] = “http://www.ibegroup.com/”


char *p = str ;


int n = 10;


请计算


(1)sizeof (str ) = ?


(2)sizeof ( p ) = ?


(3)sizeof ( n ) = ?


void Foo ( char str[100]){


请计算


sizeof( str ) = ?(4)


}


void *p = malloc( 100 );


请计算


sizeof ( p ) = ?(5)


答:(1)25 (2)4 (3) 4 (4)4 (5)4



153、 回答下面的问题


(1).Void GetMemory(char **p, int num){


*p = (char *)malloc(num);


}


void Test(void){


char *str = NULL;


GetMemory(&str, 100);


strcpy(str, “hello”);


printf(str);


}


请问运行Test 函数会有什么样的结果?


答:输出“hello”



154、 void Test(void)


{


char *str = (char *) malloc(100);


strcpy(str, “hello”);


free(str);


if(str != NULL){


strcpy(str, “world”);


printf(str);


}


}


请问运行Test 函数会有什么样的结果?


答:输出“world”



155、 char *GetMemory(void){


char p[] = “hello world”;


return p;


}


void Test(void){


char *str = NULL;


str = GetMemory();


printf(str);


}


请问运行Test 函数会有什么样的结果?


答:无效的指针,输出不确定



156、编写strcat函数


已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);


其中strDest 是目的字符串,strSrc 是源字符串。


1)不调用C++/C 的字符串库函数,请编写函数 strcat


答:


VC源码:


char * __cdecl strcat (char * dst, const char * src)


{


char * cp = dst;


while( *cp )


cp++;


while( *cp++ = *src++ ) ;


return( dst );


}



157strcat能把strSrc 的内容连接到strDest,为什么还要char * 类型的返回值?


答:方便赋值给其他变量



158、MFC中CString是类型安全类么?


答:不是,其它数据类型转换到CString可以使用CString的成员函数Format来转换




159.C++中什么数据分配在栈或堆中?


答:栈: 存放局部变量,函数调用参数,函数返回值,函数返回地址。由系统管理


堆: 程序运行时动态申请,new 和malloc申请的内存就在堆上




160、函数模板与类模板有什么区别?


答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化


必须由程序员在程序中显式地指定。



161、 int i=10, j=10, k=3; k*=i+j; k最后的值是?


答:60,此题考察优先级,实际写成: k*=(i+j);,赋值运算符优先级最低





162、do……while和while……do有什么区别?


答 、前一个循环一遍再判断,后一个判断以后再循环




163、请写出下列代码的输出内容


#i nclude


main()


{


int a,b,c,d;


a=10;


b=a++;


c=++a;


d=10*a++;


printf(“b,c,d:%d,%d,%d”,b,c,d);


return 0;


}


答 、10,12,120




164.在c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?


答 、函数名: atol


功 能: 把字符串转换成长整型数


用 法: long atol(const char *nptr);


程序例:


#include


#include


int main(void)


{


long l;


char *str = “98765432″;


l = atol(lstr);


printf(“string = %s integer = %ld\n”, str, l);


return(0);


}



165. 以下三条输出语句分别输出什么?


char str1[] = “abc”;


char str2[] = “abc”;


const char str3[] = “abc”;


const char str4[] = “abc”;


const char* str5 = “abc”;


const char* str6 = “abc”;


cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?


cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?


cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?


答:分别输出false,false,true。str1和str2都是字符数组,每个都有其自己的存储区,它们的值则是各存储区首地址,不等;str3和str4同上,只是按const语义,它们所指向的数据区不能修改。str5和str6并非数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于静态数据区,而它们自己仅是指向该区首地址的指针,相等。



166 以下代码中的两个sizeof用法有问题吗?


void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母


{


for( size_t i=0; i

if( ‘a’<=str[i] && str[i]<=’z’ )


str[i] -= (‘a’-'A’ );


}


char str[] = “aBcDe”;


cout << “str字符长度为: ” << sizeof(str)/sizeof(str[0]) << endl;


UpperCase( str );


cout << str << endl;



答:函数内的sizeof有问题。根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。函数外的str是一个静态定义的数组,因此其大小为6,函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。



167 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?


答:


a. class B : public A { ……} // B公有继承自A,可以是间接继承的


b. class B { operator A( ); } // B实现了隐式转化为A的转化


c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认值的参数)构造函数


d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉强算一个


168.以下代码有什么问题?


struct Test


{


Test( int ) {}


Test() {}


void fun() {}


};


void main( void )


{


Test a(1);


a.fun();


Test b();


b.fun();


}



答:变量b定义出错。按默认构造函数定义对象,不需要加括号。



169 以下代码有什么问题?


cout << (true 1:”1″) << endl;


答:三元表达式“?:”问号后面的两个操作数必须为同一类型。



170 以下代码能够编译通过吗,为什么?


unsigned int const size1 = 2;


char str1[ size1 ];


unsigned int temp = 0;


cin

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇params 有什么用? 下一篇计算机类专业求职经验 N多公司

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: