最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

2014年9月二级C语言程序设计模拟(5)试题及答案

来源:动视网 责编:小OO 时间:2025-09-29 18:26:05
文档

2014年9月二级C语言程序设计模拟(5)试题及答案

2014年9月二级C语言程序设计模拟(5)试题及答案单项选择题1.  下列数据结构中,能用二分法进行查找的是()。      A:  无序线性表      B:  线性链表      C:  二叉链表      D:  顺序存储的有序表      参: D     题目分值: 1.0 分   您的答案:    得分: 0.0       详细解答: 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。2.  下列叙述中,不属于设计准则的是()。      A:  提高模块
推荐度:
导读2014年9月二级C语言程序设计模拟(5)试题及答案单项选择题1.  下列数据结构中,能用二分法进行查找的是()。      A:  无序线性表      B:  线性链表      C:  二叉链表      D:  顺序存储的有序表      参: D     题目分值: 1.0 分   您的答案:    得分: 0.0       详细解答: 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。2.  下列叙述中,不属于设计准则的是()。      A:  提高模块
2014年9月二级C语言程序设计模拟(5)试题及答案

单项选择题

1.  下列数据结构中,能用二分法进行查找的是( )。

      A:  无序线性表

      B:  线性链表

      C:  二叉链表

      D:  顺序存储的有序表

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。

2.  下列叙述中,不属于设计准则的是( )。

      A:  提高模块性

      B:  使模块的作用域在该模块的控制域中

      C:  设计成多入口、多出口模块

      D:  设计功能可预测的模块

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。

3.  下列队列的描述中,正确的是( )。

      A:  队列属于非线性表

      B:  队列在队尾删除数据

      C:  队列按“先进后出”进行数据操作

      D:  队列按“先进先出”进行数据操作

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。

4.  对下列二叉树进行前序遍历的结果为( )。

  

      A:  ABCDEFGH

      B:  ABDGEHCF

      C:  GDBEHACF

      D:  GDHEBFCA

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:

        ①前序,访问根一按前序遍历左子树一按前序遍历右子树。

        ②中序,按中序遍历左子树一访问根一按中序遍历右子树。

        ③后序,按后序遍历左子树一按后序遍历右子树一访问根。

        所以对该二叉树的中序遍历结果为.ABDGEHCF。

5.  对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。

      A:  冒泡排序为n(n-1)/2

      B:  简单插入排序为n

      C:  希尔排序为n

      D:  快速排序为n/2

      参: A     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2;简单插入排序所需要的比较次数为n(n-1)/2:希尔排序所需要的比较次数为O(n1.5);堆排序所需要的比较次数为O(nlog2n)。

6.  为了使模块尽可能,要求( )。

      A:  内聚程度要尽量高,耦合程度要尽量强

      B:  内聚程度要尽量高,耦合程度要尽量弱

      C:  内聚程度要尽量低,耦合程度要尽量弱

      D:  内聚程度要尽量低,耦合程度要尽量强

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 模块性是指每个模块只完成系统要求的的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的性。

7.  下列选项中不属于软件生命周期开发阶段任务的是( )。

      A:  软件测试

      B:  概要设计

      C:  软件维护

      D:  详细设计

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。

8.  数据性是数据库技术的重要特点之一。所谓数据性是指( )。

      A:  数据与程序存放

      B:  不同的数据被存放在不同的文件中

      C:  不同的数据只能被对应的应用程序所使用

      D:  以上三种说法都不对

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 数据性是数据与程序间的互不依赖性,即数据库中数据于应用程序而不依赖于应用程序。所以选项A),选项B)和选项C)都不正确。

9.  在学校中,“班级”与“学生”两个实体集之间的联系属于( )关系。

      A:  一对一

      B:  一对多

      C:  多对一

      D:  多对多

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。

10.  软件调试的目的是( )。

      A:  发现错误

      B:  改善软件的性能

      C:  改正错误

      D:  验证软件的正确性

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。

11.  C语言源程序名的后缀是( )。

      A:  .exe

      B:  .c

      C:  .obj

      D:  .cp

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。

12.  若函数中有定义语句:int a;,则( )。

      A:  系统将自动给a赋初值0

      B:  这时a中的值是和随机数

      C:  系统将自动给a赋初值-1

      D:  这a中无任何值

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。

13.  以下选项中,合法的一组C语言数值常量是( )。

      A:  028 .5e-3 .0xf

      B:  12 OXa23 4.5e0

      C:  .177 4c1.5 Oabc

      D:  0x8A 10,000 3.E5

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 八进制数开头必须是数字“0”,其数字包括0~7,而在选项A)中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C)中4e1.5是错误的。在选项D)中,整型数据10,000的表示形式是错误的。所以本题的答案为选项B)。

14.  下列语句组中,不正确的是( )。

      A:  char*s;s="Olympic";

      B:  char s[]="Olympic";

      C:  char*s;s={"Olympic");

      D:  char s[]={"Olympic"};

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: s是一个字符指针变量,s代表其地址,C将字符串赋给地址,因此选项C)错误。

15.  若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。

      A:  scanf("%d",a,b,c);

      B:  scanf("%d%d%d",a,b,c);

      C:  scanf("%d",p);

      D:  scanf("%d",&p);

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 程序语句int a,b,c,*p=&c;定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf("格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。

16.  有以下程序,其中%u表示按无符号整数输出( )。

main()

{unsigned int x=OxFFFF:/*x的初值为十六进制数*/

printf("%u\n",x);

}

程序运行后的输出结果是( )。

      A:  -1

      B:  65535

      C:  32767

      D:  0xFFFF

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 因为%u表示按无符号整数输出,而x用十六进制表示为0xFFFF,所以输出无符号整数的最大值65535。

17.  设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。

      A:  if(x++);

      B:  if(x 〉y&&y!=0);

      C:  if(x 〉 y)x-else y++;

      D:  if(y〈 0){;}else x++;

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 选项C)中,if(x 〉y)后面的“x--”是一个表达式而不是一个语句,所以在编译时会产生错误信息。

18.  以下选项中,当x为大于1的奇数时,值为0的表达式为( )。

      A:  x%2==1

      B:  x/2

      C:  x%2 1=0

      D:  x%2==0

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 当x为大于1的奇数时,x对2求余的结果为1,不为0,所以选项D)中表达式的值为0。

19.  若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( )。

      A:  4

      B:  16

      C:  32

      D:  52

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查逗号表达式的运用。x=(i=4,j=16,k=32)中的i=4,j=16,k=32构成一个逗号表达式,整个表达式的值取最后一项的值,即32,所以x的值为32。

20.  在下列选项中,没有构成死循环的是( )。

      A:  int i=100; while(1) { i=i()+1; if(i 〉 100)break; }

      B:  for(;;);

      C:  int k=10000; do{k++;}while(k 〉10000);

      D:  int s=36: while(s)--s:

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 选项D)中,首先定义的变量s的值为36,因为语句--s;所以当s=0时循环会结束;选项A)由于while(1)永远成立,循环构成死循环;选项B)中for循环没有使循环结束的限定条件,也构成死循环;选项C)中由于k永远大于10000,所以循环无法停止。

21.  在printf的格式字符中,e格式字符的作用是( )。

      A:  以十六进制无符号形式输出整数

      B:  以带符号的十进制形式输出整数

      C:  以指数形式输出实数

      D:  以字符形式输出,且只输出一个字符

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查prinff函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。

22.  以下选项中正确的语句组是( )。

      A:  char s[];s="HELLO!";

      B:  char*s;s={"HELLO!"};

      C:  char s[10];s=:"HELLO!";

      D:  char*s;s="HELLO!";

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查数组和字符串的赋值。选项A)中数组s没有明确其大小就赋值是错误的。选项B)中不能有大括号,选项C)中的写法应该为{´H´´E´´L´´L´O´´!´}。

23.  字符串"%%\"ABCDEF\"\\"的长度是( )。

      A:  11

      B:  10

      C:  5

      D:  3

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题涉及字符串最基本的2个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杆´\´开头的特殊字符序列,意思是把反斜杆后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,´\´连同后面的字符为一个长度;而´%´也是如此。

24.  下列说法正确的是

      A:  int(**def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组

      B:  int*(*gh[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组

      C:  int*(*gh[101);---gh是一个指针,指向由10个指向整型变量的指针构成的数组

      D:  A,C均正确

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: int*(*gh[10]);…gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(**deft,[10];….def指向一个指针,该指针指向10个整型变量构成的数组。

25.  若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是( )。

      A:  函数的实参和其对应的形参共占同一存储单元

      B:  形参只是形式上的存在,不占用具体存储单元

      C:  同名的实参和形参占同一存储单元

      D:  函数的形参和实参分别占用不同的存储单元

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。

26.  设有如下定义:

struct sk

{ int m;

float x;

}data,*q;

若要使q指向data中的m域,正确的赋值语句是( )。

      A:  q=&data.m;

      B:  *q=data.m;

      C:  q=(struct sk*)&data.m;

      D:  q=(struct sk*)data.m:

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 利用强制类型转换(struct sk*)把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。

27.  有以下程序:

int f1(double a)

{ return a*a;}

int f2(int x,int y)

{ double a,b;

a=n(x);

b=f1(y);

return a+b:

}

main()

{ double w;

w=f2(2.1,4.0);

}

程序执行后,变量w的值是( )。

      A:  20.21

      B:  20

      C:  20

      D:  0

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查函数调用的使用。计算w的时候,先调用f2函数,f2函数的公式是“a+b”,计算a和b的时候又调用到f1函数,f1的函数是“a*a”,因此,w的计算公式为:w=(double)[(int),(2.1*2.1)+(int)(4.0*4.0)]=20.0。

28.  若语句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”对fun函数的调用正确,则fun函数的形参个数为( )。

      A:  3

      B:  4

      C:  5

      D:  6

      参: A     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查函数调用时的参数个数。在函数调用时,实参必须和形参的个数、类型一一对应。但函数的计算结果只有一个值,因而fun函数的参数个数为3。

29.  设X为整型变量,n=14,n的地址为4000;m=6,m的地址为2000;执行语句x=&n后的结果为( )。

      A:  14

      B:  6

      C:  2000

      D:  4000

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: &是取地址运算符,表达式x=&a是表示将a的地址赋给变量x。

30.  若有说明int m[31141={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中0〈 =i〈 3,0〈 =i〈 4)值的正确引用为( )。

      A:  (q+i)[j]

      B:  *q[i][j]

      C:  *(*q[i]+j)

      D:  *(*(q+i)+j)

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: *(q+i)指向第i行首地址,*(*(q+i)代表第i行第j个元素。

31.  有以下程序:

void ss(char*s,char t)

{ while(*s)

{ if(*s==t)*s=t-´a´+´A´;

s++;

}

}

main()

{ char str1[100]="abcddfefdbd",c=´d´;

ss(str1,c);printf("%s\n",str1);

}

程序运行后的输出结果是( )。

      A:  ABCDDEFEDBD

      B:  abcDDfefDbD

      C:  abcAAfefAbA

      D:  Abcddfefdbd

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 函数ss(char*s,char t)的功能是将指针s所指向的字符串中存在的字符“t”均改写成大写字母;所以main函数中引用函数ss后使得数组str1中的小写字母“d”均变成了大写字母“D”,然后输出数组str1,结果为:abcDDfefDbD。

32.  下述语句中,在字符串s1和s2相等时显示”they are Equal"的是( )。

      A:  if(*s1==*s2) puts("they are Equal");

      B:  if(!strcmp(s1,s2)) puts("they are Equal");

      C:  if(s1=s2) puts("they are Equal");

      D:  iffstrcmp(s1,s2)) puts("they are Equal");

      参: B     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 字符串比较不能用“==”,要用strcmp(s1,s2)函数,字符串s1和s2相等时返回值为0,故!strcmp(s1,s2)==1,条件成立执行后面的语句,输出theyare Equa1。

33.  设有说明int(*ptr)[M];其中的标识符ptr是( )。

      A:  M个指向整型变量的指针

      B:  指向M个整型变量的函数指针

      C:  一个指向具有M个整型元素的一维数组的指针

      D:  具有M个指针元素的一维指针数组,每个元素都只能指向整型变量

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 根据C语言的语法规则可知,int(*ptr)[M]中的标识符ptr是一个指向具有M个整型元素的一维数组指针。

34.  在C语言中,变量的隐含存储类别是( )。

      A:  auto

      B:  static

      C:  extem

      D:  无存储类别

      参: A     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: C语言中,变量的隐含存储类型为auto。

35.  有以下程序:

#include〈 stdio.h 〉 

struct tt

{ int x;struct tt*y;}*p;

struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a);

main()

{ int i;

p=a;

for(i=1;i〈 =2;i++){printf("%d,",p- 〉x);p=p- 〉y;)

}

程序的运行结果是( )。

      A:  20,30,

      B:  30,17,

      C:  15,30,

      D:  20,15,

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题考查的是指针和结构的应用。首先定义的数组tt中有两个成员,一个整型变量,一个结构指针。当i=1时,p指针指向结构数组的第一个元素,并输出此元素的第一个成员x,即20;当i=2时,p指针指向结构数组的第二个元素的第一个成员,所以输出15。

36.  有以下程序:

#include〈 stdio.h 〉 

main()

{ FILE*fp;int a[10]={1,2,3,0,0},i;

fp=fopen("d2.dat","wb");

fwrite(a,sizeof(int),5,fp);

fwrite(a,sizeof(int),5,fp);

fclose(fp);

fp=fopen("d2.dat;

fread(a,sizeof(int),10,fp);

fclose(fp);

for(i=0;i〈 10;i++)printf("%d,",a[i]);

}

程序的运行结果是( )。

      A:  1,2,3,0,0,0,0,0,0,0,

      B:  1,2,3,1,2,3,0,0,0,0,

      C:  123,0,0,0,0,123,0,0,0,0,

      D:  1,2,3,0,0,1,2,3,0,0,

      参: D     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 首先用函数fopen()以“wb”的方式打开文件“d2.dat”,然后调用两次fwrite函数将数组a的5个元素,依次输出到文件fp中(共10个字节),然后关闭文件。再次打开文件,使用文件指针指向文件的开头,调用tread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},因此最后的输出结果为“1,2,3,0,0,1,2,3,0,0”。

37.  定义结构体数组

struct stu

{ int num;

char name[20];

}x[5]={1,"ZHAO",2,"QIAN",3,"SUN",4,"LEE",5,"ZHOU"};

for(i=l;i〈 5;i++)

printf("%d%c",x[i].aura,x[i].name[2]);

程序执行后的输出结果是( )。

      A:  2A3N4E5O

      B:  1H213U4E

      C:  1A2N3E4O

      D:  1A2N3E4O

      参: A     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题主要考查结构体数组。x[i].num是结构体x[i]中的num成员,x[i].name[2]是结构体x[i]中name成员的第3个元素。第一次循环,i=l,输出x[1].num,x[1].name[2]的值,即2A;第二次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N;第三次循环,i=3,输出x[3].num,x[3].name[2]的值,即4E;第四次循环,i=4,输出x[4].num,x[4].name[2]的值,即50。

38.  union dt

{

int a;char b;double c;

}data;

以下叙述中错误的是

      A:  data的每个成员起始地址都相同

      B:  变量data所占内存字节数与成员C所占字节数相等

      C:  程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000

      D:  data可以作为函数的实参

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 输出不会是5.00000的,因为单精度浮点数和双精度浮点数在内存中的存储形式不一样。

39.  设x=021,y=012,则z=x|y的值是( )。

      A:  1

      B:  0

      C:  11011

      D:  1.1e+007

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 本题主要考查按位或运算。按位或是对两个运算对象相应的位进行逻辑或运算,其运算规则和逻辑或相同,两个运算对象只要有一个是1,则结果为1。

40.  fgets(str,n,fp))函数从文件中读入一个字符串,以下错误的叙述是( )。

      A:  字符串读入后会自动加入´\0´

      B:  fp是指向该文件的文件型指针

      C:  fgets函数将从文件中最多读入n个字符

      D:  fgets函数将从文件中最多读入n-1个字符

      参: C     题目分值: 1.0 分   您的答案:     得分: 0.0 

      详细解答: 字符串输入函数fgets()的调用形式为:fgets(s,n,f1))。s可以是一个字符数组名,或是指向字符串的指针;n为要读取的最多的字符个数:fp是指向该文件的文件型指针。字符串输入函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串存放到字符数组s中。

程序填空题

41.  给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

#include〈 stdio.h 〉 

#include〈 string.h 〉 

#include〈 stdlib.h 〉 

void WriteText(FILE木);

void ReadText(FILE*);

main()

{FILE*fp;

if((fp=fopen("myfile4.txt","w"))==NULL)

{ printf("open fail!!\n"):exit(0);}

WriteText(fp);

fclose(fp);

if((fp=fopen("myfile4.txt","r"))==NULL)

{ printf("open fail!!\n");exit(0);}

ReadText(fp);

fclose(fp);

}

/**********found*********/

void WriteText(FILE__1__)

{ char str[81];

printf("\nEnter string with-1 to end:\n");

gets(str);

while(strcmp(str,"-1")!=0){

/**********found**********/

fputs(___2___,fW);fputs("\n",fw);

gets(str);

}

}

void ReadText(FILE*fr)

{ char str[81];

printf("\nRead file and output to screen:\n");

fgets(str,81,fr);

while(!feof(fr)){

/**********found**********/

printf("%s",__3__);

fgets(str,81,fr);

}

}

      

      参: (1)*fw

(2)str

(3)str      题目分值: 1.0 分

      您的答案: 

      详细解答: 第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,fputs("\n",fw)是将字符“\n”写入文件,可知fw是文件指针名,因此第一空处应该是void WdteText(FILE*fw)。

        第二空:while(strcmp(str,"-1")!=0)循环的结束标志是str字符串等于“-1”时循环退出,如果str不等于“-1”,执行循环体内容:用fputs函数将s仃字符串写入文件。fputs函数的调用形式是:fputs(s,fp),其中s是指向字符串的指针或字符串数组名,fp是指向将要被写入的文件的文件指针,因此第二处应该是fbuts(str,fw)。

        第三空:while(!feof(fr)循环的作用是不断读取文件直到到达文件尾,每次最多读81个,将读到的数据放在str字符串里,并用printf输出到屏幕,因此第三处应该是printf("%s",str)。

程序修改题

42.  给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。

在main()i~数中,若fun返回l输出YES,若fun返回0输出NO!。

请改正程序中的错误,使它能得出正确的结果。________

注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!

#include〈 stdio.h 〉

int fun(int m)

{ int k=2;

while(k〈 =m&&(m%k))

/**********found**********/

k++

/**********found**********/

if(m=k)

return 1:

else return 0:

}

main()

{ int n;

printf("haPlease enter n:");scanf("%d",&n);

if(fun(n))printf("YES\n");

else printf("NO!\n");

}

      

      参: (1)k++;

(2)if    (m==k)      题目分值: 1.0 分

      您的答案: 

      详细解答: (1)第一个标识下“k++”语句没有结束符分号,所以将“k++”改为“k++;”。

        (2)第二个标识下的“if(m=k)”语句应该是判断m是否素数,而原题中是将k的值赋给m,并不表示是否m等于k,所以第二个标识下“if(m=k)”应该改为“if(m==k)”。

程序设计题

43.  假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。

注意:部分源程序在文件PROG1.C文件中。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。

#include〈 stdio.h 〉 

void fun(char*a)

{

________

}

main()

{ char s[81];void NONO ();

printf("Enter a string:ha");gets(s);

fun(s);

printf("The string after deleted:\n");puts(s);

NONO();

}

void NONO()

{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */

FILE*in,*out;

int i;char s[81];

in=fopen("in.dat","r¨);

out=fopen("out.dat","w");

for(i=0;i〈 10;i++){

fscanf(in,"%s",s);

fun(s);

fprintf(out,"%s\n",s);

}

fclose(in);

fclose(out);

}

      

      参: inti=0:

        char*p,*q;

        p=q=a;

        while(*p)

            p++;

        p--;

        while(*p==´*´)

            p--;

        while(q〈 =p)

            {

             a[i]=*q;

             i++:

             q++;

            }

        a[i]=´\0´;      题目分值: 1.0 分

      您的答案: 

      详细解答: (1)首先,使用一个指针p指向串尾,然后对指向串尾的指针p指向的字符进行判断,如果是“*”,指针p就跳过,这样来设置一个指针变量q指向字符串的头位置。

        (2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串a。

        (3)最后,在新生成的字符串尾加´\0´。

文档

2014年9月二级C语言程序设计模拟(5)试题及答案

2014年9月二级C语言程序设计模拟(5)试题及答案单项选择题1.  下列数据结构中,能用二分法进行查找的是()。      A:  无序线性表      B:  线性链表      C:  二叉链表      D:  顺序存储的有序表      参: D     题目分值: 1.0 分   您的答案:    得分: 0.0       详细解答: 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。2.  下列叙述中,不属于设计准则的是()。      A:  提高模块
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top