201下面的代码有什么问题?并请给出正确的写法。 void DoSomeThing(char* p) { char str[16]; int n; assert(NULL != p); sscanf(p, "%s%d", str, n); if (0 == strcmp(str, "something")) { } } A: sscanf(p, "%s%d", str, n); 这句该写成: sscanf(p, "%s%d", str, &n); -------------------------------------------------------------------------- 202.下面代码有什么错误? Void test1() { char string[10]; char *str1="0123456789"; strcpy(string, str1); } 数组越界 203.下面代码有什么问题? Void test2() { char string[10], str1[10]; for(i=0; i<10;i++) { str1[i] ='a'; } strcpy(string, str1); } } 数组越界 204下面代码有什么问题?LUPA开源社区+j H2B F,c U Void test3(char* str1) { char string[10]; if(strlen(str1)<=10) { strcpy(string, str1); } } ==数组越界 ==strcpy拷贝的结束标志是查找字符串中的\0 因此如果字符串中没有遇到\0的话 会一直复制,直到遇到\0,上面的123都因此产生越界的情况 建议使用 strncpy 和 memcpy 205.写出运行结果: { char str[] = "world"; cout << sizeof(str) << ": "; char *p = str; cout << sizeof(p) << ": "; char i = 10; cout << sizeof(i) << ": "; void *pp = malloc(10); cout << sizeof(p) << endl; } 6:4:1:4 -------------------------------------------------------------------------- 206.C和C++有什么不同? 从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是,c++编写面向对象的程序比c容易 从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的; llinux核心大部分是c写的,因为它是系统软件,效率要求极高。 从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比 c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++ C语言是结构化编程语言,C++是面向对象编程语言。LUPA开源社区 } n*r C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。 207在不用第三方参数的情况下,交换两个参数的值 #include <stdio.h> void main() { int i=60; int j=50; i=i+j; j=i-j; ) i=i-j; printf("i=%d\n",i); printf("j=%d\n",j); } 方法二: i^=j; j^=i; i^=j; 方法三: // 用加减实现,而且不会溢出 a = a+b-(b=a) 208.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正 int add_n(int n) { static int i=100; i+=n; return i; } 答: 因为static使得i的值会保留上次的值。 去掉static就可了 209.union a { int a_int1; double a_double; int a_int2; }; typedef struct { a a1; char y; } b; class c { double c_double; b b1; a a2; }; 输出cout<<sizeof(c)<<endl;的结果? 答: VC6环境下得出的结果是32 我(sun)在VC6.0+win2k下做过试验: int-4 float-4 double-8 指针-4 210. unsigned short array[]={1,2,3,4,5,6,7}; int i = 3; *(array + i) = ? 答:4 211. class A { virtual void func1(); void func2(); } Class B: class A { void func1(){cout << "fun virtual void func2(){cout << "fun } A, A中的func1和B中的func2都是虚函数. B, A中的func1和B中的func2都不是虚函数. C, A中的func2是虚函数.,B中的func1不是虚函数. D, A中的func2不是虚函数,B中的func1是虚函数. 答: A 212输出下面程序结果。 #include <iostream.h> class A { public: virtual void print(void) { cout<<"A::print()"<<endl; } }; class B:public A { public: virtual void print(void) { cout<<"B::print()"<<endl; }; }; class C:public { public: virtual void print(void) { cout<<"C::print()"<<endl; } }; void print(A a) { a.print(); } void main(void) { A a, *pa,*pb,*pc; pa=&a; pb=&b; pc=&c; a.print(); b.print(); c.print(); a->print(); pb->print(); pc->print(); print(a); print(b); print(c); } A::print() A::print() B::print() C::print() A::print() B::print() C::print() A::print() A::print() A::print() 215. 行尾使用注释的开始标记符为____ //_____。 216 多行注释的开始标记符和结束标记符分别为_____ /*_____和___ */_______。 217. 用于输出表达式值的标准输出流对象是____ cout_____。 218 用于从键盘上为变量输入值的标准输入流对象是__ cin______。 219. 一个完整程序中必须有一个名为____ main____的函数。 220一个函数的函数体就是一条____复合_____语句。 221. 当执行cin语句时,从键盘上输入每个数据后必须接着输入一个___空白_____符,然后才能继续输入下一个数据。 222在C++程序中包含一个头文件或程序文件的预编译命令为____#include ______。 223. 程序中的预处理命令是指以___#___字符开头的命令。 224. 一条表达式语句必须以___分号___作为结束符。 225. 在#include命令中所包含的头文件,可以是系统定义的头文件,也可以是___用户(或编程者_____定义的头文件。 226. 使用#include命令可以包含一个头文件,也可以包含一个__程序____文件。 227.一个函数定义由__函数头______和__函数体_____两部分组成。 228.若一个函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的__原型(或声明)____语句。 229.C++头文件和源程序文件的扩展名分别为__.h ___和___.cpp ___。 230.程序文件的编译错误分为____警告(warning)____和____致命(error) ____两类。 231.当使用___ void ____保留字作为函数类型时,该函数不返回任何值。 232.当函数参数表用___ void __保留字表示时,则表示该参数表为空。 233.从一条函数原型语句“int fun1(void);”可知,该函数的返回类型为______,该函数带有______个参数。 234. 当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到___下一行_____的开始位置。 235. 假定x=5,y=6,则表达式x++*++y的值为___35_______。 236. 假定x=5,y=6,则表达式x--*--y的值为___25_______。 237. 假定x=5,y=6,则执行表达式y*=x++计算后,x和y的值分别为___6___和___30 _____。 238. 假定x=5,y=6,则执行表达式y+=x--计算后,x和y的值分别为____4__和___11___。 239. C++常数0x145对应的十进制值为___325 ___。 240. C++常数0345对应的十进制值为____ 229__。 241. 十进制常数245对应的十六进制的C++表示为____0xF5___。 242. 十进制常数245对应的八进制的C++表示为___0365 ___。 243. signed char类型的值域范围是__-128__至___+127 __之间的整数。 244. int和float类型的数据分别占用___ 4___和____ 4___个字节。 245. float和double类型的数据分别占用____ 4___和_____8___个字节。 246. bool和char类型的数据分别占用_____1____和____1___个字节。 247. unsigned short int和int类型的长度分别为____ 2___和____4___。 248. 字符串”This\’s a book.\n”的长度为_____ 15____。 249. 字符串”\nThis\’s a pen\n\n”的长度为_____ 15_____。 250. 在C++中存储字符串”abcdef”至少需要___7 _____个字节。 251. 在C++中存储字符串”a+b=c”至少需要_____6 ___个字节。 252. 假定x和y为整型,其值分别为16和5,则x%y和x/y的值分别为___1_______和____3____。 253. 假定x和y为整型,其值分别为16和5,则x/y和double(x)/y的值分别为____3____和___3.2____。 254. 假定x是一个逻辑量,则x && true的值为___ x ____。 255. 假定x是一个逻辑量,则x || true的值为_____ true(或1)_____。 256. 假定x是一个逻辑量,则x && false的值为____ false(或0) ___。 257. 假定x是一个逻辑量,则x || false的值为x。 258. 假定x是一个逻辑量,则!x || false的值为____!x ____。 259. 假定x是一个逻辑量,则x && !x的值为____ false(或0)____。 260. 假定x是一个逻辑量,则x || !x的值为____ true(或1)___。 261. 设enum Printstatus{ready,busy,error}; 则 cout<<busy的输出结果是_____1___。 262. 设enum Printstatus{ready=2,busy,error}; 则cout<<busy的输出结果是____3____。 263. 常数-4.205和6.7E-9分别具有___4_____和____2___位有效数字。 264. 枚举类型中的每个枚举值都是一个____枚举常量_____,它的值为一个___整数____。 265. 常数100和3.62的数据类型分别为____ int ___和_____ double ___。 266. 若x=5, y=10, 则计算y*=++x表达式后,x和y的值分别为___6___和__60 ___。 267. 假定x和ch分别为int型和char型,则sizeof(x)和sizeof(ch)的值分别为__4__和__1__。 268. 假定x=10,则表达式x<=10?20:30的值为__ 20 __。 269. 表达式sqrt(81)和pow(6,3)的值分别为___9 ___和___216___。 270. 含随机函数的表达式rand()%20的值在___0__至___ 19 __区间内。 271. 在switch语句中,每个语句标号所含关键字case后面的表达式必须是___常量___。 272. 在if语句中,每个else关键字与它前面同层次并且最接近的____ if ____关键字相配套。 273. 作为语句标号使用的C++保留字case和defaule只能用于___ switch ___语句的定义体中。 274. 执行switch语句时,在进行作为条件的表达式求值后,将从某个匹配的标号位置起向下执行,当碰到下一个标号位置时(停止/不停止)___不停止__执行。 275. 若while循环的“头”为“while(i++<=10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行__11___次后正常结束。 276. 若do循环的“尾”为“while(++i<10)”,并且i的初值为0,同时在循环体中不会修改i的值,则循环体将被重复执行___10 ___次后正常结束。 277. 当在程序中执行到break语句时,将结束本层循环类语句或switch语句的执行。 278. 当在程序中执行到___ continue___语句时,将结束所在循环语句中循环体的一次执行。 279. 在程序中执行到__ return ___语句时,将结束所在函数的执行过程,返回到调用该函数的位置。 280.在程序执行完____主(或main)__函数调用后,将结束整个程序的执行过程,返回到C++集成开发窗口。 281. 元素类型为int的数组a[10]共占用___ 40___字节的存储空间。 282. 元素类型为double的二维数组a[4][6]共占用____192__字节的存储空间。 283. 元素类型为char的二维数组a[10][30]共占用___300__字节的存储空间。 284. 存储字符’a’和字符串”a”分别需要占用_____1___和____2 ___个字节。 |
|