[计算机类试卷]国家二级(C语言)机试模拟试卷131及答案与解析.doc

上传人:twoload295 文档编号:502868 上传时间:2018-11-29 格式:DOC 页数:29 大小:87KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷131及答案与解析.doc_第1页
第1页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷131及答案与解析.doc_第2页
第2页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷131及答案与解析.doc_第3页
第3页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷131及答案与解析.doc_第4页
第4页 / 共29页
[计算机类试卷]国家二级(C语言)机试模拟试卷131及答案与解析.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 131及答案与解析 一、选择题 1 下列有关数据库的描述中正确的是 ( )。 ( A)在需求分析阶段建立数据字典 ( B)在概念设计阶段建立数据字典 ( C)在逻辑设计阶段建立数据字典 ( D)在物理设计阶段建立数据字典 2 数据库系统的三级模式不包括 ( )。 ( A)数据模式 ( B)内模式 ( C)外模式 ( D)概念模式 3 有三个关系 R、 S和 T如下:则由关系 R和 S得到关系 T的操作是 ( )。 ( A)并 ( B)交 ( C)投影 ( D)自然连接 4 面向对象设计方法的主要特征是 ( )。 ( A)继承 ( B)自顶向下 ( C)模块化

2、( D)逐步求精 5 关于 C语言常量的叙述中错误的是 ( )。 ( A)经常被使用的变量可以定义成常量 ( B)常量分为整型常量、实型常量、字符常量和字符串常量 ( C)常量可分为数值型常量和非数值型常量 ( D)所谓常量,是指在程序运行过程中,其值不能被改变的量 6 以下关于 C语言的相关叙述中正确的是 ( )。 ( A)简单 C语句必须以分号结束 ( B) C程序中的每一行只能写一条语句 ( C) C语言程序中的注释 必须与语句写在同一行 ( D) C语句必须在一行内写完 7 以下关于算法的叙述中错误的是 ( )。 ( A)算法正确的程序可以有零个输入 ( B)算法正确的程序可以有零个输

3、出 ( C)算法正确的程序最终一定会结束 ( D)算法正确的程序对于相同的输入一定有相同的结果 8 关于 C语言的用户标识符中,不合法的是 ( )。 ( A) a_1 ( B) Xa3c ( C) A一一 x ( D) _1 9 关于 C语言的赋值语句,合法的是 ( )。 ( A) a=b=1; ( B) e=n 3; ( C) x+y=u; ( D) x=2=6+2; 10 在使用 scanf( 2d f, &a, &b);语句并从键盘输入 123 456后, a和b的值分别是 ( )。 ( A) 12和 3 0 ( B) 123和 456 0 ( C) 12和 456 0 ( D) 12和

4、 345 6 0 11 下列 C语言语句会出现错误的是 ( )。 ( A) char a=123 ( B) char a= n; ( C) char a=a; ( D) char = x2d; 12 下列表达式的值当变量 c的值不为 2、 4、 6时也为 “真 ”的是 ( )。 ( A) (c =2&c =6)&(c 2! =1) ( B) (c=2)(c=4)(c=6) ( C) c =2&c =6)&! (c 2) ( D) (c =2&c =6)(c! =3)(c! =5) 13 C语句中不能够正确计算下述公式的程序段是 ( )f= ( A) if(x =0) f=sqrt(x); if

5、(x 0) f=sqrt( x); ( B) if(x =0) f=sqrt(x); else f=sqrt( x); ( C) f=sqrt(x) if(x 0) f=sqrt( x); ( D) f=sqrt(x =0? x: x); 14 有以下程序: #include main() int m=20; while(m ); printf(y= d n, m); 程序执行后的输出结果是 ( )。 ( A) m= 1 ( B) m=0 ( C) m=1 ( D) while构成无限循环 15 有以下程序: #include main() int i; for(i=1; i =40; i+)

6、 if(i+ 5=0) if(i+ 8=0)print( d, i) printf( d, i); 程序执行后的输出结果是 ( ) ( A) 17 ( B) 24 ( C) 32 ( D) 12 16 有以下程序: #include main() int s; scanf( d, &s); while(s 0) switch(s) case 1: printf( d, s+5) case 2: printf( d, s+4); break; case 3: printf( d, s+3); case 4: printf( d, s+2); default: printf( d, s+1); b

7、reak; scanf( d, &s) 运行时,若输入 123450回车则输出的结果是 ( A) 6.56655e+008 ( B) 6.56646e+006 ( C) 6.66665e+006 ( D) 6.66666e+006 17 关于 return语句叙述中错误的是 ( )。 ( A)函数的 return语句中可以没有表达式 ( B)用户定 义的函数中可以有多个 return语句,以便可以调用一次返回多个函数值 ( C)用户定义的函数中若没有 return语句,则应当定义为 void类型 ( D)用户定义的函数中可以没有 return语句 18 有以下程序: #include stdi

8、o h void fun(char *c, int d) *c=*c+1; d=d+1; printf( c, c, *c, d); main() char x=1, y=A; fun(&x, y); printf( c, c n, x, y) ( A) 2, B, 2, A ( B) 2, B, B, A ( C) 1, B, B, 1 ( D) 1, B, a, B 19 下列选项中,能正确定义数组的语句是 ( )。 ( A) int a0 10 ( B) int b; ( C) int N=10; int cN; ( D) #define N 10 int dN 20 以下函数实现按每行

9、 5个输出 a所指数组中的数据: #include void fun(int*a, int n) int i; for(i=0; i n; i+) printf( d, ai); printf( n); 在横线处应填入的语句是 ( )。 ( A) if(i 5=0)printf( n); ( B) if(i 5=0)continue; ( C) if(i 5=0)prinff( n); ( D) if(i 5=0)continue; 21 有以下程序: #include void if(char*c) while(*c) if(*c =a&*c =z) *c=*c一 (a一 A); c+; m

10、ain() char s21; gets(s); ff(s); puts(s); 当执行程序时从键盘上输入 Hello World,则程序运行后的输出结果是 ( )。 ( A) hello world; ( B) Hello World ( C) HELLO WORLD ( D) hELLO World 22 有以下程序: #include main() int a44=1, 2, 3, 4, 2, 4, 3, 1, 1, 7, 1, 5, 5, 6, 7, 8; int i, j, k, t; for(i=0; i 4; i+) for(j=0; j 3; j+) for(k=j+1; k

11、4; k+) if(aji aki) t=aji; aji=aki; aki=t; *按列排序 * for(i=0; i 4; i+) printf( d, , aii); 程序运行后的输出结果是 ( )。 ( A) 1, 4, 3, 8, ( B) 1, 7, 3, 1, ( C) 4, 7, 5, 8, ( D) 1, 2, 5, 4, 23 有以下程序 (strcat函数用于连接两个字符串 ): #nclude #include main() char s20=Welcome 0to 0, t=Beijing; strcat(s, t); printf( s n, s); 程序运行后的输

12、出结果是 ( )。 ( A) Welcome to Beijing ( B) Welcome 0to 0Beijing ( C) WelcomeBeijing ( D) Beijing 24 有以下程序段: char name20; int Bum; scanf(name= s num= d, name, &hum); 当执行上述程序段,并从键盘输入: name=David num=101后, name的值为( )。 ( A) name=David ( B) name=David num=101 ( C) David ( D) David Bum=101 25 有以下程序: #include

13、main() char ch=12345, *P; p=ch; printf( c n, *(p+3); 程序运行后的输出结果是 ( )。 ( A) 2 ( B) 3 ( C) 4 ( D)一个地址值 26 有以下程序: #include main() char s=012abc; int i, n=0; for(i=0; si! =0; i+) if(si a&si =z) n+; printf( d n, n); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 3 ( C) 5 ( D) 6 27 有以下程序: #include int fun(int n) if(n=1) re

14、turn 1; else return(n+fun(n一 1); main() int y; scanf( d, &y); y=fun(y); printf( d n, y); 执行程序时,输入 5,程序运行后的输出结果是 ( )。 ( A) 5 ( B) 10 ( C) 15 ( D) 20 28 有以下 程序: #include int fun(int m) static int n=( ); n+=m return n; main() int i=l; pfintf( d, , fun(i+); printf( d n, fun(+i); 程序运行后的输出结果是 ( )。 ( A) 1,

15、 4 ( B) 1, 1 ( C) 2, 4 ( D) 2, 2 29 有以下程序: #include struct S int a, b; st2=3, 4, 5, 6; main() struct S*p=st; printf( d, , +(p一 a); printf( d n, +(p一 b); 程序运行后的输出结果是 ( )。 ( A) 3, 4 ( B) 4, 5 ( C) 3, 5 ( D) 4, 6 30 设有以下语句: typedef struct S char c; int a4; PN; 则下面叙述中正确的是 ( )。 ( A) PN是 struct S类型的变量 ( B

16、) S是 struct类型的变量 ( C)可以用 S定义结构体变 量 ( D)可以用 PN定义结构体变量 31 有以下程序: #include #define SUB(x)(x)一 (x) main() int a=l, b=2, c=3, s; s=SUB(a+b)*c; printf( d n, s); 程序运行后的输出结果是 ( )。 ( A) 0 ( B)一 6 ( C)一 1 ( D) 3 32 有以下程序: #include main() int x=1, y; V=x 2: printf( d n, y); 程序运行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C)

17、4 ( D) 8 33 下列关于文件概念的叙述中正确的是 ( )。 ( A)文件由 ASC 码组成,只能构成二进制文件 ( B)文件由结构序列组成,可以构成二进制文件或文本文件 ( C)文件由字符序列组成,其类型只能是文本文件 ( D)文件由数据序列组成,可以构成二进制文件或文本文件 34 有以下程序: #include main() FILE*fp; int a10=a, b, C, d, i; fp=fopen(d2 dat, wb); fwrite(a, sizeof(int), 5, fp); fwrite(a, sizeof(int), 5, fp); fclose(fp); fp=

18、fopen(d2 dat, rb); fread(a, sizeof(int), 10, fp); fclose(fp); for(i=0; i 10; i+) printf( d, , a i); 程序运行后的输出结果是 ( )。 ( A) a, b, c, d, ( B) a, b, C, d, 0, a, b, c, d ( C) a, b, c, d, a, b, c, d, ( D) a, b, C, d, a, b, c, d, 0 35 有以下程序 #include #define S1(z)4*z+4*(z) #define s2(x, y)4*(x)*(y)+y*x main

19、() int a=1, b=2; printf(“ d, ”, S1(a+b); prinff(” d, ”, S2(a, b)+S1(3); printf(“ d”, s2(3+a, b+3); 程序执行后的输出结果是 ( )。 ( A) 18, 34, 100 ( B) 24, 34, 92 ( C) 24, 34, 100 ( D) 18, 34, 92 36 如图所示:带有头结点的单向链表 head,其三个数据结点 A、 B、 C的连接关系见图。 结点类型的定义为: struet link double dt; struet link*next; 若指针 P指向 A结点,在不改变 P指

20、向的前提下,以下选项中不能访问 C结点数据成员 dt的表达式是 ( )。 ( A) *(*p) next一 next一 dt ( B) P一 next一 next一 dt ( C) (*(*(*P) next) next) dt ( D) (*(P一 next一 next) dt 37 设有定义 #include #include typedef struetint x, y; T; typedef struetint x, y; *USER; USER fun() USER p; P=(USER)malloc(sizeof(T); P一 x=1; P一 y=2: retum P; 函数 fu

21、n返回值的类型是 ( )。 ( A) T类型的结构体 ( B)指向结构体类型的指针 ( C) int类型的元素 ( D) int类型的指针 38 软件的需求分析主要产生的文档是 ( )。 ( A)可行性分析报告 ( B)软件需求规格说明书 ( C)概要设计说明书 ( D)集成测试计划 39 以下哪一项不是结构化程序设计的基本原则 ?( ) ( A)多态性 ( B)自顶向下 ( C)模块化 ( D)逐步求 精 40 软件设计中划分模块的基本准则是 ( )。 ( A)低内聚低耦合 ( B)高内聚低耦合 ( C)低内聚高耦合 ( D)高内聚高耦合 二、程序填空题 41 下列给定程序的功能是:从键盘输

22、入若干行字符串 (每行不超过 80个字符 ),写入文件 myfile4 txt中,用一 1作字符串输入结束的标志,然后将文件的内容显示在屏幕上。文件的读写分别由函数 ReadText和 Write Text实现。 请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 注意:部分源程序在文件 BLANK1 C中。 不得增行或删行,也不得更改程序的结构 ! #include #include #include void WriteText(FILE*); void ReadText(FILE*); main() FILE*fp; if(fp=fopen(“myfile4 txt”

23、, “w”)=NULL) prinff(“open fail! n”); exit(0); WriteText(f0); fclose(fp); if(fo=fopen(“my6le4 txt”, “r”)=NULL) prinff(“open fail! n”); exit(0); ReadText(fp); fclose(fp); *found* void WriteText(FILE1) char str81; printf(“ nEnter string with一 1 to end: n”); gets(str); while(strcmp(str, “一 1”)!=0) *foun

24、d* fputs(2, fw); fpnts(“ n”, fw); gets(str); void ReadText(FILE*fr) char str81; prinff(“ nRead file and output to screen: n”); fgets(str, 81, fr); while(!feof(fr) *found* prinff(“ s”, 3); fsets(str, 81, fr); 三、程序修改题 42 下列给定程序中函数 fun的功能是:逐个比较 P、 q所指两个字符串对应位置上的字符,并把 ASC 值大或相等的字符依次存放到 c所指的数组中,形成一个新的字符串

25、。 例如,若主函数中 a字符串为 “aBCDeFgH”, b字符串为 “Abed”,则 c中的字符串应为 “aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODll C中,不得增行或删行,也不得更改程序的结构 ! #include #include void fun(char*P, char*q, char*c) *found* int k=1; *found* while(*P!=*q) if(*P void fun(char*a) main() char s81; void NONO(); printf(“Enter a string: n”);

26、 gets(s); fun(s); printf(“The string after deleted: n”); puts(s); NONO(); void NONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*in, *out; int i; char s81; in=fopen(“in dat”, “r”); out=fopen(“out dat”, “W”); for(i=0; inext是 B的地址, p一 next一 next是 C的地址,访问 C的结点数据成员 dt可以使用 C的地址访问,即: p一 next一 next一 dt,选项 B正确;

27、或者使用解引用 *运算符, (*p)表示 A结点, (*p) next表示 B的地址,*(*p) next)表示结点 B, (*(*p) next) next表示 C的地址, (*(*(*p) next)表示结点 C,所以 C的数据成员 dt可以表示为: (*(*(*p) next) dt,选项 C正确;同理,也可以既使用指针运算符,也使用解引用运算符来访问 c的结点数据成员 dt,即 (*(p一 next一 next) dt,选项 D正确;选项 A中, *p表示 A结点, (*p) next表示结点 B的地址,由于一 运算符的优先级高于 *运算符,所以先执行一 ,即表达式 (*p) next

28、一 next一 dt引用了 C结点的数据成员 dt,然后再执行解引用运算 *,这是错误的,本题答案为 A。 37 【正确答案】 B 【试题解析】 由题意可知:使用 typedef将类型: 8tructint x, y; *重命名为uSER,所以函数 fun的返回类型为 struetint x, y; *,即指向结构体类型的指针,本题答案为 B。 38 【正确答案】 B 【试题解析】 A错误,可行性分析阶段产生可行性分析报告。 C错误,概要设计说明书是总体设计阶段产生的文档。 D错误,集成测试计划是在概要设计阶段编写的文档。 B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 3

29、9 【正确答案】 A 【试题解析】 结构 化程序设计的思想包括:自顶向下、逐步求精、模块化,不包括多态性。 40 【正确答案】 B 【试题解析】 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能地低,模块的内聚度应尽可能地高。 二、程序填空题 41 【正确答案】 (1)*fw (2)str (3)str 【试题解析】 本题考查:函数定义以及文件指针; fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fput

30、s(字符串,文件指针 )。 填空 1:定义函数,函数的形参是一个文件类型的指针。 填空 2:此处考查 frots函数的形式,应填入 str。 填空 3:依据 printf函数的格式,输出字符串内容,即 printf(“ s”, str);。 三、程序修改题 42 【正确答案】 (1)int k=0; (2)while(*p*q) 【试题解析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作; while循环语句。 (1)变量 k存放数组 c的下标,因此应初始化为 0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 四、程序设计题 43 【正确答案】 void fun(char*a) while(*a!= 0) a+: a一一; *指针 a指向字符串的尾部 * while(*a=*) a一一; *指针 a指向最后一个字母 * *(a+1)= 0; *在字符串最后加上结束标志符 * 【试题解析】 对于一个字符串要删除其尾部的 *号,只需 要在最后一个不是 *号的字符后面加上结束符号 0。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为 *号,直到找到非 *号字符为止,最后在该字符后面加上结束符号 0。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1