1、国家二级( C语言)笔试模拟试卷 92 及答案与解析 1 对计算机软件正确的态度是 ( ) ( A)计算机软件不需要维护 ( B)计算机软件只要能复制得到就不必购买 ( C)受法律保护的计算机软件不能随便复制 ( D)计算机软件不必有备份 2 在下列各 m的值中,能使 m%3 2intx; floaty,Z; 则表达式 w*x+z-y的结果为_类型。 ( A) float ( B) char ( C) int ( D) double 15 main() floatx=123.456; printf(“%-5.2fn“,x); 以上 程序输出的结果是 _。 ( A) 123.4 ( B) 123
2、.5 ( C) 123.45 ( D) 123.46 16 下面语句的输出结果是 _。 printf(“%dn“,strlen(“t“065xffn“); ( A) 14 ( B) 8 ( C) 5 ( D)输出项不合怯,无正常输出 17 下列程序的输出结果是 _。 main() int a=0, b=0, c=0; if(+a0|+b 0)+c; printf(“na=%d,b= d,c=%d“,a,b,c) ; ( A) a=0,b=0, c=0 ( B) a=1, b=1,c=1 ( C) a=1, b=0,c=1 ( D) a=0,b=1, c=1 18 下列程序的输出结果是 _。 m
3、ain() int i; for(i=1; i+1;i+) if(i 4)printf(“ d“,i+); break; printf(“%d“, i+); ( A) 55 ( B) 56 ( C)程序错误,没有输出 ( D)循环条件永远为真,死循环 19 下列程序的输出结果是 _。 #define A 100 main() int i=0, sum=0; do if(i=(i/2)*2)continue; sum+=i; while(+i A) ; printf(“%dn“,sum); ( A) 2500 ( B) 2050 ( C) 4 ( D) 0 20 下列程序的输出结果是 _。 ma
4、in() int i=3; switch(i) case1: case 2:printf(“ d“, i) case 3: case 4: break; default : printf(“OK“) ( A) 0 ( B) 3 ( C) OK ( D)没有任何输出 21 设 x和 y均为 int型变量,且 x 10, y 3,则以下语句的输出结果是 ( ) printf(“ %d, %dn“, x - -, - -y); ( A) 10, 3 ( B) 9, 3 ( C) 9, 2 ( D) 10, 2 22 x、 y和 z被定义为 int型变量,若从键盘给 x、 y和 z输入数据,正确的输入
5、语句是 ( ) ( A) INPUTx、 y, z; ( B) scan(“%d%d%d“, for(i 1; i 50; i+ +) xi; if(+ +%2 0) if(x%3 0) if(x%7 0) printf(“%d“, i); 输出结果是 ( ) ( A) 28 ( B) 27 ( C) 42 ( D) 41 41 在以下一组运算中,优先级最高的运符算是 ( ) ( A) ( B) ( C) % ( D) & & 42 有程序 # include stdio.h main( ) int a, b, c 246; a c/100%9; b (-)& &(-1); printf(“%
6、d, %dn%, a, b); 输出结果是 ( ) ( A) 2, 1 ( B) 3, 2 ( C) 4, 3 ( D) 2, -1 43 设有定义: int(* ptr)( ); 则以下叙述中正确的是 ( ) ( A) ptr是指向一维数组的指针变量 ( B) ptr是指向 int型数据的指针变量 ( C) ptr是指向函数的指针,该函数返回一个 int数据 ( D) prt是一个函数名,该函数的返回值是指向 int型数据的指针 44 设 p1和 p2是指向同一个 int型一维数组的指针变量, k为 int型变量,则不能正确执行的语句是 ( ) ( A) k * p1+ * p2 ( B)
7、p2 k; ( C) p1 p2; ( D) k * p1 * (* p2); 45 设有以下说明和定义: typedef union long i int k5; char c; DATE; struct date int cat; DATE cow; double dog; too; DATE max; 则下列语句的执行结果是 ( ) printf(“%d“, sizeof(struet date)+sizeof(max); ( A) 26 ( B) 30 ( C) 18 ( D) 8 46 以下说法中正确的是 ( ) ( A) # define和 printf都是 C语句 ( B) #
8、define是 C语句,而 printf不是 ( C) printf是 C语句,但 # define不是 ( D) # define和 printf都不是 C语句 47 有程序: void fun(int a, int b, int c) a 456; b 567; c 678; main( ) int x 10, y 20, z 30; fun(x, y, Z); printf(“%d, %d, %dn“, z, y, x); 输出结果是 ( ) ( A) 30, 20, 10 ( B) 10, 20, 30 ( C) 456,567,678 ( D) 678,567,456 48 以下程序
9、的输出结果是 ( ) struct st int x; int * y; * p; int dt4 10, 20, 30, 40; struct st aa4 50, &dt0, 60, & dt0, 60 &dt0, 60, &dt 0; main( ) p aa; printf(“%dn“, + +(p-x); ( A) 10 ( B) 11 ( C) 51 ( D) 60 49 假定建立了以下链表结构,指针 p、 q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是 ( ) ( A) free(q); p- Next q- next; ( B) (* p).
10、next (* q).nexy; free(q); ( C) q (* q).next; (* p).next q; free(q); ( D) q q- next; p- next q; p p- next; free(p); 50 以下程序的输出结果是 ( ) int x 05; char z a; printf(“%dn“, (x & 1)& &(z z); ( A) 0 ( B) 1 ( C) 2 ( D) 3 51 与十进制数 101等值的二进制数为【 】。 52 成本估算模型中, Putnam估算模型是一种【 】模型。 53 设当前盘为 A盘,当前系统提示符为 “ ”在不改变当前盘
11、情况下,显示 C盘的当前目录路径,应使用命令【 】。 54 数据模型是用来描述数据库的结构和语义的,数据模型有概念数据模型和结构数据模型两类, E-R模型是【 】 55 在线性表的多种存储结构中,最简单的方法是【 】 56 表示条件: 10 x 100或 x 0的 C语言表达式【 】。 57 下面程序的输出结果是 【 】 。 # include stdio h main ( ) char * p=“BOOL“OPK“, “H“, “SP“; int i; for (i=3, i 0; i- -, i- -)printf(“%“, *pi); printf(“n“); 58 为了建立如图所示的存
12、储结构 (即每个结点含两个域, data是数据域, next是指向结点的指针域 )。请填空。 struct link char data;【 】; node; 59 下面的程序用来统计文件中字符的个数。请填空。 # include stdio h main( ) FILE *fP; long num 0; if( (fp=fopen(“fname dat“, “r“) NULL) printf(“Cant open file! n“); sxit(0); while 【 】 fgetc(fp); num; printr(“num %dn“, num); fclose (fp); 60 myst
13、rlen函数的功能是计算 str所指字符串的长度,并作为函数值返回。请填空。 int mystrlen(char * str) int i; for (i 0; 【 】 )! 0; i+ +) return 【 】 ); 61 以下函数把 b字符串连接到 a字符串的后面,并返回 a中新字符串的长度。请填空。 strcen (char a , char b ) int num 0, n 0; while (*(a+num)! 【 】 )num+ +; while(bn) * (a+num) bn; num+ +; 【 】 ); return(num); 62 对数组中的元素值进行排序。请填空。
14、# include stdio h main( ) int a 2, 4, 15, 3, 17, 5, 8, 23, 9, 7, 11, 13, i, j, k; for(k 0; k 12; k+ +) for(i k; i 12; i+ +) if(ai 【 】 ) j a i; a i 【 】 ; 【 】 j; for(i 0; i 12; i+) printf(“%4d“, ai); printf(“n“); 63 理解下面的程序,填空完善程序。 main( ) int a, b, c; scanf(“%d%d“, 【 】 ); c= 【 】 (a, b); printf(“a %d
15、b %d max %dn“, a, b, c); int max(x, y) 【 】 ; int z; if(x y) z x; else z y; 【 】 ; 国家二级( C语言)笔试模拟试卷 92 答案与解析 1 【正确答案】 C 2 【正确答案】 B 3 【正确答案】 B 4 【正确答案】 B 5 【正确答案】 C 6 【正确答案】 A 7 【正确答案】 A 8 【正确答案】 D 9 【正确答案】 C 10 【正确答案】 A 11 【正确答案】 C 【试题解析】 用高级语言编写的程序称为 “源程序 ”;而计算机只能识别和执行由0和 1组成的二进制指令,所以高级语言必须先用一种称为 “编译
16、程序 ”的软件,把源程序翻译成二进制形式的 “目标程序 ”。 12 【正确答案】 A 【试题解析】 C程序是由函数构成的。一个 C源程序至少包含一个 main 函数,也可以包含一个 main 函数和若干个其他函数,因此,函数是 C程序的基本单位。 13 【正确答案】 B 【试题解析】 C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项中 void, C中 for都为关键字, D中 2c以字母开头。 14 【正确答案】 A 【试题解析】 在进行运算时,不同类型的数据参加运算,需要先将其转换成同一类型的数据,然后再进
17、行运算。转换 的顺序由低到高为: char,shortintunsignedlongdoublefloat ,故结果为 float型。 15 【正确答案】 D 【试题解析】 f格式符,用来输出实数,以小数形式输出。 “% -m.nf”的含义是:输出数据共占 m列,其中 n位小数,如果输出位数小于 m,则右端补空格。如果总长度大于列数,则按实际情况四舍五入输出。 16 【正确答案】 C 【试题解析】 在 C语言中,以 “”开头的字符均为转义字符,其中 “”后可跟 1 3位八进制数或在 “”后跟字母 x及 1 2位十六 进制数,以此来代表一个特定的字符。 17 【正确答案】 C 【试题解析】 “|
18、”是或运算,它有个 “短路 ”的特点需特别注意,当 “|”运算符左边的表达式的值为真时,则程序就不再对 “|”右边的表达式的值进行运算,而是使得整个表达式的值直接为真。 18 【正确答案】 B 【试题解析】 本程序中有个 for循环,但注意到 for循环的条件是 “i+1”,也就是只要 i+1的值为真 (非零值均为真 ),就执行循环。当 i=1的时, i+1的值为真,判断if 条件不成立,执行 i+,输出 i的值为 5。 19 【 正确答案】 A 【试题解析】 本题程序的功能是求 1到 99之间(包括 1和 99)所有奇数之和。程序中的 while循环的终止条件为 +i=100,在 99之间
19、(包括 1和 99)所有奇数之和(1+99)*50/2=2500。 20 【正确答案】 D 【试题解析】 在题中, i的值为 3,由于 “case3: ”后面没有 break 语句,所以继续向下执行 “case4: ”后面的语句,由于 “case 4: ”后面的语句为 break 强行退出switch 语句,所以,本题没有任伺输出。 21 【正确答案】 D 22 【正确答案】 B 23 【正确答案】 D 24 【正确答案】 C 25 【正确答案】 B 26 【正确答案】 D 27 【正确答案】 B 28 【正确答案】 A 29 【正确答案】 B 30 【正确答案】 C 31 【正确答案】 D
20、32 【正确答案】 C 33 【正确答案】 C 34 【正确答案】 D 35 【正确答案】 B 36 【正确答案】 A 37 【正确答案】 A 38 【正确答案】 A 39 【正确答案】 B 40 【正确答 案】 D 41 【正确答案】 C 42 【正确答案】 A 43 【正确答案】 C 44 【正确答案】 B 45 【正确答案】 B 46 【正确答案】 D 47 【正确答案】 A 48 【正确答案】 C 49 【正确答案】 B 50 【正确答案】 B 51 【正确答案】 1100101或 (1100101)2 52 【正确答案】 动态多变量 53 【正确答案】 CD C: (CD与 C:中间
21、至少要有一个空格 ) 54 【正确答案】 概念数据模型 55 【正确 答案】 顺序存储 56 【正确答案】 (X 10 x 100)| x 0 或 (10 x x 100) |x 0或 x 0 | (x 10 x 100) 或 0 x | (10 x x 100)或 (括号有无都可以 ) 57 【正确答案】 SO 58 【正确答案】 struct link * next 59 【正确答案】 (!feof(fp)或 feof(fp): 0 60 【正确答案】 *(str+i) 或 stri i 61 【正确答案】 0或 0 n+或 n+ 1或 n n+1 62 【正确答案】 a k ak ak 63 【正确答案】 a, b max int x, y return(z)