1、考试场次:2013_07月考_7月31日_3G/C+/.NET/PHP/嵌入式 试卷名称:2013年07月_C+_CSD/ESD1306 1. 阅读如下代码,函数sort是一种排序的算法:void sort(int* a, int n) for(int i=1; i0&aj-1t; j-) aj = aj-1; aj = t; 请问sort函数排序的算法是:A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序正确答案:D 2. 查看如下代码: int a5 = 1,2,3,4,5; int *ap = a; int i = 0; 下列代码中,不可以成功打印出数组元素的是:A. for(;i
2、5;i+) printf(“%dn”,ai); B. for(;i5;i+) printf(“%dn”,*a+); C. for(;i5;i+) printf(“%dn”,api); D. for(;i5;i+) printf(“%dn”,*ap+); 正确答案:B 3. 下列关于字符串的代码正确的是:A. char *st1 = ABCDE; st1 = abcdefg;B. char *st1 = ABCDE; st10 = a; C. char st1 = ABCDE; st15=a;D. char st1 = ABCDE; st1=”abcde”;正确答案:A 4. 阅读如下代码,函数
3、sort是一种排序的算法: void sort(int* a, int n) for(int i=0; in-1; i+) bool flag = true; for(int j=0; jaj+1) int t = aj; aj = aj+1; aj+1 = t; flag = false; if(flag) break; 请问sort函数排序的算法是:A. 冒泡排序B. 快速排序C. 选择排序D. 插入排序正确答案:A 5. 80转换成二进制的结果是: A. 1011 0000B. 0101 0000C. 1101 0001D. 1010 1111正确答案:A 6. 在C语言中调用函数f1,
4、当f1函数执行完毕后,哪个变量的内存没有被回收? int a = 1000; void f1(int b) b = 10; int c = 20; static int d = 30; A. 只有aB. Abcd都没有回收C. 只有dD. ad正确答案:D 7. 命令chmod 644 myfile将myfile文件的权限设置为? A. 属主用户可读可执行,同组和其它用户可读B. 属主用户可读可写,同组和其它用户可读C. 属主用户可写可执行,同组和其它用户可执行D. 属主和同组用户可读,其它用户可读可写正确答案:B 8. 查看如下代码: inta5=1,2,3,4,5; int*ap=a; i
5、nti=0; 下列代码中,不可以成功打印出数组元素的是: A. for(;i5;i+) printf(“%dn”,ai); B. for(;i5;i+) printf(“%dn”,*a+); C. for(;i5;i+) printf(“%dn”,api); D. for(;i5;i+) printf(“%dn”,*ap+); 正确答案:B 9. 关于预处理指令,以下说法正确的是:A. #include可以包含文件,文件名必须用括起来B. #define可以定义宏,宏一旦定义,就无法取消C. #ifndef、#ifdef都可以用于条件编译D. #elseif 可以用于条件编译正确答案:C 10
6、. 以下代码int x = 1;x = x+ + +x;printf (%dn, x);的输出是?A. 2B. 3C. 4D. 5正确答案:D 11. 关于预处理指令,以下说法正确的是: A. #include可以包含文件,文件名必须用括起来 B. #define可以定义宏,宏一旦定义,就无法取消 C. #ifndef、#ifdef都可以用于条件编译 D. #elseif可以用于条件编译 正确答案:C 12. 根据下列 变量的类型以及函数参数类型,选出正确的sizeof的结果: 注意:选项给出结果的顺序是按照圆序号的顺序排列的。 char str = “Hello”; sizeof(str)
7、= char *p = str ; sizeof(p) = int n = 10; sizeof(n) = void Func ( char str100) sizeof( str ) = void *p = malloc( 100 ); sizeof ( p ) = A. 5 4 4 100 100B. 5 4 4 4 4C. 6 4 4 100 100D. 6 4 4 4 4 正确答案:D 13. C语言中,以下程序的输出结果为: int a = 3; printf(“%dn”,sizeof( (a2)?1:9.0 ) );A. 1B. 2C. 4D. 8正确答案:D 14. 阅读如下Li
8、st的代码: #include #include usingnamespacestd; typedefintT; classList structNode Tdata; Node*next; Node(constT&d):data(d),next() ; Node*head;/头指针 intsz;/元素个数 public: voidfun(constT&d) Node*pn=newNode(d); if(head=NULL) head=pn;sz+;return; Node*p=head; while(p-next)p=p-next; p-next=pn; sz+; 请问,fun函数实现的功能
9、是: A. 删除元素 B. 任意位置插入元素 C. 最后位置追加元素 D. 修改元素 正确答案:C 15. 以下代码int a, b;for (a = 0, b = 0; a = 1 & ! b+; a+)a+;printf (%d %dn, a, b);的输出是?A. 2 2B. 2 1C. 0 1D. 1 2正确答案:B 16. inti=10; printf(“%d”,sizeof(i=5); printf(“%dn”,i); 上面的代码执行完毕后,打印出的数字应该为: A. 45 B. 105 C. 1010 D. 410 正确答案:D 17. 关于预处理指令,以下说法正确的是: A.
10、 #elseif主要用于条件编译B. #if和#endif经常结合使用,用于条件编译C. #include可以包含文件,但是只能包含.h文件D. #define可以用于定义宏变量和宏函数,定义宏以后就不能撤销正确答案:B 18. FILE*fpr=fopen(a.txt,r); FILE*fpw=fopen(c.txt,w+); intch; while(1) ch=getc(fpr); if(ch=EOF) break; _ fclose(fpr);fpr=NULL; fclose(fpw);fpw=NULL; 上述代码是进行文件拷贝的,在横线处需要填入一行代码,下列选项哪个是对的: A.
11、fwrite(ch,fpw); B. fprintf(ch,fpw); C. putc(ch,fpw); D. fputs(ch,fpw); 正确答案:C 19. C语言中,以下程序的输出结果为:int a = 5;switch(a) case 5: printf(“A”); case 4:printf(“B”); case 3: printf(“C”);printf(“n”);A. 没有default分支,编译失败 B. 输出A C. 输出AB D. 输出ABC 正确答案:D 20. FILE*fpr=fopen(a.txt,r); FILE*fpw=fopen(c.txt,w+); int
12、ch; while(1) ch=getc(fpr); if(ch=EOF)break; _ fclose(fpr);fpr=NULL; fclose(fpw);fpw=NULL; 上述代码是进行文件拷贝的,在横线处需要填入一行代码,下列选项哪个是对的: A. fwrite(ch,fpw); B. fprintf(ch,fpw); C. putc(ch,fpw); D. fputs(ch,fpw); 正确答案:C 21. 以下代码char c = 200;printf (%dn, c);的输出是?A. 200B. 56C. -56D. -55正确答案:C 22. 关于硬链接和软链接,以下说法正确
13、的是? A. 硬链接亦称符号链接,其本质就是在一个文件中保存另一个文件的路径信息B. 通过ls l命令可以查看一个文件的软链接数C. 通过ln s命令可以创建一个文件的硬链接D. 硬链接的本质就是同一份文件数据与多个不同的文件路径相关联正确答案:D 23. 完全数,亦称完美数或完备数,是一些特殊的自然数,其全部真因数(即除自身以外的约数)之和等于其自身。以下代码意在打印给定范围内的完全数:int min, max;scanf (%d%d, &min, &max);for (int i = min; i = max; i+) (空白处)其中空白处可以填入的代码是?A. int sum = 0;f
14、or (int j = 1; j = i / 2; j+)if (i % j = 0)sum += j;if (sum = i)printf (%dn, i); B. int sum = 0;for (int j = 1; j i / 2; j+)if (i % j = 0)sum += j;if (sum = i)printf (%dn, i); C. int sum = 0;for (int j = 1; j = i / 2; j+)if (i % j != 0)sum += j;if (sum = i)printf (%dn, i); D. int sum = 0;for (int j
15、= 1; j = sizeof (m_chs) / sizeof (m_chs0) return false; m_chsm_top+ = ch; return true; bool pop (char& ch) if (m_top = 0) return false; ch = m_chs-m_top; return true; private: char m_chs128; size_t m_top;void printb (unsigned int dec, int base) Stack stack; do (空白处) while (dec /= base); for (char ch
16、; stack.pop (ch); cout ch); cout endl;其中空白处可以填入的代码是?A. stack.push (dec % base);B. stack.push (dec % base + 0);C. stack.push (dec % base 10 + A);D. int mod = dec % base; stack.push (mod 10 ? mod + 0 : mod - 10 + A);正确答案:D 25. C语言中,下列定义数组的代码正确的是:A. int arr;B. int arr=;C. int arr;D. int arr=”abcd”;正确答案
17、:B 26. 以下代码意在产生10个1到100之间的随机数,并将其按从小到大的顺序打印:int a100 = 0, i, j;(空白处)for (i = 0; i 100; i+)for (j = 0; j ai; j+)printf (%dn, i + 1);其中空白处可以填入的代码是?A. for (i = 0; i 100; i+)arand () % 100+; B. for (i = 0; i 10; i+)arand () % 10+;C. for (i = 0; i 100; i+)arand () % 10+;D. for (i = 0; i 10; i+)arand () %
18、 100+;正确答案:D 27. 已知,有int a1,a2,a3,a4,a5,e;那么以下代码的功能是? e = a1; if(ea2) e = a2; if(ea3) e = a3; if(ea4) e = a4; if(e=0)&(*s1=0)&(*s1=0)&(*s1=9) int j = *s1-0; res = res*10 + j; s1+; elsebreak; return res; D. 以上代码都不对 正确答案:A 30. C语言中,下列随机数的实现代码中,哪个是正确的? A. srand(time(0); int ran = rand(); B. rand(time(0
19、); int ran srand(); C. srand(0); int ran = rand(); D. srand(0); int ran = rand(time(0); 正确答案:A 31. FILE *fpr = fopen(a.txt,r); FILE *fpw = fopen(c.txt,w+); int ch; while(1) ch = getc(fpr); if(ch = EOF) break; _ fclose(fpr);fpr = NULL; fclose(fpw);fpw = NULL; 上述代码是进行文件拷贝的,在横线处需要填入一行代码,下列选项哪个是对的:A. fw
20、rite(ch,fpw);B. fprintf(ch,fpw);C. putc(ch,fpw);D. fputs(ch,fpw);正确答案:C 32. #ifndef_TEXT_H_ #define_TEXT_H_ #include #endif 上面代码的主要作用是什么?: A. 定义宏_TEXT_H_ B. 包含text.h C. 这种写法意义不大,没什么作用 D. 用条件编译防止text.h被多次包含 正确答案:D 33. 对一个算法的评价,不包括下列( )方面的内容。 A. 健壮性和可读性B. 并行性C. 正确性D. 时空复杂度正确答案:B 34. 求最大值的宏函数最佳定义代码为: A
21、. #defineMAX(x,y)(xy?x:y) B. #defineMAX(x,y)(x)(y)?(x):(y) C. #defineMAX(x,y)(xy?x:y) D. #defineMAX(x,y)(x)(y)?(x):(y) 正确答案:B 35. 定义联合代码如下: union doubled; inti; u; printf(u=%dn,sizeof(u); 那么,输出应该为: A. 4B. 8C. 12D. 16正确答案:B 36. 阅读如下代码,完成下面 5 题: struct node int id; char name20; char sex; int age; stud
22、; printf(请学生学号:); scanf(%d,&stud.id); printf(请输入学生姓名:); scanf(%s,stud.name); getchar(); printf(请输入学生性别m/f:); scanf(%c,&stud.sex); printf(请输入学生年龄:); scanf(%d,&stud.age); FILE *file = fopen(student.dat,w); if(NULL = file) printf(failedn);return; fprintf(file,%d %s %c %d,stud.id,stud.name,stud.sex,stud
23、.age); fclose(file); (1). 这段代码完成的功能是? A. 输入一个学生信息,然后打印到屏幕上B. 输入一个node信息,然后打印到屏幕上C. 输入一个node信息,然后保存到student.dat文件中D. 输入一个学生信息,然后保存到student.dat文件中正确答案:D (2). 输入姓名后,调用了个getchar(),其作用是: A. 等待用户的输入,暂停一下代码B. 读走换行符,使性别能正常的输入C. 写完字符串必须使用getchar(),读走结束符D. 没太多作用,可以不写正确答案:B (3). FILE *file = fopen(student.dat,
24、w)这句话如果换成FILE *file = fopen(student.dat,w+),有什么区别: A. 没有任何的区别B. w+编译不能通过C. w是只写,w+是读写D. w不会新建文件,w+会新建文件正确答案:C (4). if(NULL = file)这个分支实现的功能是: A. 打开空文件后执行的代码B. 如果文件不存在后执行的代码C. 打开文件失败后执行的代码D. 系统出现错误后,执行的代码正确答案:D (5). fprintf(file,%d %s %c %d,stud.id,stud.name,stud.sex,stud.age);代码实现的功能是: A. 把学生的信息写入文件
25、中B. 把学生的信息打印出来C. 把学生的信息转换成字符串D. 代码编译会出错正确答案:A 37. 阅读如下随机发牌代码,填写空白处: int flag413 = 0; int i,j,num; char huase = S,H,D,C;/Spade 黑桃, Heart红心, Diamond 方块, Club梅花 char dian = A,2,3,4,5,6,7, 8,9,X,J,Q,K; printf(请输入牌的数量:n); scanf(%d,&num); 空白1 /设置随机算法的种子 for(i=0;i cchB. len + blanks * 2 cchC. len + blanks
26、+ 1 cchD. len + blanks * 3 + 1 cch正确答案:A (3). 空白处3可以填入的代码是? A. 0 = j & j iB. 0 = i & 0 = jC. 0 i & i = jD. 0 = i & i j正确答案:D (4). 空白处4可以填入的代码是? A. 空B. pszi = C. pszi = pszjD. pszj = pszi正确答案:D (5). 空白处5可以填入的代码是? A. pszj+ = %; pszj+ = 2; pszj = 0B. pszj- = 0; pszj- = 2; pszj = %C. pszj = %; pszj+ = 2; pszj+ = 0D. pszj = 0; pszj- = 2; pszj- = %正确答案:B