2012年下半年二级C语言理论试题
- 格式:doc
- 大小:64.50 KB
- 文档页数:9
全国计算机等级考试二级C语言2012年3月试题及答案一、填空题1、C语言中基本的数据类型有:__________、__________、__________。
2、C语言中普通整型变量的类型说明符为__________,在内存中占__________字节,有符号普通整型的数据范围是__________。
3、整数-35在机内的补码表示为__________。
4、执行下列语句int a=8;a+=a-=a*a;后,a的值是__________。
5、有如下语句:char A[]={”I am a student”};该字符串的长度是__________,A[3]=__________。
6、符号”a”和’a’的区别是__________。
7、所谓“指针”就是__________。
“&”运算符的作用是__________。
“*”运算符的作用是__________。
8、有如下输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是__________。
二、选择题1、设整型变量a为5,使b不为2的表达式是()。
A.b=a/2B.b=6-(--a)C.b=a%2D.b=a>3?2:12、为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。
A.缩排位置相同的ifB.在其之前未配对的ifC.在其之前未配对的最近的ifD.同一行上的if3、以下程序的输出结果是()。
int x=10,y=10;printf(“%d%d\n”,x--,--y);A.1010B.99C.910D.1094、设A为存放(短)整型的一维数组,如果A的首地址为P,那么A中第i个元素的地址为()。
A.P+i*2B.P+(i-1)*2C.P+(i-1)D.P+i5、选出下列标识符中不是合法的标识符的是()。
(1)下列链表中,其逻辑结构属于非线性结构的是_________。
A)双向链表B) 带链的栈 C) 二叉链表D) 循环链表(1)C 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps 中第13张说明:链表存储结构是数据的存储结构;排除链表因素,从数据逻辑结构来看,线性结构包括线性表、栈和队;非线性结构包括树形结构和图形结构,所以二叉树是树形结构,即非线性结构。
(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。
现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A) 20 B) 0或35 C) 15 D) 16(2)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第100-101张关于入队(Q.rear=Q.rear+1)与退队(Q.front=Qfront+1)运算规则,此外第一次入队为Q.rear=1;第一次退队为Q.front=1。
并假定循环队列最大个数为maxsize,其相应存储空间为1: maxsize,则循环队列的入队与退队图例和运算后元素个数的确定原则如下:循环队列中的元素个数或称队列长度通用计算公式:(Q.rear-Q.front+ maxsize)% maxsize 例如,Q.rear=20,Q.front=15,则循环队列中的元素个数=(20-15+35)%35=5;Q.rear=40,Q.front=15,则循环队列中的元素个数=(40-15+35)%35=25;本题根据Q.rear=Q.front=15,maxsize=35,则循环队列中元素个数=(15-15+35)%35=0或35;(3)下列关于栈的叙述中,正确的是A) 栈底元素一定是最后入栈的元素B) 栈操作遵循先进后出的原则C) 栈顶元素一定是最先入栈的元素D) 以上三种说法都不对(3)B 【解析】见/uuxzhang上全国计算机二级考试参考资料_数据结构.pps中第63张幻灯片说明:栈元素入、退原则:先进后出(FILO)或后进先出(LIFO)。
2012年计算机二级c语言试题及答案一、选择题1. 下列选项中,不属于C语言的关键字是()A. intB. mainC. whileD. break2. 下列选项中,不属于C语言标准数据类型的是()A. floatB. doubleC. long doubleD. real3. 在C语言中,i++和++i的区别是()A. i++先做赋值,再自增;++i先自增,再赋值B. i++和++i完全相同C. i++先自增,再做赋值;++i先赋值,再自增D. i++和++i都不进行赋值操作4. 在C语言中,用于输出语句的函数是()A. printB. scanfC. getsD. printf5. 下列选项中,程序的入口函数是()A. mainB. startC. beginD. init二、填空题1. 计算机二进制以0b开头,十六进制以_____开头。
2. C语言中,用于循环执行一段代码的关键字是_____。
3. 在C语言中,用于定义常量的关键字是_____。
4. C语言种类转义字符'\n'表示_____。
5. C语言中,用于声明一个整型变量的关键字是_____。
三、简答题1. 请简述C语言中的条件判断语句if-else的用法。
2. 请简述C语言中的for循环的用法。
3. 请简述C语言中的switch语句的用法。
四、编程题1. 编写一个C语言程序,求1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 != 0) {sum += i;}}printf("1到100之间所有奇数的和为:%d\n", sum);return 0;}```2. 编写一个C语言程序,输出九九乘法表。
```c#include <stdio.h>int main() {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {printf("%d * %d = %d\t", j, i, i*j);}printf("\n");}return 0;}```以上是2012年计算机二级C语言试题及答案的内容。
窗体顶端11. 以下叙述中正确的是()。
A) 在C语言程序中,main函数必须放在其它函数的最前面B) 每个后缀为.C的C语言源程序都可以单独进行编译C) 在C语言程序中,只有main函数才可单独进行编译D) 每个后缀为.C的C语言源程序都应该包含一个main函数A B C D 未答题该题得分:0正确答案:B试题来源:全国计算机等级考试二级C语言真题2012年09月-36次【解析】:12. C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是()。
A) 预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义B) 用户标识符可以由字母和数字任意顺序组成C) 在标识符中大写字母和小写字母被认为是相同的字符D) 关键字可用作用户标识符,但失去原有含义A B C D 未答题该题得分:0正确答案:A试题来源:全国计算机等级考试二级C语言真题2012年09月-36次【解析】:13. 以下选项中表示一个合法的常量是(说明:符号口标识空格)A)9口9口9 B)0Xab C) 123E0.2 D)2.7eA B C D 未答题该题得分:0正确答案:B试题来源:全国计算机等级考试二级C语言真题2012年09月-36次【解析】:14. C语言主要是借助以下哪个功能来实现程序模块化()。
A) 定义函数 B) 定义常量和外部变量 C) 三种基本结构语句 D)丰富的数据类型A B C D 未答题该题得分:0正确答案:A试题来源:全国计算机等级考试二级C语言真题2012年09月-36次【解析】:15. 以下叙述中错误的是()。
A) 定义符号常量必须用类型名来设定常量的类型B) 用符号名表示的常量叫符号常量C) 非零的数值型常量有正值和负值的区分D) 常量是在程序运行过程中值不能被改变的量A B C D 未答题该题得分:0正确答案:A试题来源:全国计算机等级考试二级C语言真题2012年09月-36次【解析】:16. 若有定义和语句:int a,b;scanf(“%d,%d”,&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给b变量的是()。
全国计算机等级考试二级C语言机试真题2012年09月(总分:100.00,做题时间:90分钟)一、程序填空题(总题数:1,分数:30.00)1.下列给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。
函数fun的功能是:把形参x的值放入一个新结点并插入链表中,使插入后各结点数据域中的数据仍保持递增有序。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!试题程序:#include <stdio.h>#include <stdlib.h>#define N 8typedef struct listint data;struct 1ist * next;SLIST;void fun(SLIST * h, int x)SLIST * P, * q, * s;s=(SLIST* )malloc(sizeof(SLIST));/********** found********** /s->data=______;q=h;p=h->next;while(p! =NULL && x>p->data)/********** found********** /q=______;p=p->next;s->next=p;/********** found********** /q->next=______;SLIST * creatlist(int * a)SLIST * h, * p, * q; int i;h=p=(SLIST * )malloc(sizeof(SLIST));for(i=0; i<N; i ++)q=(SLIST * )malloc(sizeof(SLIST));q->data=a[i]; p->next=q; p=q;p->next=0;return h;void outlist(SLIST * h)SLIST * p;p=h->next;if(p==NULL)printf("/nThe list is NULL! /n");elseprintf("/nHead");do printf("->% d", p->data);p=p->next;while(p!=NULL);printf("->End/n");main()SLIST * head; int x;int a[N]=11, 12, 15, 18, 19, 22, 25, 29;head=creatlist(a);printf("/nThe list before inserting: /n");outlist(head);printf("/nEnter a number: ");scanf("%d", &x);fun(head, x);printf("/nThe list after inserting: /n");outlist(head);(分数:30.00)填空项1:__________________ (正确答案:(1)x (2)p (3)s)解析:[考点] 本题考查:链表的基本操作。
(1)下列数据结构中,属于非线性结构的是A)循环队列B) 带链队列C) 二叉树D)带链栈(2)下列数据结果中,能够按照“先进后出”原则存取数据的是A) 循环队列B) 栈C)队列D)二叉树(3)对于循环队列,下列叙述中正确的是A)队头指针是固定不变的B)队头指针一定大于队尾指针C)队头指针一定小于队尾指针D)队头指针可以大于队尾指针,也可以小于队尾指针(4)算法的空间复杂度是指A)算法在执行过程中所需要的计算机存储空间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的临时工作单元数(5)软件设计中划分模块的一个准则是A) 低内聚低耦合B) 高内聚低耦合C) 低内聚高耦合D) 高内聚高耦合(6)下列选项中不属于结构化程序设计原则的是A) 可封装D) 自顶向下C) 模块化D) 逐步求精(7)软件详细设计产生的图如下:该图是A) N-S图B) PAD图C) 程序流程图D) E-R图(8)数据库管理系统是A)操作系统的一部分B) 在操作系统支持下的系统软件C) 一种编译系统D) 一种操作系统(9)在E-R图中,用来表示实体联系的图形是A) 椭圆图B) 矩形C) 菱形D) 三角形(10)有三个关系R,S和T如下:其中关系T由关系R和S通过某种操作得到,该操作为A) 选择B) 投影C) 交D) 并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f”,&case,&pjrintF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符 B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:int x=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#includemain(){ int a=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0C)3,2D)1,217)设有定义:int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(a>b) c=a,a=b,b=c;B)if(a>b) {c=a,a=b,b=c;}C)if(a>b) c=a;a=b;b=c;D)if(a>b) {c=a;a=b;b=c;}(18)有以下程序#includemain(){ int c=0,k;for (k=1;k<3;k++)switch (k){ default: c+=kcase 2: c++;break;case 4: c+=2;break;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是A)if((a>b)&&(b>c)) k=1;else k=0;B)if((a>b)||(b>c) k=1;else k=0;C)if(a<=b) k=0;else if(b<=c) k=1;D)if(a>b) k=1;else if(b>c) k=1;else k=0;20)有以下程序#include{ char s[]={“012xy”};int i,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’) n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){ int n=2,k=0;while(k++&&n++>2);printf(“%d %d\n”,k,n);}程序运行后的输出结果是A)0 2B)1 3C)5 7D)1 2(22)有以下定义语句,编译时会出现编译错误的是A)char a=’a’;B)char a=’\n’;C)char a=’aa’;D)char a=’\x2d’;(23)有以下程序#includemain(){ char c1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是 A)E,68C)E,DD)输出无定值(24)有以下程序#includevoid fun(int p){ int d=2;p=d++; printf(“%d”,p);}main(){ int a=1;fun(a); printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#define MIN -2147483647int findmax (int x[],int n){ int i,max;for(i=0;i<N;I++)< p="" />{ max=MIN;if(maxreturn max;}造成错误的原因是A)定义语句int i,max;中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){ int m=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:int a[4][10],*p,*q[4];且0≤i<4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]D)p=&a[2][1](28)有以下程序#include#includemain(){ char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){ int a[ ]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){ case 0:switch(a[i]%2){case 0:a[i]++;break;case 1:a[i]--;}break;case 1:a[i[=0;}for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“\n”);}A)3 3 4 4B)2 0 5 0C)3 0 4 0D)0 3 0 4(30)有以下程序#include#includemain(){ char a[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是 A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char * a,char * b){ whi le((*b=*a)!=’\0’) {a++,b++;} }A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数void fun(int n,char * s) {……}则下面对函数指针的定义和赋值均是正确的是A)void (*pf)(); pf=fun;B)viod *pf(); pf=fun;C)void *pf(); *pf=fun;D)void (*pf)(int,char);pf=&fun;(34)有以下程序#includeint f(int n);main(){ int a=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}int f(int n){ static int a=1;n+=a++;return n;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#define f(x) x*x*xmain(){ int a=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;(37)设有定义:char *c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)char str[ ]=”string”;c=str;B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestruct A{ int a; char b[10]; double c;};struct A f(struct A t);main(){ struct A a={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}struct A f(struct A t)( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,1202.0(39)若有以下程序段int r=8;printf(“%d\n”,r>>1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。
2012年计算机二级考试C语言部分真题=4)>2C)3='A'&&aa[j][0]){ t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是A)fwoB)fixC)twoD)owo(33)有以下程序#includeint a=1,b=2;void fun1(int a, int b){ printf(“%d%d”,a,b); }void fun2( ){ a=3; b=4; }main(){ fun1(5,6); fun2();printf("%d%d\n",a,b);}程序运行后的输出结果是A)1 2 5 6B)5 6 3 4C)5 6 1 2D)3 4 5 6(34)有以下程序#includefunc(int n){ static int num=1;num=num+n;printf("%d",num); }void main(){ func(3);func(4);printf("\n"); } 程序运行后的输出结果是A)4 8B)3 4C)3 5D)4 5(35)有以下程序#include#includefun(int *p1,int *p2,int *s){ s=(int*)malloc(sizeof(int));*s=*p1+*p2;free(s);}void main(){ int a=1,b=40,*q=&a;fun(&a,printf("%d\n",*q);}程序运行后的输出结果是A)42B)0C)1D)41(36)有以下程序#includestruct STU{char name[9];char sex;int score[2];}; void f(struct STU a[]){ struct STU b={"zhao",'m',85,90};a[1]=b;}main(){ struct STU c[2]={{"Qian",'f',95,92},{"Sun",'m',98,99}};f(c);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0]. score[1]);printf("%s,%c,%d,%d\n,",c[1].name,c[1].sex,c[1].score[0],c[ 1].score[1]);}程序运行后的输出结果是A)Zhao,m,85,90,Sun,m,98,99B)Zhao,m,85,90, Qian,f,95,92C)Qian,f,95,92,Sun,m,98,99D)Qian,f,95,92,Zhao,m,85,90(37)以下叙述中错误的是A)可以用trpedef 说明的新类型名来定义变量B)trpedef 说明的新类型名必须使用大写字母,否则会出编译错误C)用trpedef 可以为基本数据类型说明一个新名称D)用trpedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名(38)以下叙述中错误的是A)函数的返回值类型不能是结构体类型,只能是简单类型B)函数可以返回指向结构体变量的指针C)可以通过指向结构体变量的指针访问所指结构体变量的任何成员D)只要类型相同,结构体变量之间可以整体赋值(39)若有定义语句int b=2; 则表达式(b,则输出结果是【8】。
2012计算机二级C语言笔试精选试题1.若有以下定义:floatx;inta,b,c=2;,则正确的switch语句是()A)switch(x){ case1.0∶printf("*\n");case2.0∶printf("**\n");}B)switch(int(x)){ case1∶printf("*\n");case2∶printf("**\n");}C)switch(a+b){ case1∶printf("*\n");case1+2∶printf("**\n");}D)switch(a+b){ case1∶printf("*\n");casec∶printf("**\n");}2.执行下面程序片段的结果是()int x=123;do{ printf("=\n",x--);}while(!x);A)打印出321B)打印出123C)不打印任何内容D)陷入死循环3.以下程序的输出结果是()# includemain(){ int i=0,a=0;while(i<20){ for(;;){ if((i )==0)break;else i--; }i+=11;a+=i;}考试通printf("%d\n",a);}A)21 B)32 C)33 D)114.下列与表达式“b=(a<0?-1∶a>0?1∶0)”的功能等价选项是()A)b=0;if(a>=0)if(a>0) b=1;else b=-1;B)if(a>0)b=1;else if(a<0)b=-1;elseb=0C)if(a)if(a<0) b=-1;else if(a>0)b=1;else b=0;D) b=-1;if(a)if(a>0)b=1;else if(a==0)b=0;else b=-1;5.若有以下定义:char a; int b; float c; double d; 则表达式“a*b+d-c”值的类型为()A)float B)int C)char D)double6.以下叙述中正确的是()A)在函数中必须要有return语句B)在函数中可以有多个return语句,但只执行其中的一个C)return语句中必须要有一个表达式D)函数值并不总是通过return语句传回调用处7.有以下程序float fun(int x,int y){ return(x+y);}main(){int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是()A)编译出错 B)9 C)21 D)9.08.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,I;其中0≤i≤9,则对a数组元素不正确的引用是()A)a[p-a] B)*(&a[i]) C)p[i] D)a[10]9.以下叙述中正确的是()A)全局变量的作用域一定比局部变量的作用域大B)静态(static)类型变量的生存期贯穿于整个程序的运行期间C)函数的形参都属于全局变量D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值10.若有如下程序:main(){char a[][9]={"china","Japan","USA","France"};printf("\′%s\′\n",a[2]);}则程序运行后的输出结果是()A)′Japan′ B)′USA′ C)USA D)′inaJapanUSAFrance′答案:1.C 2.B 3.B 4.B 5.D 6.B 7.B 8.D 9.B 10.BC 语言最重要的知识点复习资料总体上必须清楚的:1)程序结构是三种: 顺序结构 , 循环结构(三个循环结构), 选择结构(if 和 switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
2012年9月全国计算机2级考试(C语言程序设计)笔试模拟试题及答案2012年9月全国计算机等级考试二级笔试模拟试题C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列叙述中正确的是()A)栈是“先进先出”的线性表B)队列是“先进后出”的线性表C)循环队列是非线性结构D)有序线性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是()A)栈 B)树 C)队列 D)二叉树(3)某二叉树有5个度为z的结点,则该二叉树中的叶子结点数是()A)10 B)8 C)6 D)4(4)下列排序方法中,最坏情况下比较次数最少的是()A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。
下面属于应用软件的是() A)编译程序 B)操作系统 C)教务管理系统 D)汇编程序(6)下面叙述中错误的是()A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。
下列叙述中正确的是()A)提高耦合性降低内聚性有利他哦高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元索间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是()A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训(9)有两个关系R, S如下:由关系R通过运算得到关系S,则所使用的运算为()A)选择 B)投影 C)插入 D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为()A)属性 B)键 C)关系 D)域(11)以下选项中合法的标识符是()A)1_1 B)1-1 C)_11 D)1_ _(12)若函数中有定于语句:int k;,则()A)系统将自动给K赋初值0B)时k中的值无定义C)系统将自动给k赋初值-1D)这时k中无任何值(13)以下选项中,能用作数据常量的是()A)0115 B)0118 C)1.5e1.5 D)115L(14)设有定义:int x=2;,以下表达式中,值不为6的是()A)x*=x+1 B)x++,2*x C)x*=(i+x) D)2*x, x+=2(15)程序段:int x=12; double y=3.141593; printf(“%d%8.6f”, x, y);的输出结果是() A)123.141593 B)12 3.141593 C)12, 3.141593 D)123.1415930(16)若有定义语句:double x, y,*px,*pY; 执行了px=&x; py=&y;之后,正确的输入语句是() A)scarf(“%f%1”,x,y);B)scarf(“%f%f”,&x,&y);C)scarf(“%lf%1e”,px,py);D)scarf(“%lf%lf”,x,y);(17)以下是if语句的基本形式:()if〔表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序A)n=0; while((ch=getchar())!='\n’) n++;B)n=0; while(getchar()!='1n‘) n++;C)for( n=0;getchar()!='\n';n++);D)n=0; for( ch=getchar(); ch! ='\n';n++);(23)有以下程序#include <stdio.h>main(){int al,a2;char cl,c2;scanf(“%d%c%d%c”,&a1,&cl,&a2,&c2);printf(“%d, %c. %d, %c”,a1,c1,a2, c2);}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为自负b,程序输出的结果是:12,a,34,b 则正确的输入格式是(以下~代表空格,<CR>代表回车)()A)i2a34b<CR>B)12~a~34~b<CR>C)12,a,34,b<CR>D)12~a34~b<CR>(24)有以下程序#include <stdio.h>int f(int x,int y){return((y-x)*x);)main(){int a=3,b=4,c=5,d;d=f(f(a,b),f(a, c));printf(“od\n”,d);}程序运行后的输出结果是()A)10 B)9 C)8 D)7(25)有以下程序#include <stdio.h>void fun (char *s){while(*s){if(*s%2==0)printf(“%c”,*s);s++;}}main(){char a[]=(“good”};fun(a);printf(“\n”);}注意:字母a的ASCII码值为97,程序运行后的输出结果是()A)d B)go C)god D)good(26)有以下程序#include <stdio.h>void fun(int *a,int *b){int *c;c=a;a=b;b=c;}main(){int x=3, y=5,*p=&x, *q=&y;fun (p,q);printf(“%d,%d,”,*P,*q):fun(&X, &y);printf(“%d,%d\n”;*p.*q);}程序运行后的输出结果是()A)3,5.5,3 B)3,5,3,5 C)5,3,3,5 D)5,3,5,3(27)有以下程序#include <stdio.h>void flint *p,int *q);main()int m=l,n=2,*r=&m;f (r, &n);printf(“%d,od”,m, n);}void f(int *p,int *q){p=p+l: *q=*q+1;}程序运行后的输出结果是()A)1,3 B)2,3 C)1,4 D)1,2(28)以卜函数按每行8个输出数组中的数据vold fun( int *w,int n){int i;for(i=0;i<n;i++){_____________printf(“%d”,w[i]);}printf(“\n”);}下划线处应填入的语句是()A)if(i/8==0)printf(“\n”);B)if(i/8==0)continue;C)if(i%8==0)printf(“\n”);D)if(i%8==0)contInue;(29)若有以下定义int x[1O], *pt=x;则对x数组元素的正确引用是()A)*&x[10] B)*(x+3) C)*(pt+10) D)pt+3(30)设有定义:char s[81]; int i=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是()A)gets(s);B)while((s[i++]=getchar())!='\n’);s[i]= '\0';C)scarf(“%s”,s);D)do{ scarf(“%c”,&s[i]); }while(s[i++]!='\n‘); s[i]='\0';(31)有以下程序#include <stdio.h>nain(){char *a[ ]=(“abed”,“ef”,“gh”,“ijk”}; int I;for(i=0;i<4;i++)printf(“%c”,*a[i]);}程序运行后的输出结果是()A)aegiB)dfhkC)abedD)abcdefghijk(32)以下选项中正确的语句组是()A)char s[]; s=“BOOK!”;B)char * s={“BOOK!”};C)char sf10}; s=“BOOK!”;D)char* s=“BOOK!”;(33)有以下程序#include <stdio.h>int fun(int x,int y){if (x==y) return(x);else return((x+y)/2);main()( int a=4,b=5,c=6;ptintf(“%d\n”, fun (2*a,fun(b,c)));}程序运行后的输出结果是()A)3 B)6 C)8 D)12(34)设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是()A)autoB)registerC)staticD)auto或register(35)有以下程序#include <stdio.h>int b=2.;int fun(int *k){b=*k+b; return (b);}main(){int a〔10],{1,2,3, 4,5,6,7,8),i;for(i=2;i<4;i++)(b=fun(&a[i])+b; printf(“%d”;b);printf(“\n”);}程序运行后的输出结果是()A)10 12 B)8 10 C)10 28 D)10 1b(36)有以下程序#include <stdio.h>#define PT 3 .5;#define S(x) PT*x*x;main(){ int a=1,b=2;printf(“%4 .if\n”, S(a+b));}程序运行后的输出结果是()A)14.0 B)31.5 C)7.5 D)程序有错无输出结果(37)有以下程序#include <stdio.h>struct ord{int x,y;}bt[2]={1,2,3,4};main(){struct ord *p=dt;printf(“%d”,++p->x); printf(“%d\n”,++p->y);}程序的运行结果是()A)1,2 B)2,3 C)3,4 D)4,1(38)设有宏定义:#define IsDIV(k,n)((k%n=I)?1:0)且变量m己正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是()A)判断m是否能被5或者7整除B)判断m是否能被5和7整除C)判断m被5或者7整除是否余1D)判断m被J和7整除是否都余(39)有以一下程序main(){int a=5,b=1, t;t=(a《2)|b; printf(“%d\n”,t);}程序运行后的输出结果是()A)21 B)11 C)6 D)1(40)有以下程序#include <stdio.h>main(){FILE *f;f=fopen(“filea.txt”,“w”);fprintf(f,“abc”);fclose(f);}若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为()A)helloabc B)abclo C)abc D)ahchelln二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
29 1)main() { char a[10]="abcde",b[]="fgh"; int i=0; strcpy(a+1,b+2); printf("%s",a); } 请详细解释一下”strcpy(a+1,b+2)”这句语句 2)main() { char s[][10]={"a","good",world"}; strcat(s[0],s[1]); printf("%s",s[0]);}请详细解释一下”strcat(s[0],s[1])”这句语句strcpy()是字符串复制函数。
连字符串的结束标志‘\0’一同复制。
对于strcpy(a+1,b+2);中的b+2则是数组里的“h\0”的首地址。
a+1则是数组里的“bcde”的首地址。
即此函数的意义是:把“h\0”复制到“bcde”的位置。
字符串遇到‘\0’结束即结果是:ah。
对于strcat(s[0],s[1]);中的二为数组可以看成是多个一维数组组成的。
所以s[0]代表的是“a”的首地址,s[1]代表的是“good”的首地址。
这是字符串连接函数。
即把good 放到了a的后面。
结果是:agood。
二级C语言程序设计答案及详解一、选择题(11)B)【解析】每一个C 语言的文件或函数都可以单独编译,但只有main 函数的才可以执行。
(12)A)【解析】预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin 等和编译预处理命令名(如define 和include)。
预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。
(13)B)【解析】0xab 是十六进制表示的常量。
(14)A)【解析】C语言用函数实现软件的模块化设计。
(15)C)【解析】C语言中,常常用一个标识符来代表一个常量,称为符号常量。
2012年3月全国计算机等级考试二级C语言真题一.选择题1.下列叙述中正确的是:A.循环队列是队列的一种顺序存储结构B.循环队列是队列的一种链式存储结构C.循环队列是非线性结构D.循环队列是一直逻辑结构2.下列叙述中正确的是A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈和队列都是非线性结构D.以上三种说法都不对3.一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为A.4 B.6 C.10 D.164.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.内模式B.外模式C.概念模式D.逻辑模式5.在满足实体完整性约束的条件下A.一个关系中可以没有候选关键词B.一个关系中只能有一个候选关键词C.一个关系中必须有多个候选关键词D.一个关系中应该有一个或者多个候选关键词6.有三个关系R.S和T如下:SA B Ca 1 2b 2 1RA B Ca 1 2b 2 1c 3 1TA B Ca 2 1b 3 1则由关系R和S得到关系T的操作是A.自然连接B.并C.差D.交7.软件生命周期中的活动不包括A.软件维护B.市场调研C.软件测试D.需求分析8.下面不属于需求分析阶段任务的是A.确定软件系统的功能需求B.确定软件系统的系统的系能需求B.制定软件集成测试计划D.需求规格说明书审评9.在黑盒测试方式中,设计测试用例的主要根据是A.程序外部功能B.程序内部逻辑C.程序数据结构D.程序流程图10.在软件设计中不使用的工具是A.系统结构图B.程序流程图C.PAD图D.数据流图(DFD图)11.针对简单程序设计,以下叙述的实施步骤正确的是A.确定算法和数据结构.编码.调试.整理文档B.编码.确定算法和数据结构.调试.整理文档C.整理文档.确定算法和数据结构.编码.调试D.确定算法和数据结构.调试.编码.整理文档12.关于C语言中数的表示,以下叙述正确的是A.只有整型数在允许范围内能精确无误的表示,实型数会有误差B.只要在在允许范围内整型和实型都能精确表示C.只有实型数在允许范围内能精确无误的表示,整型数会有误差D.只有八进制表示的数在不会有误差13.以下关于算法叙述错误的是A.算法可以用伪代码.流程图等多种形式来描述B.一个正确的算法必须有输入C.一个正确的算法必须有输出D.用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码14.以下叙述错误的是A.一个C程序可以包含多个不同名的函数B.一个C程序只能有一个主函数C.C程序在书写时,有严格的缩进要求,否则不能编译通过D.C程序的主函数必须用main作为函数名15.设有以下语句Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔16.以下选项中非法的字符常量是A.’\102’ B.’\65’ C.’\xff’ D.’\019’17.有以下程序#include <sthio.h>Main(){Int A=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);Printf(“%d, %d, %d\n”,A,B,C)}程序运行后输出的结果是A 0,4,5B 4,4,5C 4,4,4D 0,0,018.设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是A.x++; printf((“%d\n”,x); B.n=++x; printf((“%d\n”,n);C.++x; printf((“%d\n”,x); D.n=x++; printf((“%d\n”,n);19.以下选项中,能表示逻辑值“假”的是A 1B 0.000001C 0D 100.0 20.有以下程序#include <sthio.h>Main(){ int a;Scanf(“%d”,&a);If(a++<9) printf((“%d\n”,a);Else printf((“%d\n”,a--);}程序运行时键盘输入9<回车>,则输出的结构是A.10 B 11 C 9 D 821.有以下程序#include <sthio.h>Main(){int s=0,n;For (n=0;n<3;n<++){switch(s){ case 0;Case 1;s+=1;Case 2;s+=2;break;Case 3;s+3;Case 4;s+=4;}printf((“%d\n”,s);}}程序运行后的结果是A 1,2,4B 1,3,6C 3,10,14D 3,6,1022.若k是int类型变量,且有以下for语句For(k=-1;k<0;k++)printf(****\n”);下面关于语句执行情况的叙述中正确的是A.循环体执行一次B.循环体执行两次C.循环体一次也不执行D.构成无限循环23.有以下程序#include <sthio.h>Main(){char A,B,C;B=’1’;C=’A’For(A=0;A<6;A++){if(A%2) putchar(B+A);Else putchar(C+A);}}程序运行后输出的结果是A 1B3D5FB ABCDFEC A2C4E6D 12345624.设有如下定义语句Int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A *(k+2)B k+2C *k+2D *k+=225.fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。
2012年9月22日网上发布的全国计算机等级考试二级C语言笔试答案一、选择题:(1)C、(2)B、(3)B、(4)D、(5)A(6)C、(7)C、(8)B、(9)A、(10)A(11)B、(12)A、(13)B、(14)A、(15)C(16)C、(17)C、(18)B、(19)D、(20)D(21)B、(22)D、(23)D、(24)B、(25)D(26)C、(27)A、(28)B、(29)C、(30)A(31)C、(32)A、(33)B、(34)A、(35)D(36)D、(37)B、(38)A、(39)B、(40)D二、填空题【1】6【2】20【3】逻辑独立【4】选择【5】系统软件【6】a>b【7】%lf%f【8】224【9】16【10】4321【11】7【12】22【13】2【14】6【15】p=p->next2012年9月22日评阅者注释的全国计算机等级考试二级C语言笔试答案一、选择题:(1)C、(2)B、(3)B、(4)D、(5)A(6)C、(7)C、(8)B、(9)A、(10)A(11)B、(12)A、(13)B、(14)A、(15)C(16)C、(17)C、(18)B、(19)D、(20)D(21)B?、(22)D、(23)D、(24)B、(25)D(26)C?、(27)A、(28)B、(29)C、(30)A(31)C、(32)A、(33)B、(34)A、(35)D(36)D、(37)B、(38)A、(39)B、(40)D二、填空题【1】6【2】20【3】逻辑独立性【4】选择【5】系统软件【6】a>b【7】%lf%f【8】224【9】16【10】4321【11】7【12】22【13】2【14】6【15】p=p->next2012年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题(⑴-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。
2012年3月全国计算机等级考试二级C语言真题一、选择题1、下列叙述中正确的是:A、循环队列是队列的一种顺序存储结构B、循环队列是队列的一种链式存储结构C、循环队列是非线性结构D、循环队列是一直逻辑结构2、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈和队列都是非线性结构D、以上三种说法都不对3、一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为A、4B、6C、10D、164、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是A、内模式B、外模式C、概念模式D、逻辑模式5、在满足实体完整性约束的条件下A、一个关系中可以没有候选关键词B、一个关系中只能有一个候选关键词C、一个关系中必须有多个候选关键词D、一个关系中应该有一个或者多个候选关键词6、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、并C、差D、交7、软件生命周期中的活动不包括A、软件维护B、市场调研C、软件测试D、需求分析8、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的系统的系能需求B、制定软件集成测试计划D、需求规格说明书审评9、在黑盒测试方式中,设计测试用例的主要根据是A、程序外部功能B、程序内部逻辑C、程序数据结构D、程序流程图10、在软件设计中不使用的工具是A、系统结构图B、程序流程图C、PAD图D、数据流图(DFD图)11、针对简单程序设计,以下叙述的实施步骤正确的是A、确定算法和数据结构、编码、调试、整理文档B、编码、确定算法和数据结构、调试、整理文档C、整理文档、确定算法和数据结构、编码、调试D、确定算法和数据结构、调试、编码、整理文档12、关于C语言中数的表示,以下叙述正确的是A、只有整型数在允许范围内能精确无误的表示,实型数会有误差B、只要在在允许范围内整型和实型都能精确表示C、只有实型数在允许范围内能精确无误的表示,整型数会有误差D、只有八进制表示的数在不会有误差13、以下关于算法叙述错误的是A、算法可以用伪代码、流程图等多种形式来描述B、一个正确的算法必须有输入C、一个正确的算法必须有输出D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码14、以下叙述错误的是A、一个C程序可以包含多个不同名的函数B、一个C程序只能有一个主函数C、C程序在书写时,有严格的缩进要求,否则不能编译通过D、C程序的主函数必须用main作为函数名15、设有以下语句Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是A、A和B之间用逗号间隔B、A和B之间不能有任何间隔符C、A和B之间可以用回车间隔D、A和B之间用空格间隔16、以下选项中非法的字符常量是A、’\102’B、’\65’C、’\xff’D、’\019’17、有以下程序#include <sthio.h>Main(){Int A=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);Printf(“%d, %d, %d\n”,A,B,C)}程序运行后输出的结果是A 0,4,5B 4,4,5C 4,4,4D 0,0,018、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是A、x++; printf((“%d\n”,x);B、n=++x; printf((“%d\n”,n);C、++x; printf((“%d\n”,x);D、n=x++; printf((“%d\n”,n);19、以下选项中,能表示逻辑值“假”的是A 1B 0.000001C 0D 100.020、有以下程序#include <sthio.h>Main(){ int a;Scanf(“%d”,&a);If(a++<9) printf((“%d\n”,a);Else printf((“%d\n”,a--);}程序运行时键盘输入9<回车>,则输出的结构是A、10 B 11 C 9 D 821、有以下程序#include <sthio.h>Main(){int s=0,n;For (n=0;n<3;n<++){switch(s){ case 0;Case 1;s+=1;Case 2;s+=2;break;Case 3;s+3;Case 4;s+=4;}printf((“%d\n”,s);}}程序运行后的结果是A 1,2,4B 1,3,6C 3,10,14D 3,6,1022、若k是int类型变量,且有以下for语句For(k=-1;k<0;k++)printf(****\n”);下面关于语句执行情况的叙述中正确的是A、循环体执行一次B、循环体执行两次C、循环体一次也不执行D、构成无限循环23、有以下程序#include <sthio.h>Main(){char A,B,C;B=’1’;C=’A’For(A=0;A<6;A++){if(A%2) putchar(B+A);Else putchar(C+A);}}程序运行后输出的结果是A 1B3D5FB ABCDFEC A2C4E6D 12345624、设有如下定义语句Int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A *(k+2)B k+2C *k+2D *k+=225、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。