软件开发(考试题模拟题答案)

更新时间:2024-03-06 11:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

全国信息与通信人才培训考试管理办公室

软件开发 考试试卷 (机密)

机密 第 1 页 共9 页

全国信息与通信人才培训考试管理办公室

考试声明

本人已经认真阅读考试注意事项,承诺遵守考试纪律,自己不作弊、不协助他人作弊;考试后不向其他人泄漏考题内容,维护考试的机密性。

特此声明。

考生签名:

年 月 日

答 题 纸

考生信息 姓名 单位 一、单选题 1 11 21 性别 学历 考试专业 身份证号码 2 12 22 3 13 23 4 14 24 5 15 25 6 16 26 7 17 27 8 18 28 9 19 29 10 20 30 二、多选题 1 2 3 4 5 6 7 8 9 10 三、改错题 1.

机密 第 2 页 共9 页

全国信息与通信人才培训考试管理办公室

2.

3.

4.

5.

四.编程题

注:选择题请将答案填写在答题纸上,填写在其它位置无效。

机密 第 3 页 共9 页

全国信息与通信人才培训考试管理办公室

软件开发考核试卷

考试说明:

1、 本次考试类型为笔试,请考生用蓝色圆珠笔或钢笔答题,不得用铅笔,用铅笔者本试卷作废; 2、 本次考试时间为60分钟,共计100分;

3、 试卷表面必须保持清洁,不得在试卷上作记号,一经发现取消该考生卷面成绩; 4、 请将答案写在答题纸上,填写在其他位置无效。

一.单项选择题(每题2分,共计60分)

1.软件工程研究的内容包括:()技术和软件工程管理: D A.软件测试 B.数据分析 C.动态测试 D.软件开发

2.在C语言中(以 16 位PC机为例),一个float型数据在内存中所占的字节数为 4;一个double型数据在内存中所占的字节数为:C A.32

B.6

C.8 D.16

3. 下列描述正确的是:A

A. C 语言程序中各函数之间既允许直接递归调用也允许间接递归调用 B. C 语言程序中不允许直接递归调用也不允许间接递归调用 C. C 语言程序中允许直接递归调用不允许间接递归调用 D. C 语言程序中不允许直接递归调用允许间接递归调用 4. 下面关于完全二叉树的叙述中,错误的是:B A.除了最后一层外,每一层上的结点数均达到最大值 B.可能缺少若干个左右叶子结点 C.完全二叉树一般不是满二叉树

D.具有结点的完全二叉树的深度为[log2n]+1

5. 在软件生命周期中,能准确完成程序的编码的阶段是:C A.概要设计 B.详细设计 C.软件实现 D.需求分析 6. 下面程序的输出结果是:B

机密 第 4 页 共9 页

全国信息与通信人才培训考试管理办公室

#include sub(x,y,z) int x,y,*z; { *z=y–x;} main( ){ int a,b,c;

sub(10,5,&a);sub(7,a,&b);sub(a,b,&c); printf(\}

A.5,2,3 B.–5, –12, –7 C.–5, –12, –17 D.5, –2, –7 7. 程序流程图(PFD)中的箭头代表的是:B A.数据流 B.控制流 C.调用关系 D.组成关系 8. 下面程序的输出是:C main ( )

{ enum em { em1=3,em2=1,em3}; char * aa[ ]={\printf(\}

A.DCBBCD B.BBDDCC C.DDBBCC D.DBDBCC 9. 符合 C 语言语法的赋值语句的是:D A.a=7+b+c=a+7 B.a=a+7 C.a=7+b,b++,a+7; D.a=7+b,c=a+7;

机密 第 5 页 共9 页

全国信息与通信人才培训考试管理办公室

10. 若运行时给变量x输入 12,则以下程序的运行结果是:B main( ){ int x,y;

scanf(“%d”,&x); y=x>12?x+10:x–12; printf(“%d\\n”,y); }

A.2 B.0 C.8 D.10

11. 在 C 语言中,要求运算数必须是整型的运算符是:A A.% B./ C.< D.! 12. 以下程序语句中 y=–1; if (x!=0)

if(x>0) y=1; else y=0; 所表示的数学函数关系是:C –1 (x<0) 1 (x<0) A. y= 0 (x=0) B. y= –1 (x=0) 1 (x>0) 0 (x>0) 0 (x<0) –1 (x<0) C. y= –1 (x=0) D. y= 1 (x=0)

机密 第 6 页 共9 页

全国信息与通信人才培训考试管理办公室

1 (x>0) 0 (x>0) 13. 若有以下函数定义:C myfun(double a, int n) {?? }

则myfun函数值的类型是 A. void B. double C. int D. char

14. 软件需求分析应确定用户对软件的:D

A.功能需求 B.非功能需求 C.性能需求 D.功能需求和非功能需求 15. C语言中main函数参数的非法表示形式是:D A.main(char *argv[],int argc) B.main(int a,char**b) C.main(int y,char *x[]) D.main(int argv,char *argc[]) 16. 以下的for循环:C

for(x=0,y=0;(y!=123)&&(x<4);x++) A.是无限循环 B.循环次数不定 C.执行4次 D.执行3次

机密 第 7 页 共9 页

全国信息与通信人才培训考试管理办公室

17. C语言规定,函数返回值的类型由:A A.在定义时所指定的函数类型所决定 B.调用该函数时的主调函数类型所决定 C.return语句中的表达式类型所决定 D.调用该函数时系统临时决定

18. 下面描述中,不符合结构化程序设计风格的是:C

A.使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B.自顶向下

C.注重提高程序的执行效率 D.限制使用 goto 语句 19. 以下程序中 main( )

{ int x=3,y=0,z=0;

if(x=y+z)printf(\else printf(\} D

A.有语法错误不能通过编译 B.输出* * * *

C.可以通过编译, 但是不能通过连接, 因而不能运行 D.输出####

20. 执行下面程序片段的结果是:B

机密 第 8 页 共9 页

全国信息与通信人才培训考试管理办公室

int x=123; do

{ printf(\\n\while(!x); A.打印出321 B.打印出123 C.不打印任何内容 D.陷入死循环

21. 下述对C语言字符数组的描述中错误的是:C A.字符数组可以存放字符串

B.字符数组中的字符串可以整体输入、输出

C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D.不可以用关系运算符对字符数组中的字符串进行比较

22. 已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是:D A.acbed B.decab C.deabc D.cedba

23. C 语言提供的合法的数据类型关键字是:B A.Double B.float C.integer D.Char 24. 以下程序的输出结果正确的是:B

机密 第 9 页 共9 页

全国信息与通信人才培训考试管理办公室

#include sub(int *s,int y) { static int t=3; y=s[t];t– –; } main( )

{ int a[ ]={1,2,3,4},i, x=0; for(i=0;i<4;i++) { sub(a,x);printf(\printf(\}

A.1234 B.0000 C.4321 D.4444

25. C程序中的语句:char *func(int x,int y); 它是:C A. 对函数func的定义 B. 对函数func的调用 C.对函数func的原型说明 D. 不合法的

26. 下列程序的运行结果是:A main( )

{ union EXAMPLE { struct

{ int x; int y; } in;

机密 第 10 页 共9 页

全国信息与通信人才培训考试管理办公室

int a; int b; }e;

e.a=1;e.b=2; e.in.x=e.a*e.b; e.in.y=e.a+e.b;

printf(\}

A. 4,8 B.2,6 C.8,16

D.12,16

27. 下列选项中可用于C语言用户标识符的是:B A.voiddefineword B.a3_b3_123Car C.For-abcIFCase D.2aDOsizeof

28. 对下述程序,描述正确的是:A main () { int a, b;

scanf(\if(a>b)a=b;b=a; else a++;b++; printf(\A.有语法错误不能通过编译

机密 第 11 页 共9 页

全国信息与通信人才培训考试管理办公室

B.若输入4,5则输出5,6 C.若输入5,4则输出4,5 D.若输入5,4则输出5,5 29. 下面程序的输出是:B main( )

{int arr[10],i,k=0; for(i=0;i<10;i++) arr[i]=i; for(i=1;i<4;i++) k+=arr[i]+i; printf(\A. 8 B. 6 C. 4

D.12

30. 若有以下定义,则不移动指针p,且通过指针p引用值为 98 的数组元素的表达式是:BD

int w[10] = {23,54,10,33,47,98,72,80,61},*p = w; A.(p+5)* B.*(p+5) C. p%[5] D.p[5%] 二.多项选择题 (每题2分,共计20分) 1. 下列有关函数的说法中正确的是:ABC

A. C语言中的函数只具有static和extern两种类型 B. C语言中允许函数的递归调用

C. 调用函数时,C语言要求实参与形参的个数,类型完全一致 D. C语言函数的缺省数据类型是空类型(void型)

机密 第 12 页 共9 页

全国信息与通信人才培训考试管理办公室

2. 下面的变量说明中()是错误的:ABD A.char:a, b, c; B.char a; b; c; C.char a, b, c; D.char a, b, c

3. 假如有以下调用语句,则正确的fun函数的首部是:ABC main() { ?

int a[50],n; ?

fun(n, &a[9]); ? }

A.void fun(int m, int x[]) B.void fun(int s, int h[41]) C.void fun(int p, int *s) D.void fun(int n, int a) 4. 下列常量中哪些是合法的:BCD A.2e32.6 B. 0.2e-5 C. “basic” D. 0x4b00

机密 第 13 页 共9 页

全国信息与通信人才培训考试管理办公室

5. 关于if后一对圆括号中的表达式,以下叙述中错误的是:ABC A.只能用逻辑表达式 B.只能用关系表达式

C.既可用逻辑表达式也可用关系表达式 D.可用任意表达式

6. 下列叙述中错误的是:BCD

A.线性表是线性结构 B.栈与队列是非线性结构 C.线性链表是非线性结构 D.二叉树是线性结构 7. 若有以下程序 #include

void f(int n); main()

{ void f(int n); f(5); }

void f(int n)

{ printf(\\n\); } 则以下叙述中正确的是:ABD

A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f

机密 第 14 页 共9 页

全国信息与通信人才培训考试管理办公室

C.对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明 D.函数f无返回值,所以可用void将其类型定义为无返回值型 8. 根据C语言的语法规则,下列()是合法标识符:BCD A.do B. Name C. R5 D. _exam

9. 下列关于复合语句和空语句的说法正确的是:ABD A.复合语句是由“{”开头,由“}”结尾的 B.复合语句在语法上视为一条语句

C.复合语句内,可以有执行语句,不可以有定义语句部分 D.C程序中的所有语句都必须由一个分号作为结束 10. 下列说法中错误的是:ACD

A.全局变量的作用域一定比局部变量的作用域大

B.静态(static)类型变量的生存期贯穿于整个程序的运行期间 C.函数的形参都属于全局变量

D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值 三.改错题 (每题2分,共计10分) 将下列程序中不正确的语句改正。 1. main( ) { int k ; k=35555 ;

printf ( “%d “, k) ; } 答案:

long int k ; printf ( “%ld “, k) ; }

机密 第 15 页 共9 页

全国信息与通信人才培训考试管理办公室

2. main() { int n ; float s=1.0; for(n=10;n>1;n- -) s=s+1/n;

printf(“%6.1f\\n”,s); } 答案:s=s+1.0/n 3. main( ) { int sum , k ; sum=0 ; k= 1 ;

while (k < =100 ) sum = sum+k ; k + + ;

p rintf (“ sum=%d\\n”, sum) ; } 答案:

while (k < =100 ) { sum = sum+k ; k + + ; } 4. main( )

{ int k , a( 8 ) ; for( k=0; k<10 ; k++)

机密 第 16 页 共9 页

全国信息与通信人才培训考试管理办公室

scanf(“%d”, &a(k)); ...... } 答案:

int k , a[8] ; scanf(“%d”, &a[k]); 5. main( ) {int a;

scanf(“%d”, a);

if (a = 1) printf(“One\\n”) ; } 答案:printf(\四.编程题 (共计10分)

编写一个函数int fun(int *s,int t,int *k),用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中。 如,输入如下整数: 234 345 753 134 436 458 100 321 135 760 则输出结果为6,100。 注:部分源程序给出如下。

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

#include #include

int fun(int *s,int t,int *k) {

机密 第 17 页 共9 页

全国信息与通信人才培训考试管理办公室

} main()

{ int a[10]={234,345,753,134,436,458,100,321,135,760},k; clrscr(); fun(a, 10, &k);

printf(\ } 答案

int fun(int *s,int t,int *k) { int i;

*k=0; /*k所指的数是数组的下标值*/ for(i=0;is[i])

*k=i; /*找到数组的最小元素,把该元素的下标赋给k所指的数*/ return s[*k]; /*返回数组的最小元素*/} 模拟题:

一.单项选择题(每题2分,共计60分)

1. 根据C语言的语法规则,下列()个是不合法标识符:A A.While B. Name C. Rern5

机密 第 18 页 共9 页

全国信息与通信人才培训考试管理办公室

D. _exam

2. 属于 C 语言的数据类型是:C

A.复数型 B.逻辑型 C.双精度型 D.集合型

3. 假设变量a,i已正确定义,且i已正确赋值,合法的语句是 :B A.a==1 B.++i; C.a=a++=5; D.a=int(i);

4. 设有以下定义和语句,则*(*(p+2)+1)的值为:D int[3][2]={ 10,20,30,40,50,60},(*p)[2]; p=a; A.16

B.32 C.64

D.60

5. int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为 6 的表达式是:C A.*p+6 B.*(p+6) C.*p+=5 D.p+5 6. 有以下程序 #include main()

{ FILE *fp; int i=20,j=30,k,n; fp=fopen(\);

fprintf(fp,\\n\);fprintf(fp,\\n\); fclose(fp);

机密 第 19 页 共9 页

全国信息与通信人才培训考试管理办公室

fp=fopen(\);

fscanf(fp,\,&k,&n); printf(\\n\); fclose(fp); }

程序运行后的输出结果是:A A.20 30 B.20 50 C.30 50 D.30 20

7. 以下说法中正确的是:A

A. C 语言程序总是从 main( )函数开始执行

B.在 C 语言程序中,要调用函数必须在 main( )函数中定义 C. C 语言程序总是从第一个函数开始执行

D.C 语言程序中的 main( )函数必须放在程序的开始部分 8. Break语句的正确的用法是:B

A. 无论在任何情况下,都中断程序的执行,退出到系统下一层 B. 在多重循环中,只能退出最靠近的那一层循环语句 C. 跳出多重循环 D. 只能修改控制变量

9. 在下列程序中,没有构成死循环的是:D A.int i=100; while(1)

机密 第 20 页 共9 页

全国信息与通信人才培训考试管理办公室

{ i=i0+1; if(i>100)break; }

B.for(;;); C.int k=10000;

do{ k++; }while(k>10000); D.int s=36; while(s)--s;

10. 设有定义:long x=-123456L; 则以下能够正确输出变量x值的语句是:B A.printf(“x=%d\\n”,x) B.printf(“x=%ld\\n”,x) C.printf(“x=??l\\n”,x) D.printf(“x=%D\\n”,x);

11. C语言中各种基本数据类型的存储空间长度排列为:C A.char≤long≤int≤float≤double B.double≤float≤long≤int≤char C.char≤int≤long≤float≤double D.float≤int≤long≤char≤double

12. 以下选项中,定义 s 为合法的结构体变量的是:B A. typedef struct abc { double a; char b[10];

机密 第 21 页 共9 页

全国信息与通信人才培训考试管理办公室

}s; B. struct { double a; char b[10]; }s;

C. struct ABC { double a; char b[10]; } ABC s;

D. typedef ABC { double a; char b[10]; } ABC s;

13. 下面程序的运行结果是:A # include “stdio.h” main( )

{ int a[]={8,2,9,4,1}, *p; p=a; *(p+2)+=2;

printf(“%d, %d ”, *p, *(p+2));}

机密 第 22 页 共9 页

全国信息与通信人才培训考试管理办公室

A.8,11 B.9,16 C.2,11 D.8,10 14. 字符串指针变量中存入的是:A A.字符串的首地址。 B. 字符串 C.第一个字符 D. 字符串变量。

15. C语言中以只读方式打开一个文件应选择()参数:A A.“r” B.“w” C.“rb” D.“a”

16. 以下能正确表示x在-5到-1或5到1范围(含5和1)内,值为“真”的表达式是:A

A.(x>=-5)||(x<=-1)&&(x<=5)&&(x>=1) B.!(x>=-5||x<=-1&&x<=5||x>=1) C.x<-5&&x>-1||x<1&&x>5 D.(x<-5)||(x>-1&&x<1)||(x>5)

17. 设有数组定义:char array[]=”China”;则数组所占的存贮空间为:C A.4个字节 B. 5个字节 C. 6个字节 D. 7个字节

机密 第 23 页 共9 页

全国信息与通信人才培训考试管理办公室

18. 已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是:C A.一个整型变量,代表要读入的数据项总数 B.一个文件指针,指向要读的文件 C.一个指针,指向要读入数据的存放地址 D.一个存储区,存放要读的数据项

19. 为了避免嵌套的条件分支语句if—else 的二义性,C语言规定:C程序中的else总是与()组成配对关系:C A.缩排位置相同的if B.在其之前未配对的if C.在其之前未配对的最近的if D.同一行上的if

20. 在C语言中,int,char和short三种类型数据在内存中所占用的字节数:D A.由用户自己定义 B.均为2个字节 C.是任意的

D.由所用机器的机器字长决定

21. 能正确表示a和b同时为正或同时为负的逻辑表达式是:D

A.a>=0||b>=0)&&(a<0 ||b<0) B.(a>=0 && b>=0)&&(a<0 && b<0) C.(a+b>0) &&(a+b<=0) D. a*b>0

22. 假设整型变量a,b,c的值均为5,则表达式a+++b+++c++的值为:C

机密 第 24 页 共9 页

全国信息与通信人才培训考试管理办公室

A.17 B.16 C.15 D.14

23. 设整型变量a为5,使b不为2的表达式是:c A. b=a/2 B. b=6-(--a) C. b=a%2 D.b=a>3?2:1

24. 表达式“1?(0?3:2):(10?1:0)”的值为:B A.3 B. 2 C. 1 D. 0

25. 定义一个数组a是一个具有3个元素的指针数组,它的定义语句格式是:c A. <类型标识符> (*a)[3] B. <类型标识符> *a[2] C. <类型标识符> *a[3] D.以上写法都不对。

26. 表达式y=(13>12?15:6>7?8:9)的值为:C A.9 B.8

机密 第 25 页 共9 页

全国信息与通信人才培训考试管理办公室

C.15 D. 1

27. 以下定义中,标识符prt int(*prt)[3]:D A.定义不含法

B.是一个指针数组名,每个元素都是一个指向整数变量的指针 C.是一个指针,它指向一个具有三个元素的一维数组 D.是一个指向整型变量的指针

28. 若 fp 是指向某文件的指针,且已读到此文件的末尾,则函数 feof(fp)的返回值是:C

A.EOF B.0 C.非零值 D.NULL

29. c语言中int型数-8在内存中的存储形式为:a A.1111111111111000 B. 1000000000001000

C. 0000000000001000 D. 1111111111110111

30. 表示关系x≥y≥z,应使用C语言表达式:A A.(x>=y)&&(y>=z) B. (x>=y) AND (y>=z) C.(x>=y>=z) D. (x>=z)&(y>=z)

二.多项选择题(每题2分,共计20分) 1. 下面叙述错误的是:ACD

机密 第 26 页 共9 页

全国信息与通信人才培训考试管理办公室

A.函数调用不可以出现在表达式中 B.函数调用可以作为一个函数的实参 C.函数调用可以作为一个函数的形参 D.函数不可以直接调用其本身 2. 假设以下说明语句 struct stu { int a; float b; } stutype;

则下面的叙述正确的是:ABD A.struct是结构体类型的关键字 B.struct stu是用户定义的结构体类型 C.stutype是用户定义的结构体类型名 D.a和b都是结构体成员名

3. 下列关于字符串的说法中正确的是:ACD

A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志

B.′\0′作为标志占用存储空间,计入串的实际长度 C.在表示字符串常量的时候不需要人为在其末尾加入′\0′ D.在C语言中,字符串常量隐含处理成以′\0′结尾 4. 下列对数组操作正确的语句是:abc A. int a[5];

机密 第 27 页 共9 页

全国信息与通信人才培训考试管理办公室

B.char b[ ]={‘h’,’e’,’l’,’l’,’o’}; C. int a[ ]={2,3,4,5}; D. char b[3 ][ ]={1,2,3,4,5,6};

5. 以下选项中能使指针正确指向字符串的是:BCD A. char *ch;*ch=“hello” B.char *ch=“hello”

C.char *ch=“hello”;ch=“bye” D. char *ch”;ch=“hello” 6. 下列标识符正确的是:ABD

A. x1y

B._123 C. 2ab D. _ab

7. 若有以下定义和赋值double *q,a=5.5; int *p,i=1; double *q,a=5.5;int *p,i=1; p=&i; q=&a; 以下对赋值语句叙述正确的是:ACD A.*p=*q 变i中的值。

B.p=oxffd0;将改变p的值,使p指向地址为ffd0的存储单元。 C.*q=*p;等同于a=i;

D.*p=*q;是取q所指变量的值放在p所指的存储单元 8. 下面的说法正确的是:BCD

A. 不论在主函数还是自定义函数中,只要说明了变量,就可为其分配存贮单元。 B. 在定义函数时,必须指定形参的类型。

机密 第 28 页 共9 页

全国信息与通信人才培训考试管理办公室

C. 形参和实参之间可以是值传递。 D. 数组名可以作为参数进行传递。

9. 设A,B均为整型变量,下列表达式中是赋值表达式的是:ACD A. A=b+3,b+5,--b B. A=4*5; C. A=++A-B D.a=b=5

10. C 语言中下列叙述错误的是:ABC A.不能使用 do-while 语句构成的循环

B.do-while 语句构成的循环,必须用 break 语句才能退出

C.do-while 语句构成的循环,当 while 语句中的表达式值为非零时结束循环 D.do-while 语句构成的循环,当 while 语句中的表达式值为零时结束循环

三.编程题 (每题10分,共计20分)

1. 从键盘上输入三个数,求出其中最大的一个数。 答案: main()

{ int a,b,c,max;

scanf(“%d,%d,%d”,&a,&b,&c); if (a>b) max=a; else

机密 第 29 页 共9 页

全国信息与通信人才培训考试管理办公室

max=b; if (maxmax=c;

printf(“max=%d”,max); }

2. 从键盘上输入10个评委的分数,去掉一个最高分,去掉一个最低分,求出其余8个人的平均分,输出平均分,最高分,最低分。 答案:

main()

{ float a[10],b,max,min,sum=0,aver; for(b=0;b<10;b++) scanf(“%f”,&a[b]); max=min=a[0]; for(b=1;b<10;b++) { if(a[b]>max) max=a[b]; if(a[b]min=a[b]; sum+=a[b]; } sum=sum-max-min; aver=sum/8;

printf(“%f,%f,%f”,aver,max,min); }

机密 第 30 页 共9 页

本文来源:https://www.bwwdw.com/article/5caa.html

Top