C语言与数据结构试题B参考复习资料与评分标准.docx
一、 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题目的括号内。每小题1分,共20分)1. 不属于字符型常量的是( ) A.A B.a C.“A” D.b2. 根据C语言的语法规则,下列( )是不合法标识符。A. while B. Name C. Rern5 D. _exam3. 表达式“1?(0?3:2):(10?1:0)”的值为( ).A.3 B. 2 C. 1 D. 04. 为表示关系xyz,应使用C语言表达式( ).A.(x>=y)&&(y>=z) B. (x>=y) AND (y>=z) C.(x>=y>=z) D. (x>=z)&(y>=z)5. 以下说法中正确的是( ).A. C语言程序总是从第一个定义的函数开始执行。B. 在C语言程序中,要调用的函数必须有main( ) 函数中定义。C. C语言程序总是从main( ) 函数开始执行。 D. C语言程序中的main( ) 函数必须放在程序的开始部分。6. 设有数组定义:char array=“China”;则数组所占的存贮空间为( ).A. 4个字节 B. 5个字节 C. 6个字节 D. 7个字节7. C语言中以只读方式打开一个文件应选择( )参数。 A. ”r” B. “w” C. “rb” D. “a”8. 从循环体内某处跳出,继续从头执行该循环外的语句是:( ).A. break语句 B.return语句 C.continue语句 D.空语句。9. 设有定义:long x=-123456L; 则以下能够正确输出变量x值的语句是( ).A. printf(“x=%dn”,x) B. printf(“x=%ldn”,x) C. printf(“x=ln”,x) D. printf(“x=%Dn”,x);10. C语言用( )表示逻辑“真”值。A. true B. t或y C. 非零整型值 D. 整型值011. 设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i 个元素的地址为( )。 A. P+i*2 B. P+(i-1)*2 C. P+(i-1) D. P+i12. 字符串指针变量中存入的是( ).A.字符串的首地址。 B. 字符串 C.第一个字符 D. 字符串变量。13. 以( )个是不正确的描述。A. 数组名可以作为参数进行传递。B. 在定义函数时,必须指定形参的类型。C. 形参与实参之间可以是值传递。D.不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。14. 在函数中默认存储类型说明符的变量应该是( )存储类型。A.内部静态 B. 外部 C.自动 D. 寄存器15. 设已有定义: char *st="how are you" 下列程序段中正确的是 ( )A. char a11, *p; strcpy(p=a+1, st4); B. char a11; strcpy(a, st);C. char a11; strcpy(+a, st);D. char a, *p; strcpy(p=&a1,st+2); 16. 计算机算法指的是( )。17. 栈是一种( )的数据结构。18. 循环队列用数组A0.m-1存放其元素值,已知其头尾指针分别是front与rear,则当前队列中的元素个数是( )。 A. rear-front-1 B.rear-front+1 C19. struct sk int a; float b; data; int *p; 若要使p指向data中的a域,正确的赋值语句是( )。 20. 若有以下说明与定义 typedef int *INTEGER INTEGER p,*q; 以下叙述正确的是( )。 A. p是int型变量 B. p是基类型为int的指针变量 C. q是基类型为int的指针变量 D. 程序中可用INTEGER代替int类型名二、填空题(1-2题每题2分,3-8题每题1分,共10分)1. C语言中基本的数据类型有:_、_ 、_ 。 2. C语言中普通整型变量的类型说明符为_,在内存中占_字节,有符号普通整型的数据范围是_ 。3. 整数-35在机内的补码表示为_。4. 执行下列语句int a=8; a+=a-=a*a; 后,a的值是_。5. 有如下语句:char A =“I am a student”; 该字符串的长度是_,A3=_。6. 符号“a”与a的区别是_。7. 所谓“指针”就是_.“&”运算符的作用是_.“*”运算符的作用是_。8. 有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是 。三、判断题(正确的在题后括号内打“”,错的打“”。每小题1分,共10分)1. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 ( )2. 在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。( )3. 在 C 程序中 ,APH 与 aph 代表不同的变量。( )4. 表达式 0195 是一个八进制整数。( )5. continue语句的作用是结束本次循环。( )6. extern变量的生命期是整个程序执行期。 ( )7. C语言中字符串的结束符是0。 ( )8. 如果有定义int a,*p=&a; 则*p及a意义相同。( )9. 结构体变量中各成员共享空间。( )10. 起泡排序法是稳定的。( )四、 应用题(每小题7分,共42分)1. # include “”main( ) int a=8,2,9,4,1, *p;p=a;*(p+2)+=2;printf(“%d, %d ”, *p, *(p+2);该程序的运行结果是_.2. 已知有一函数定义如下:template<class T>void swap1(T a, T b)T temp;temp=a;a=b;b=temp;主函数调用格式如下:main()int x=1,y=2;printf(“x=%d y=%dn”,x,y);swap1(x,y); printf(“x=%d y=%dn”,x,y);执行后输出结果为x=1 y=2x=1 y=2本来是想交换x与y的值,但没有成功,请指出错误所在,并该正之。3. for (a=1,b=1;a<=100;a+) if(b>=20) break;if(b%3=1)b+=3; continue;b-=5; 程序执行后a与b的值分别为 。4main() int i,num5;for(i=0;i<5;i+)numi=i*10 - 2;printf(“%d”,num3); 该程序的运行结果是_.5. main() float c,f;c=30.0;f=(6*c)/5+32;printf(“f=%f”,f); 该程序的运行结果是_.6 写出下列程序的运行结果。#include “”main() int a=1,2,3,-4,5;int m,n,*p; p=&a0; m=*(p+1); n=*(p+4);printf(“%d %d %d ”,*p,m,n); 该程序的运行结果是_. 五、 编程题(18分,任选2题,每题9分,选题操作2题按错误最多的2题评分)1. 编程将文件score1.txt中的字符读出显示到屏幕上。2. 输出1100之间不能被12整除的数。3. 从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。4. 假设以带头结点的单链表表示线性表,单链表的类型定义如下:template<class T>struct Node T data; Node<T> *next; /此处<T>也可以省略;编写函数判断链表是否为空。函数原型如下:bool IsEmpty(Node<T> *head);C语言及数据结构试题B参考答案及评分标准一、 单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题目的括号内。每小题1分,共20分)CABAC CACBC BADCB DACCB二、 填空题(1-2题每题2分,3-8题每题1分,共10分)2int 4 -231+231-1(1 分)3. 232-35或0xffffffdd4. -1125. 14 m 没有单引号不扣分(各0.5分)6 一个字符串 一个字符7 地址 取地址 取内容(或代表目标变量)(各1/3分,答对2个不扣分)8 1,3,2三、 判断题(判断下列各小题,正确的在题后括号内打“”,错的打“”。每小题1分,共10分)四、 应用题(每小题7分,共42分)1 8, 112 指出错误3分,改正4分 改成引用或指针均可,改成指针,如下:template<class T>void swap1(T *a, T *b)/3分T temp;temp=*a;*a=*b;*b=temp;main()int x=1,y=2;printf("x=%d y=%dn",x,y);swap1(&x,&y); /1分printf("x=%d y=%dn",x,y);3 8 224 286 1 2 5 五、 编程题(18分,任选2题,每题9分,选题操作2题按错误最多的2题评分)1. 编程将文件score1.txt中的字符读出显示到屏幕上。参考程序:# include <stdio.h>main() FILE *fp; /1分char c; /1分fp=fopen("score1.txt","r");/1分while(!feof(fp) /2分/fscanf(fp,"%c",&c);c=fgetc(fp);/2分putchar(c); /1分fclose(fp); /1分2. 输出1100之间不能被12整除的数。参考程序:#include <stdio.h>main() int i; /1分for(i=1;i<=100;i+) /2分if(i%12=0) /3分continue; /1分printf("%d ",i); /2分3. 从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。#include <stdio.h>main()int i,j,a10,temp; /1分for(i=0;i<10;i+)scanf("%d",&ai); /2分for(i=0;i<10;i+)for(j=0;j<10-i-1;j+)if(aj<aj+1)temp=aj;aj=aj+1;aj+1=temp;/4分for(i=0;i<10;i+)printf(" %d ",ai); /2分4. 假设以带头结点的单链表表示线性表,单链表的类型定义如下:template<class T>struct Node T data; Node<T> *next; /此处<T>也可以省略;编写函数判断链表是否为空。函数原型如下:bool IsEmpty(Node<T> *head);参考程序:bool IsEmpty(Node<T> *head) /3分return !head->next; /6分