1、n 第一部分第一部分 考试大纲(考试大纲(20072007年)年)n 第二部分第二部分 样题及参考答案样题及参考答案 n 第三部分第三部分 历年真题及答案历年真题及答案n 第四部分第四部分 模拟试题及答案模拟试题及答案第一部分 考试大纲(2007年)n 基本要求基本要求n 考试内容考试内容n 考试方式考试方式第一部分 考试大纲基本要求1. 熟悉熟悉 Visual C+ 6.0 集成开发环境集成开发环境2. 掌握结构化程序设计的方法,具有良好的掌握结构化程序设计的方法,具有良好的程序设计风格程序设计风格3. 掌握程序设计中简单的数据结构和算法并掌握程序设计中简单的数据结构和算法并能阅读简单的程序
2、能阅读简单的程序4. 在在Visual C+ 6.0 集成开发环境下,能够集成开发环境下,能够编写简单的编写简单的C程序,程序, 并具有基本的纠错和并具有基本的纠错和调试程序的能力调试程序的能力考试内容一一C语言程序的结构语言程序的结构1.程序的构成,程序的构成,main函数和其他函数函数和其他函数2.头文件,数据说明,函数的开始和结束标志头文件,数据说明,函数的开始和结束标志以及程序中注释以及程序中注释3.源程序的书写格式源程序的书写格式4.C语言的风格语言的风格考试内容二二数据类型及其运算数据类型及其运算1.C的数据类型(基本类型,构造类型,指针的数据类型(基本类型,构造类型,指针类型,空
3、类型)及其定义方法类型,空类型)及其定义方法2.C运算符的种类、运算优先级和结合性运算符的种类、运算优先级和结合性3.不同类型数据间的转换与运算不同类型数据间的转换与运算4.C表达式类型(赋值表达式,表达式类型(赋值表达式, 算术表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则号表达式)和求值规则考试内容三三基本语句基本语句1.表达式语句,空语句,复合语句表达式语句,空语句,复合语句2.输入输出函数的调用,正确输入数据并正确输入输出函数的调用,正确输入数据并正确设计输出格式设计输出格式考试内容四四选择结构程序设计选择结构程序设
4、计1.用用 if 语句实现选择结构语句实现选择结构2.用用 switch 语句实现多分支选择结构语句实现多分支选择结构3.选择结构的嵌套选择结构的嵌套考试内容五五循环结构程序设计循环结构程序设计1.for 循环结构循环结构 2.while 和和 do-while 循环结构循环结构 3.continue 语句和语句和 break 语句语句4.循环的嵌套循环的嵌套考试内容六六数组的定义和引用数组的定义和引用1.一维数组和二维数组的定义、初始化和数组一维数组和二维数组的定义、初始化和数组元素的引用元素的引用2.字符串和字符数组字符串和字符数组 考试内容七七函数函数1.库函数的正确使用库函数的正确使用
5、2.函数的定义方法函数的定义方法3.函数的类型和返回值函数的类型和返回值4.形式参数与实际参数,参数值的传递形式参数与实际参数,参数值的传递5.函数的正确调用,嵌套调用,递归调用函数的正确调用,嵌套调用,递归调用6.局部变量和全局变量局部变量和全局变量7.变量的存储类别(自动,静态,寄存,外变量的存储类别(自动,静态,寄存,外部),变量的作用域和生存期部),变量的作用域和生存期考试内容八八编译预处理编译预处理1.宏定义和调用(不带参数的宏,带参数的宏)宏定义和调用(不带参数的宏,带参数的宏)2.“文件包含文件包含”处理处理考试内容九九指针指针1.地址与指针变量的概念,地址运算符与间址地址与指针
6、变量的概念,地址运算符与间址运算符运算符2.一维、二维数组和字符串的地址以及指向变一维、二维数组和字符串的地址以及指向变量、数组、字符串、结构体的指针变量的定量、数组、字符串、结构体的指针变量的定义。通过指针引用以上各类型数据义。通过指针引用以上各类型数据3.用指针作函数参数用指针作函数参数4.返回地址值的函数返回地址值的函数5.指针数组,指向指针的指针指针数组,指向指针的指针考试内容十十. 结构体与共用体结构体与共用体1.用用 typedef 说明一个新类型说明一个新类型2.结构体与共用体类型数据的定义和成员的引结构体与共用体类型数据的定义和成员的引用用3.通过结构体构成链表,单向链表的建立
7、,节通过结构体构成链表,单向链表的建立,节点数据的输出、删除与插入点数据的输出、删除与插入考试内容十一十一. 位运算位运算1.位运算的含义和使用位运算的含义和使用2.简单的位运算简单的位运算考试内容十二十二. 文件操作文件操作1.只要求缓冲文件系统(即高级磁盘只要求缓冲文件系统(即高级磁盘 I/O系系统),对非缓冲文件系统(即低级磁盘统),对非缓冲文件系统(即低级磁盘 I/O系统)不要求系统)不要求2.文件类型指针(文件类型指针( FILE类型指针)类型指针)3.文件的打开和关闭(文件的打开和关闭( fopen,fclose )4.文件的读写文件的读写 (fputc,fgetc,fgets,f
8、read,fwrite fprintf,fscanf 函数的应用),文件的定位函数的应用),文件的定位( rewind,fseek 函数的应用)函数的应用)考试方式1.笔试:笔试:90分钟,满分分钟,满分100分,其中含公分,其中含公共基础知识部分的共基础知识部分的30分分2.上机:上机:90分钟,满分分钟,满分100分分 上机操作包括:上机操作包括:填空填空改错改错编程编程 第二部分 样题及参考答案n选择题选择题n填空题填空题n上机操作题上机操作题 填空题填空题 改错题改错题 编程题编程题第二部分 样题及参考答案选择题n选择题选择题以下程序的输出结果是以下程序的输出结果是#include “
9、stdio.h”main() int i=010, j=10, k=0 x10 ; printf(“%d,%d,%d”, i, j, k) ; A) 8,10,16 B) 8,10,10 C) 10,10,10 D) 10,10,16 选择题设有如下语句:设有如下语句:char *s=“t”NameAddressn”;则指针则指针 s 所指字符串的长度为所指字符串的长度为 A) 说明不合法说明不合法 B) 19 C) 18 D) 14选择题C语言中的基本数据类型包括语言中的基本数据类型包括A) 整型、实型、逻辑型整型、实型、逻辑型 B) 整型、实型、字符型整型、实型、字符型 C) 整型、字符型
10、、逻辑型整型、字符型、逻辑型 D) 整型、实型、逻辑型、字符型整型、实型、逻辑型、字符型 选择题为表示关系为表示关系 xyz ,应使用的,应使用的C语言表达式语言表达式是是A) (x=y)&(y=z) B) (x=y)AND(y=z) C) (x=y=z) D) (x=y)&(y=z) 选择题以下对以下对C语言字符数组的描述中错误的是语言字符数组的描述中错误的是A) 字符数组可以存放字符串字符数组可以存放字符串B) 字符数组中的字符串可以整体输入、输出字符数组中的字符串可以整体输入、输出C) 可以在赋值语句中通过赋值运算符可以在赋值语句中通过赋值运算符“=”对对字符数组整体赋值字符数组整体赋值
11、D) 不可以用关系运算符对字符数组中字符串不可以用关系运算符对字符数组中字符串进行比较进行比较选择题以下说法中正确的是以下说法中正确的是A) C语言程序总是从第一个定义的函数开始语言程序总是从第一个定义的函数开始执行执行B) 在在C语言程序中,要调用的函数必须在语言程序中,要调用的函数必须在main()函数中定义函数中定义C) C语言程序总是从语言程序总是从main()函数开始执行函数开始执行D) C语言程序中的语言程序中的main()函数必须放在程序函数必须放在程序的开始部分的开始部分选择题有以下程序段:有以下程序段: int x=3;do printf(“%3d”, x- =2 ) ; w
12、hile( ! (-x) ) ;执行后的输出结果是执行后的输出结果是A) 1B) 30C) 1 -2D) 死循环死循环选择题设有如下定义:设有如下定义: char *aa2= “abcd”,”ABCD”;则以下说法中正确的是则以下说法中正确的是A) aa数组元素的值分别是数组元素的值分别是“abcd”和和”ABCD”B) aa是指针变量,它指向含有两个数组元是指针变量,它指向含有两个数组元素的字符型一维数组素的字符型一维数组C) aa数组的两个元素分别存放的是含有数组的两个元素分别存放的是含有4个个字符的一维数组的首地址字符的一维数组的首地址D) aa数组的两个元素中分别存放了字符数组的两个元
13、素中分别存放了字符a和和A的地址的地址选择题设有以下定义:设有以下定义:int a43=1,2,3,4,5,6,7,8,9,10,11,12;int (*prt)3=a,*p=a0;则下列能够正确表示数组元素则下列能够正确表示数组元素 a12的表达的表达式是式是A) *(*prt+1)2) B) *(*(p+5)C) (*prt+1)+2 D) *(*(a+1)+2)选择题有以下程序:有以下程序:#include “stdio.h”#include “stdlib.h”fut(int *s,int p23) *s=p11; main() int a23=1,3,5,7,9,11,*p;p=(i
14、nt *)malloc(sizeof(int);fut(&p,a);printf(“%dn”,*p); 程序的运行结果是程序的运行结果是A) 1B) 7C) 9D) 11填空题n填空题填空题能正确表示逻辑关系能正确表示逻辑关系“10 x100或或x&b0) putchar(*chp); putchar(n); GFEDCB(x10 & x100) | x0 或或 (10 x & x100) | x0或或 x10 & xx | (10 x & x100)填空题以下程序运行后的输出结果是以下程序运行后的输出结果是_#include “stdio.h”void ast(int x,int y,int
15、 *cp,int *dp) *cp=x+y; *dp=x-y; main() int a,b,c,d; a=4; b=3; ast(a,b,&c,&d); printf(“%d%d”,c,d); 7 1填空题有以下程序:有以下程序:#include “stdio.h”main() char str1 =“how do you do”,str210; char *p1=str1,*p2=str2; scanf(“%s”,p2); printf(“%s”,p2); printf(“%sn”,p1); 若运行时输入:若运行时输入:HOW DO YOU DO 回车回车,则程序的输出结果是则程序的输出结
16、果是_HOW how do you do填空题以下程序的功能是:首先由终端键盘输入一个文件名,然后把以下程序的功能是:首先由终端键盘输入一个文件名,然后把从终端键盘输入的字符以文本方式依次存放到该文件中,用从终端键盘输入的字符以文本方式依次存放到该文件中,用#作为结束输入的标志。请填空。作为结束输入的标志。请填空。#include “stdio.h”#include “stdlib.h”main() FILE *fp; char ch,fname10; printf(“Input the name of filen”); gets(fname); if(fp=_)=NULL) printf(“
17、Cannot openn”); exit(0); printf(“Enter datan”); while(ch=getchar() != #)fputc(_, fp); fclose(p); fopen(fname,”w”) 或或 fopen(fname,”w+”)fopen(fname,”a”) 或或 fopen(fname,”a+”)ch上机操作题n上机操作题上机操作题填空题填空题请补充请补充main函数,该函数的功能是:计算两函数,该函数的功能是:计算两个自然数个自然数n和和m(m10000)之间所有数的和之间所有数的和(n和和m从键盘输入)。从键盘输入)。例如:当例如:当n=1,m=
18、100时,时,sum=5050;当;当n=100,m=1000时,时,sum=495550。请在程序的下划线处填入正确的内容,并把请在程序的下划线处填入正确的内容,并把下划线删除,使程序得出正确的结果。下划线删除,使程序得出正确的结果。注意:不得增行或减行,也不得更改程序的注意:不得增行或减行,也不得更改程序的结构!结构!上机操作题试题程序:试题程序:#includemain() int n,m; long sum; _ ; clrscr(); printf(nInput n,mn); scanf(%d,%d,&n,&m); while(n=m) _ ; n+; printf(sum= _ n
19、,sum); sum=0sum+=n 或或 sum=sum+n %ld上机操作题改错题改错题下列给定程序中,函数下列给定程序中,函数 fun 的功能是:逐个的功能是:逐个比较比较a、b两个字符串对应位置中的字符,把两个字符串对应位置中的字符,把ASCII值大或相等的字符存放到值大或相等的字符存放到 c 数组中,数组中,形成一个新的字符串。例如:若形成一个新的字符串。例如:若 a 中的字符中的字符串为:串为:aBCDeFgH,b 中的字符串为:中的字符串为:ABcd,则,则 c 中的字符串应为:中的字符串应为:aBcdeFgH。 请改正程序中错误,使它能得到正确结果。请改正程序中错误,使它能得到
20、正确结果。注意:不要改动注意:不要改动 main 函数,不得增行或减函数,不得增行或减行,也不得更改程序的结构。行,也不得更改程序的结构。上机操作题试题程序:试题程序:#include “stdio.h”#include “string.h”void fun(char *p,char *q,char *c) /* found */ int k=1; /* found */ while(*p != *q) if(*p*q) ck=*q; else ck=*p; if(*p) p+; if(*q) q+; /* found */ k+1; int k=0;while(*p | *q)或或 whil
21、e(*p!=0 | *q!=0)k+=1;或或k=k+1;或或k+;或或+k;上机操作题main() char a10=“aBCDeFgH”,b10=“ABcd”,c80=0; fun(a,b,c); printf(“The string a: ”); puts(a); printf(“The string b: ”); puts(b); printf(“The result: ”); puts(c); 上机操作题编程题编程题请编写函数请编写函数 fun ,它的功能是:求出,它的功能是:求出 1 到到1000 之内能被之内能被 7 或或 11 整除、但不能同时被整除、但不能同时被 7 和和 1
22、1 整除的所有整数,并将它们放在整除的所有整数,并将它们放在 a 所指的数组中,通过所指的数组中,通过 n 返回这些数的个数。返回这些数的个数。注意:部分源程序给出如下。注意:部分源程序给出如下。 请勿改动主请勿改动主函数和其他函数的任何内容,函数和其他函数的任何内容, 仅在函数仅在函数 fun 的花括号中填入所编写的若干语句。的花括号中填入所编写的若干语句。上机操作题试题程序:试题程序:#include “stdio.h”void fun( int *a,int *n) main() int aa1000,n,k; fun(aa,&n); for(k=0;kn;k+) if(k+1)%10=
23、0) printf(“n”); else printf(“%5d”,aak); int i,j=0;for(i=1;iy & y!=0); C )if(xy) x- - D )if(y0&n5); 程序运行后的输出结果是程序运行后的输出结果是( )A)235 B)0235 C)02356 D)23562007年4月二级C语言笔试试卷(24)有以下程序有以下程序mian() int i,j; for(i=1;i4;i+) for(j=i;j4;j+) printf(“%d*%d=%d “,i,j,i*j);printf(“n”); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 1*1
24、=1 1*2=2 1*3=3 B ) 1*1=1 1*2=2 1*3=3 2*1=2 2*2=4 2*2=4 2*3=6 3*1=3 3*3=9C ) 1*1=1 D )1*1=1 1*2=2 2*2=4 2*1=2 2*2=4 1*3=3 2*3=6 3*3=9 3*1=3 3*2=6 3*3=92007年4月二级C语言笔试试卷(25)以下合法的字符型常量是以下合法的字符型常量是( )A )x13 B )018 C )65 D )”n” 2007年4月二级C语言笔试试卷(26)在在C语言中,函数返回值的类型最终取决于语言中,函数返回值的类型最终取决于( ) A )函数定义时在函数首部所说明的
25、函数类)函数定义时在函数首部所说明的函数类型型 B ) return语句中表达式值的类型语句中表达式值的类型 C )调用函数时主函数所传递的实参类型)调用函数时主函数所传递的实参类型 D )函数定义时形参的类型)函数定义时形参的类型2007年4月二级C语言笔试试卷(27)已知大写字母已知大写字母A的的ASCII码是码是65,小写字母,小写字母a的的ASCII码是码是97,以下不能将变量,以下不能将变量c中大写字中大写字母转换为对应小写字母的语句是母转换为对应小写字母的语句是( ) A ) c=(c-A)%26+a B ) c=c+32 C ) c=c-A+a D ) c=(A+c)%26-a2
26、007年4月二级C语言笔试试卷(28)有以下函数有以下函数 int fun(char *s) char *t=s; while(*t+); return(t-s); 该函数的功能是该函数的功能是( )A )比较两个字符的大小)比较两个字符的大小 B )计算)计算s所指字符串占用内存字节的个数所指字符串占用内存字节的个数C )计算)计算s所指字符串的长度所指字符串的长度 D )将)将s所指字符串复制到字符串所指字符串复制到字符串t中中2007年4月二级C语言笔试试卷(29)设已有定义:设已有定义:float x; 则以下对指针变量则以下对指针变量p进行定义且赋初值的语进行定义且赋初值的语句中正确
27、的是句中正确的是( ) A ) float *p=1024; B ) int *p=(float x);C ) float p=&x; D ) float *p=&x;2007年4月二级C语言笔试试卷(30)有以下程序有以下程序 #include “stdio.h” main() int n,*p=NULL;*p=&n;printf(“Input n:”); scanf(“%d”,&p); printf(“output n:”); printf(“%dn”,p); 该程序试图通过指针该程序试图通过指针p为变量为变量n读入数据并输出,但读入数据并输出,但程序有多处错误,以下语句正确的是程序有多处
28、错误,以下语句正确的是( )A ) int n,*p=NULL; B ) *p=&n; C ) scanf(“%d”,&p) D ) printf(“%dn”,p);2007年4月二级C语言笔试试卷(31)以下程序中函数以下程序中函数f的功能是:当的功能是:当flag为为1时,进行有由小到大排序;当时,进行有由小到大排序;当flag 为为0时,进行由大到小排序。时,进行由大到小排序。 void f(int b ,int n,int flag) int i,j,t;for(i=0;in-1;i+) for (j=i+1;jbj:bibj) t=bi; bi=bj; bj=t; main() in
29、t a10=5,4,3,2,1,6,7,8,9,10,i; f(&a2,5,0); f(a,5,1); for(i=0;i10;i+) printf(“%d,”,ai); 程序运行后的输出结果是程序运行后的输出结果是( )A)1,2,3,4,5,6,7,8,9,10, B)3,4,5,6,7,2,1,8,9,10,C)5,4,3,2,1,6,7,8,9,10, D)10,9,8,7,6,5,4,3,2,1,2007年4月二级C语言笔试试卷(32)有以下程序有以下程序 void f(int b )int i; for(i=2;i6;i+) bi*=2; main()int a10=1,2,3,4
30、,5,6,7,8,9,10,i;f(a);for(i=0;i10;i+) printf(“%d,”,ai); 程序运行后的输出结果是程序运行后的输出结果是( )A)1,2,3,4,5,6,7,8,9,10,B)1,2,6,8,10,12,7,8,9,10C)1,2,3,4,10,12,14,16,9,10, D)1,2,6,8,10,12,14,16,9,10,2007年4月二级C语言笔试试卷(33)有以下程序有以下程序 typedef struct int b,p; A; void f(A c) /*注意:注意:c是结构变量名是结构变量名 */ int j;c.b+=1; c.p+=2; m
31、ain()int i;A a=1,2;f(a);printf(“%d,%dn”,a.b,a.p); 程序运行后的输出结果是程序运行后的输出结果是( ) A)2,3 B)2,4 C)1,4 D)1,22007年4月二级C语言笔试试卷(34)有以下程序有以下程序 main() int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1,i,j,k,t; for(i=0;i4;i+) for(j=0;j3;j+) for(k=j+1;kaki) t=aji; aji=aki; aki=t; /*按列排序按列排序*/ for(i=0;i4;i+) printf(“%d,”,aii)
32、; 程序运行后的输出结果是程序运行后的输出结果是( ) A ) 1,6,5,7, B ) 8,7,3,1, C ) 4,7,5,2, D ) 1,6,2,1,2007年4月二级C语言笔试试卷(35) 有以下程序有以下程序 main() int a44=1,4,3,2,8,6,5,7, 3,7,2,5,4,8,6,1,i,k,t; for(i=0;i3;i+) for(k=i+1;k4;k+) if(aii akk) t=aii; aii=akk; akk=t; for(i=0;i4;i+)printf(“%d,”,a0i); 程序运行后的输出结果是程序运行后的输出结果是( ) A ) 6,2,
33、1,1, B ) 6,4,3,2, C ) 1,1,2,6, D ) 2,3,4,62007年4月二级C语言笔试试卷(36) 有以下程序有以下程序 void f(int *q) int i=0;for( ; i5;i+)(*q)+; main() int a5=1,2,3,4,5,i;f(a);for(i=0;i5;i+)printf(“%d,”,ai); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 2,2,3,4,5, B ) 6,2,3,4,5, C ) 1,2,3,4,5, D ) 2,3,4,5,6,2007年4月二级C语言笔试试卷(37) 有以下程序有以下程序 #inc
34、lude “stdio.h” #include “string.h”main() char p20=a,b,c,d,q =”abc”, r =”abcde”; strcpy(p+strlen(q),r); strcat (p,q); printf(“%d%dn”,sizeof(p),strlen(p); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 20 9 B ) 9 9 C ) 20 11 D ) 11 11 2007年4月二级C语言笔试试卷(38) 有以下程序有以下程序 #include “stdio.h” #include “string.h” main() char p2
35、0=a,b,c,d,q =”abc”, r =”abcde” strcat(p,r); strcpy(p+strlen(q),q); printf(“%d n”,strlen(p); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 9 B ) 6 C ) 11 D ) 72007年4月二级C语言笔试试卷(39) 有以下程序有以下程序#include “stdio.h” #include “string.h”void f(char p 10, int n ) /* 字符串从小到大排序字符串从小到大排序 */ char t10; int i,j; for(i=0;in-1;i+) for
36、(j=i+1;j0) strcpy(t,pi); strcpy(pi,pj); strcpy(pi,t); main() char p510=“abc”,”aabdfg”,”abbd”,”dcdbe”,”cd”; f(p,5); printf(“%dn”,strlen(p0); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 2 B ) 4 C ) 6 D ) 32007年4月二级C语言笔试试卷(40) 有以下程序有以下程序void f(int n, int *r) int r1=0; if(n%3=0) r1=n/3;else if(n%5=0) r1=n/5;else f(-n,
37、&r1);*r=r1; main() int m=7,r; f(m,&r); printf(“%dn”,r); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 2 B ) 1 C ) 3 D ) 02007年4月二级C语言笔试试卷(41)有以下程序有以下程序 main(int argc,char *argv ) int n=0,i; for(i=1;iargc;i+) n=n*10+*argvi-0; printf(“%dn”,n); 编译连接后生成可执行文件编译连接后生成可执行文件tt.exe,若运行时输入以,若运行时输入以下命令行下命令行tt 12 345 678程序运行后的输出
38、结果是程序运行后的输出结果是( )A ) 12 B ) 12345 C ) 12345678 D ) 1362007年4月二级C语言笔试试卷(42) 有以下程序有以下程序 int a=4; int f(int n) int t=0; static int a=5; if(n%2) int a=6; t+=a+; else int a=7 ;t+=a+; return t+a+; main()() int s=a,i=0; for(;(;i2;i+) s+=f(i); printf (“%dn”,s); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 24 B ) 28 C ) 32
39、D ) 362007年4月二级C语言笔试试卷(43) 有一个名为有一个名为init.txt的文件,内容如下的文件,内容如下:#define HDY(A,B) A/B#define PRINT(Y) printf(“y=%dn”,Y)有以下程序有以下程序#include “init.txt”main() int a=1,b=2,c=3,d=4,k; k=HDY(a+c,b+d); PRINT(k); 下面针对该程序的叙述正确的是下面针对该程序的叙述正确的是( )A)编译有错)编译有错 B)运行出错)运行出错 C)运行结果为)运行结果为 y=0 D)运行结果为)运行结果为 y=62007年4月二级
40、C语言笔试试卷(44) 有以下程序有以下程序main() char ch =“uvwxyz”,*pc; pc=ch; printf(“%cn”,*(pc+5); 程序运行后的输出结果是程序运行后的输出结果是( )A ) z B ) 0 C ) 元素元素ch5的地址的地址 D ) 字符字符y的地址的地址2007年4月二级C语言笔试试卷(45) 有以下程序有以下程序struct S int n; int a20;void f(struct S *p) int i,j,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(p-aip-aj) t=p-ai; p-ai=p-a
41、j; p-aj=t; main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f(&s); for(i=0;is.n;i+) printf(“%d,”,s.ai); 程序运行后的输出结果是程序运行后的输出结果是( )A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1, C)2,3,1,6,8,7,5,4,10,9, D)10,9,8,7,6,1,2,3,4,5,2007年4月二级C语言笔试试卷(46) 有以下程序有以下程序struct S int n; int a20; ;void f(int *a,int
42、n) int i; for(i=0;in-1;i+) ai+=i; main() int i; struct S s=10,2,3,1,6,8,7,5,4,10,9; f(s.a, s.n); for(i=0;is.n;i+) printf(“%d,”,s.ai); 程序运行后的输出结果是程序运行后的输出结果是( )A)2,4,3,9,12,12,11,11,18,9, B)3,4,2,7,9,8,6,5,11,10, C)2,3,1,6,8,7,5,4,10,9, D)1,2,3,6,8,7,5,4,10,9,2007年4月二级C语言笔试试卷(47) 有以下程序段有以下程序段typedef
43、struct node int data; struct node *next; *NODE;NODE p;以下叙述正确的是以下叙述正确的是( )A)p是指向是指向struct node结构变量的指针的结构变量的指针的指针指针B)NODE p;语句出错;语句出错C)p是指向是指向struct node结构变量的指针结构变量的指针D)p是是struct node结构变量结构变量2007年4月二级C语言笔试试卷(48)有以下程序有以下程序main() unsigned char a=2,b=4,c=5,d; d=a|b; d&=c; printf(“%dn”,d); 程序运行后的输出结果是程序运行
44、后的输出结果是( )A)3 B)4 C)5 D)62007年4月二级C语言笔试试卷(49)有以下程序有以下程序#include “stdio.h”main() FILE *fp; int k,n,a6=1,2,3,4,5,6; fp=fopen(“d2.dat”,”w”); fprintf(fp,”%d%d%dn”,a0,a1,a2); fprintf(fp, “%d%d%d n”,a3,a4,a5); fclose(fp); fp=fopen(“d2.dat”,”r”); fscanf(fp, “%d%d”,&k,&n); printf(“%d%dn”,k,n); fclose(fp); 程
45、序运行后的输出结果是程序运行后的输出结果是( )A)1 2 B) 1 4 C) 123 4 D)123 4562007年4月二级C语言笔试试卷(50)有以下程序有以下程序#include “stdio.h”main () FILE *fp; int i,a6=1,2,3,4,5,6; fp=fopen(“d3.dat”,”w+b”); fwrite(a,sizeof(int),6,fp); fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置该语句使读文件的位置 指针从文件头向后移动指针从文件头向后移动3个个int型数据型数据*/ fread(a,size
46、of(int),3,fp); fclose(fp); for(i=0;i6;i+) printf(“%d,”,ai); 程序运行后的输出结果是程序运行后的输出结果是( )A ) 4,5,6,4,5,6, B ) 1,2,3,4,5,6, C ) 4,5,6,1,2,3, D ) 6,5,4,3,2,12007年4月二级C语言笔试试卷 二二填空题填空题(每空(每空2分,共分,共40分)分)请将每一个空的正确答案写在答题卡请将每一个空的正确答案写在答题卡1至至20序号的横线上,答在试卷上不得分。序号的横线上,答在试卷上不得分。注意:以命令关键字填空的必须写完整。注意:以命令关键字填空的必须写完整。
47、2007年4月二级C语言笔试试卷(1)在深度为)在深度为7的满二叉树中,度为的满二叉树中,度为2的结点个数为的结点个数为 _。(2)软件测试分为白箱(盒)测试和黑箱(盒)测)软件测试分为白箱(盒)测试和黑箱(盒)测 试,等价类划分法属于试,等价类划分法属于_测试测试。(3)在数据库系统中,实现各种数据管理功能的核)在数据库系统中,实现各种数据管理功能的核 心软件称为心软件称为 _。(4)软件生命周期可分为多个阶段,一般分为定义)软件生命周期可分为多个阶段,一般分为定义 阶段、开发阶段和维护阶段。编码和测试属于阶段、开发阶段和维护阶段。编码和测试属于 _阶段阶段。(5)在结构化分析使用的数据流图
48、()在结构化分析使用的数据流图(DFD)中,利)中,利 用用 _ 对其中的图形元素进行确切解释。对其中的图形元素进行确切解释。63黑箱(或黑盒黑箱(或黑盒)数据库管理系统数据库管理系统开发开发数据字典数据字典 2007年4月二级C语言笔试试卷(6)执行以下程序后的输出结果是)执行以下程序后的输出结果是 _ 。 main( ) int a=10; a=(3*5,a+4); printf(“a=%dn”,a); a=14 2007年4月二级C语言笔试试卷(7)当执行以下程序时,输入)当执行以下程序时,输入1234567890 ,则其中,则其中while循环体将执循环体将执行行 _ 次。次。 #in
49、clude “stdio.h” main() char ch; while(ch=getchar()=0) printf(“#”); 0 2007年4月二级C语言笔试试卷(8)以下程序的运行结果是)以下程序的运行结果是 _ 。 int k=0; void fun(int m) m+=k; k+=m; printf(“m=%dn k=%d ”,m,k+); main() int i=4; fun(i+); printf(“i=%d k=%dn”,i,k); m=4 k=4 i=5 k=5 2007年4月二级C语言笔试试卷(9)以下程序的运行结果是)以下程序的运行结果是_。 main() int
50、a=2,b=7,c=5; switch(a0) case 1: switch(b0) case 1: printf(“”); break; case 2: printf(“!”); break; case 0: switch(c=5) case 0: printf(“*”); break; case 1: printf(“#”); break; case 2: printf(“$”); break; default : printf(“&”); printf(“n”); #& 2007年4月二级C语言笔试试卷(10)以下程序的输出结果是)以下程序的输出结果是 _ 。# include “std