2021-2022年山西省忻州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2021-2022年山西省忻州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2021-2022年山西省忻州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2021-2022年山西省忻州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2021-2022年山西省忻州市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2021-2022年山西省忻州市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

2.若i和k都是int类型变量,有以下for语句:for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是()。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环

3.以下关于C语言的叙述中正确的是()。

A.C语言的数值常量中夹带空格不影响常量值的正确表示

B.C语言中的变量可以在使用之前的任何位置进行定义

C.在C语言算术表达式的书写中,运算符两侧的运算数据类型必须一致

D.C语言中的注释不可以夹在变量名或关键字的中间

4.若有定义“intx,y;”,并已正确给变量赋值,则以下选项中与表达式“(x-y)?(x++):(y++)”中的条件表达式“(x-y)”等价的是()。

A.(x-y<0||x-y>0)B.(x-y<0)C.(x-y>0)D.(x-y==0)

5.一个无向连连通图的生成树是含有该连通图的全部项点的_______。

A.极小连通子图B.极小子图C.极大连通子图D.极大子图

6.以下有关scanf函数的叙述中错误的是()。

A.在scanf函数的格式字符前既可以加入正整数指定输入数据所占的宽度,也可以对实数指定小数位的宽度

B.scanf函数有返回值,其值就是本次调用scanf函数时正确读入的数据项个数

C.scanf函数从输入字符流中按照格式控制指定的格式解析出相应数据,送到指定地址中

D.在scanf函数中的格式控制字符串不会输出到屏幕上

7.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

8.设x为int型变量,则执行以下语句后,x的值为()。x=10;x=x-=x-x;

A.10B.20C.40D.30

9.若有定义“charch;inta;doubled;”,当输入为12345678910.36时,以下选项中能给各个变量正确赋值的是()。

A.scanf(“%d%c%lf”,&a,&ch,&d);

B.scanf(“%5d%2c%7.2lf”,&a,&ch,&d);

C.scanf(“%d%c%lf”,a,ch,d);

D.scanf(“5d%2c%7.2lf%”,&a,&ch,&d);

10.有以下程序:

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

A.1,2,6,24,120,B.1,2,3,4,5,C.1,1,1,1,1,D.1,2,4,6,8,

11.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。

A.x=10.200000y=-3.200000

B.x=6.700000y=-13.700000

C.x=7.000000y=-3.500000

D.x=13.400000y=-7.000000

12.二进制数1110111.11转换成十进制数是()。

A.119.375B.119.75C.119.125D.119.3

13.以下符号中不能作为标识符的是()。A._256B.voidC.scanfD.Struct

14.计算机能够直接识别和执行的语言是

A.汇编语言B.自然语言C.机器语言D.高级语言

15.下面程序的运行结果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

16.以下正确的叙述是()。

A.在C程序中,每行中只能写一条语句

B.若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数

C.在C程序中,无论是整数还是实数,都能被准确无误地表示

D.在C程序中,%是只能用于整数运算的运算符

17.算法的时间复杂度是指A.算法的执行时间B.算法所处理的数据量C.算法程序中的语句或指令条数D.算法在执行过程中所需要的基本运算次数

18.有以下程序:#includeMain(){Int?x=1.y=0;if(!x)y++;elsef(x==0)if(x)y+=2;else?y+=3;printf("%d\n",y);\}程序运行后的输出结果是()。A.3B.2C.1D.0

19.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为

A.log2nB.n2C.O(n1.5)D.n(n-1)/2

20.栈和队列的共同点是()。

A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点

二、2.填空题(20题)21.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。

22.以下程序的输出结果是【】。

#include<stdio.h>

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{inti=3,j=5,*p=&i,*q=&j;

swap(p,q);printf("%d%d\n",*p,*q);

}

23.若有以下定义语句,则不移动指针p,并且通过指针p引用值为98的数组元素的表达式是【】。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

24.下面程序执行后输出的结果是【】。

intm=13;

intfun(intx,inty)

{intm=3;

return(x*y-m);

}

main()

{inta=7,b=5;

printf("%d\n",fun(a,b)/m);

}

25.软件工程研究的内容主要包括:软件开发技术和【】。

26.若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是【】。

chara[10],b;scanf("a=%sb=%c",a,&b);

27.结构化程序设计的3种基本结构分别是顺序、选择和______。

28.下列二维数组初始化语句中,正确且与语句floata[][3]={0,3,8,0,9};等价的是

29.下列语句能循环______次。

ints=12;

while(s);

--s;

30.常用的黑箱测试有等价类划分法、【】和错误推测法3种。

31.以下程序的输出结果是【】。

main()

{char*p=“abodefgh”,*r;

long*q;

q=(long*)p;

q++;

r=(char*)q;

printf(“%s\n”,r);

}

32.若输入2、2,则下列程序的运行结果为【】。

main()

{inti,j,(*p)[4],

a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

p=a;

scanf("%d%d",&i,&j);

printf("a[%d,%d]=%d\n",i,j,*(*(p+i)+j));

}

33.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。

34.数据库保护分为:安全性控制、______、并发性控制和数据的恢复。

35.下列程序执行输出的结果是【】。

#include<stdio.h>

f(inta)

{intb=0;

staticc=3;

a=c++,b++;

return(a);}

main()

{inta=2,i,k;

for(i=0;i<2;i++)

k=f(a++);

printf("%d\n",k);}

36.若有定义语句chars[100],d[100];intj=0,i=0;且s中已赋字符串,请填空以实现拷贝。(注:不使用逗号表达式)

white(s[i]){d[j]=【】;j++;}

d[j]=0;

37.下列程序的运行结果是______。

#include<stdio.h>

main()

{intfun();

fun();

}

fun()

{staticinta[4]={1,2,3,4};

inti;

for(i=0;i<4;i++)a[i]+=a[i];

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

printf"\n");

}

38.在对文件进行操作的过程中,若要求文件的位置回到文件的开头,应当调用的函数是【】函数。

39.以下程序的输出结果是【】。

main()

{chars[]="ABCD",*p;

for(p=s+1;p<s+4;p++)printf("%s\n",p);}

40.下列程序运行后的输出结果是______。

#include<stdio.h>

main()

{chars[20];

scanf("%s",s);

printf("%s",s);

}

运行程序,输入HOWAREYOU。

三、1.选择题(20题)41.下列选项中,值为1的表达式是()。

A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'

42.下列叙述中,不属于软件需求规格说明书的作用的是()

A.便于用户,开发人员进行理解和交流

B.反映出用户问题的结构,可以作为软件开发工作的基础和依据

C.作为确认测试和验收的依据

D.便于开发人员进行需求分析

43.利用fseek函数可实现的操作是()。

A.实现文件的顺序读写B.改变文件的位置指针C.实现文件的随机读写D.以上答案均正确

44.有以下程序:mian(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("\n");}}程序运行后的输出结果是()。

A.1*1=11*2=21*3=3

B.1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9

C.1*1=1

D.1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9

45.将E-R图转换到关系模式时,实体与实体间的联系可以表示成()。

A.属性B.关系C.键D.域

46.若程序中已包含头文件stdio.h,以下选项能正确运用指针变量的程序段是()。

A.int*i=NULL;scanf("%d",i);

B.float*f=NULL;*f=10.5;

C.chart='m',*c;*c=&t;

D.long*L;L='\0';

47.以下选项中可以作为C语言中合法整数的是______。

A.10110BB.386C.0XffaD.x2a2

48.若在定义语句:inta,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);

49.在软件开发过程中,软件结构设计是描述______。

A.数据存储结构B.软件体系结构C.软件结构测试D.软件控制过程

50.请选出以下程序的输出结果()#include<stdio.h>sub(x,y,z)intx,y,*z;{*2=y-x;}main(){inta,b,c;sub(10,5,&A);sub(7,a,&B);sub(a,b,&C);printf("%d,%d,%d\n",a,b,C);}

A.5,2,3B.-5,-12,-7C.-5,-12,-17D.5,-2,-7

51.以下说法正确的是()。

A.宏定义是C语句,要在行末加分号

B.可以使用#undefine提前结束宏名的使用

C.在进行宏定义时,宏定义不能嵌套

D.双引号中出现的宏名也要进行替换

52.以下定义语句中正确的是

A.inta=b=0;

B.charA=65+1,b=′b′;

C.floata=1,*b=&a,*c=&b;

D.doublea=00;b=1.1;

53.下面描述中,符合结构化程序设计风格的是()。

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

B.模块只有一个入口,可以有多个出口

C.注重提高程序的执行效率

D.不使用goto语句

54.在下列各m的值中,能使m%3=2&&m%5=3&&m%7=2为真的是()

A.8B.23C.17D.6

55.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

56.下列说法正确的是()。

A.一个C程序可以有多个主函数

B.一个C语言的函数中只允许有一对花括号

C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内

D.在对C程序进行编译时,可以发现注释行中的拼写错误

57.有以下程序main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序运行后的输出结果是

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

58.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。

A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩

59.下列关于switch语句和break语句的结论中,只有()是正确的。

A.break语句是switch语句中的一部分

B.在switch语句中根据需要使用或不使用break语句

C.在switch语句中必须使用break语句

D.以上三个结论中有两个是正确的

60.下面一组中都是C语言关键字的是______。

A.doubleIntfor

B.mainwhilegoto

C.volatilebreakstatic

D.mallocsizeofnew

四、选择题(20题)61.

62.若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确表示该代数式的C语言表达式是()。

A.sqrt(fabs(pow(n,x)+exp(x)))

B.sqrt(fabs(pow(n,x)+pow(x,e)))

C.sqrt(abs(n^x+e^x)

D.sqrt(fabs(pow(x,n)+exp(x)))

63.设x=011050,则x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

64.以下叙述中错误的是()。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界的出错信息”

D)可以通过赋初值的方式确定数组元素的个数

65.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是():

A.学生成绩管理系统B.ERP系统C.办公自动化系统D.UNIX系统

66.

67.有如下程序

#include"stdio.h"

main()

{inta,b,m;

for(a=5;a>=1;a--)

{m=0;

for(b=a;b<=5;b++)

m=m+a*b;

}

printf("%d\n",m);

}

上述程序的运行结果是

A.30B.15

C.20D.10

68.检查软件产品是否符合需求定义的过程称为()。

A.确认测试B.集成测试C.验证测试D.验收测试

69.

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

main

{charx=0xFFFF;printf("%d\n",x--);}

A.-32767B.FFFEC.1D.32768

70.有以下程序main(){intc=35;printf("%d\n",c&c);}程序运行后的输出结果是______。

A.0B.70C.35D.1

71.

72.设有定义

73.有以下程序:

#include<stdio.h>

intfun

{staticintx=1;

x+=1;returnX;

}

main

{inti,S=1;

for(i=1;i<=S;i++)s+=fun;

printf("%d\n",s);

}

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

A.11B.21C.6D.120

74.下列描述错误的是()。

A.继承分为多重继承和单继承

B.对象之问的通信靠传递消息来实现

C.在外面看不到对象的内部特征是基于对象的“模块独立性好”这个特征

D.类是具有共同属性、共同方法的对象的集合

75.

76.以三级模式为框架形成的3种数据库中,真实存在于计算机外存的数据库是()。

A.概念数据库B.用户数据库C.物理数据库D.逻辑数据库

77.成功的测试是指A.A.运行测试实例后未发现错误

B.发现程序的错误

C.证明程序正确

D.软件产生

78.

79.

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。

例如,若输入“Ab,cD”,则输出“AB,CD”。

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

注意:部分源程序在文件MODIl.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编一个函数floatproe(doubleh),函数的功能是对变量h中的值保留2位小数,并对第3位进行四舍五人(规定h中的值为正数)。例如,若h值为7.32596,则函数返回7.33;若h值为7.32496,则函数返回7.32。注意:部分源程序给出如下。.请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

2.D此题考查的是基本的循环,答案为D。

3.DC语言的数值常量中不能夹带空格,所以A选项错误。C语言中的变量都必须先定义再使用,变量的定义通常放在函数体的前部,也可以放在函数外部或复合语句的开头,不能随便放置,所以B选项错误。在C语言中,运算符两侧的运算数据类型可以不一致,且结果与精度较高的数据类型保持一致,所以C选项错误。故本题答案为D选项。

4.A条件表达式“x=表达式1?表达式2:表达式3”的含义是:先求解表达式1,若其值不为0(真),则求解表达式2,将表达式2的值赋给x;若表达式1的值为0(假),则求解表达式3,将表达式3的值赋给X。本题中与条件表达式“(x-y)”等价的是“(x-y<0||lx-y>0)”。故本题答案为A选项。

5.A

6.A在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,选项A错误,其他选项正确。故本题答案为A选项。

7.D本题主要考查带参数的宏定义,过程如下:由于定义为define(x)x*x没有括号优先级,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

8.A执行x=x-=x-x语句可写成x=x-(x-x),可看出结果为10,故八选项正确。

9.Ascanf是格式输入函数,其中双引号之间的内容是格式控制字符串,后面是输入参数列表。输入参数列表中各项都必须是变量地址,所以选项C错误;在scanf函数的格式字符前,可以加入一个正整数指定输入数据所占的宽度,但不可以对实数指定小数位的宽度,所以选项B、D错误。选项A是正确的,按照A的输入格式,12345赋值给变量a,空格赋值给变量ch,678910.36赋值给变量d。故本题答案为A选项。

10.Astatic静态变量只在声明时初始化一次。mul()累乘,第一次init=1,init}=val,第二次init=1,val=2,第三次init=2,val=3,第四次init=6,val=4,第五层init=24,val=5,因此结果为l,2,6,24,120。故答案为A选项。

11.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。

12.B

13.B

14.C

15.B解析:考查用指针引用字符串元素的方法。指针a通过数组元素下标来从头逐个地引用字符串item中的字符,判断不是0~9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下和两个字符了。

16.D

17.DD。【解析】算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模。09函数fin),算法的时间复杂度也因此记做T(n)=O(f(n))。因此,问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关,称作渐进时间复杂度(AsymptoticTimeComplexity)。简单来说就是算法在执行过程中所需要的基本运算次数。

18.D[解析]在ifelse语句中else,总是与离它最近的配对。本题目中x为1所以!劝0.所以执行elsei语句中的内容,判断(x==0)是否成立,因为劝1所以条件不成立,所以else内部的if..else语句不再执行,所以y的值还是初始值0.

19.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。

20.C栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表:本题答案为C)。

21.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。

22.3535解析:考查swap()函数。函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。

23.*(p+5)

24.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部变量(值为3)。函数fun(x*y-m)的值为7*5-3=32,在main函数中,fun(a,b)/m中的m应取外部变量的值13,因此输出2。

25.软件工程管理软件工程管理解析:软件工程足指,采用工程的概念、原理、技术和方法指导软件的开发与维护:软件工程学的主要研究对象包括软件开发与维护的技术、方法、工具和管理等方面。即软件工程研究的内容主要包括:软件开发技术和软件工程管理。

26.a=123b=5

27.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。

28.B

29.无限无限解析:分析程序“while(s)”语句后面有一个“;”不能执行后面的语句,只是执行空语句,所以s=12保持不变,因此,没有条件限制的能循环无限次(即死循环)。

30.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。

31.efghefgh解析:本题定义了一个字符型指针变量p并通过赋初值让它指向了一个字符串,定义了另一个字符型指针变量r和一个长整型指针变量q。首先通过语句“q=(long*)p;”把P的地址值强制转换为长整型地址值并赋值给q,然后执行“q++;”,地址值增加了4,执行语句“r=(char*)q;”,把长整型指针变量q的值再强制转换成字符型地址值并赋给r,r的值应为字符串中字符“e”的地址,最后输出,指向的字符中,是“efgh”。

32.a[22]=11

33.模块化模块化

34.完整性控制完整性控制

35.44解析:本题考查了静态存储类别的局部变量的特点。静态存储类别的局部变量在程序的整个生存周期内都存在,但作用域却只局限于定义它的函数或局部范围。当i=0时执行第一次for循环,k=f(2),a=c++,b++;因为赋值运算符的优先级高于逗号运算符,所以a=3,c=4;当i=1时执行第二次for循环,k=f(3),a=c++,b++;因为c为静态局部变量所以保留着这一次执行的结果值4,所以a=4,c=5,所以函数f()返回a的值为4。

36.s[i++]s[i++]解析:本题中为了能实现字符串的拷贝,需要使字符数组s从头到尾依次遍历其有元素。本题应使用i舶自增后置来实现。

37.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。

38.rewind()或fseek()rewind()或fseek()

39.BCDCDDBCD\r\nCD\r\nD解析:本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+1后,p指向字符串中的第二个字符B,然后输出值'BCD'并换行,依次执行循环语句。

40.HOWHOW解析:在scanf()函数中,使用空格作为分隔符,如果输入含有空格的字符中,则不能使用scanf()数,所以本题中输入空格就返回了'\\0\\,s数组也就确定了,后面的输入就不再读入数组s中。

41.B解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为对应的ASCII码值再参与整数运算。字符'1'对应的ASCII码值是49,字符'0'对应的ASCII码值是48,字符'\\0'是字符串结束标识符NULL,其对应的ASCII码值是0。

42.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。

43.D解析:改变文件位置指针函数fseek()的功能:①改变文件的位置指针;②辅助实现文件的顺序读写;③辅助实现文件的随机读写。

44.B解析:在一个循环体内又完整地包含了另一个循环体的,称为循环嵌套,外循环的i值分别为1、2、3,当i=1时,内循环j=1时,输出1*1=1;当内循环j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2时,内循环j=2时,输出2*2=4;当内循环j=3时,输出2*3=6;当i=1,内循环j=3时,输出3*3=9。

45.B解析:将E-R图转换成指定RDBMS中的关系模式是数据库逻辑设计的主要工作。从E-R图到关系模式的转换是比较直接的,实体和联系都可以表示成关系。

46.D解析:本题考查指针变量的运用。选项A)、B)的指针定义错误,空指针NULL是对指针变量赋。值而得到的。例如:

#defineNULL0

int*p=NULL;

对指针变量赋。值和不赋值的时候意义是不同的:指针变量未赋值时,它是指向任意不确定的存储单元,不能使用,否则将造成意外错误;而指针变量赋0值后,则可以使用,只是它不指向具体的变量而已。选项C)中的*c=&t;错误,因为&t是地址,而*c是值。选项D)是让指针L指向字符串的末尾,即字符串的结束符。

47.C解析:C语言中整型常量有3种表示形式:十进制、八进制和十六进制。选项A是二进制表示,错误;八进制的数字是0、1、2、3、4、5、6、7,选项B错误;十六进制整数常量用0X开头,选项D错误。

48.C

\n题中整型指针变量P存放的是变量C的地址。所以本题答案为C。

\n

49.B解析:从工程管理解度来看,软件设计分两步完成:概要设计和详细设计。概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。

50.B

51.B解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程序中可以使用#ndefine;④在进行宏定义时,宏定义能层层置换,能够嵌套。

52.B解析:本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和D)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。

53.A解析:符合结构化程序设计风格中,应该选择只有一个入口和一个出口的模块,故选项B错误;首先要保证程序正确,然后才要求提高效率,故选项C错误;严格控制使用goto语句,必要时可以使用,故选项D错误。

54.B

55.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

56.C解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C语言的标识符是由字母、数字、下划线组成的,可以是大写字母,而且标识符区分字母的大小写;③C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释行中的错误。

57.B解析:主函数中先定义了一个整型变量a,一个字符变量c并赋初值10,一个浮点型变量f并赋初值100.00和一个double型x,接着执行“a=f/=c*=(x=6.5)”,该语句从右向左计算,先把6.5赋值给x(该括号表达式的值也为6.5),此时x的值的变为6.5,然后执行“c*=(x=6.5)”相当于执行“c=c*(x=6.5)”,此时c的值为65,接着向左执行“f/=c*=(x=6.5)”,语句相当于执行“f=f/c”接着向最右边执行“a=f,由于a是整型变量,所以a最后取f的整数部分为1。程序最后输出的a、c、f和x的值分别为1、65、1.5、6.5。

58.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。

59.D

60.C解析:C语言中的关键字有32个关键字(参见C语言教程),本题中只有C符合题意。

61.C

62.AB选项中函数pow(x,C)错误应该直接使用exp(x)函数。c选项中函数ah(n^x+e“x)错误,应该使用fabs()返回浮点数的绝对值。D选项中pow(x,n)参数顺序错误。

63.A本题考查按位与运算,按位与就是相同为1,不同为0,把x=011050化成二进制为0001001000101000,把01252化成二进制为0000001010101010,两者相与得0000001000101000。

64.C在C语言中,当程序执行中,数组元素的下标超出所定义的下标范围时,系统不会有提示。

65.D系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。选项D属于系统软件。选项A、B、C属于应用软件。故选D选项。

66.A

67.B在本题中,程序首先定义了三个整型变量,然后执行for循环,从循环的结构条件我们可以知道,循环执行了5次,循环变量a的值分别为5,4,3,2,1。

当a=5时,m=0,执行第二层循环,循环开始时,是变量a的值赋给循环变量b,而且只要循环变量b的值小于等5,循环继续,循环变量b的值每经过一次循环后自加1,这时由于b=a=5,循环只执行一次,m=m+a*b可描述为m=0+5*5=25。如果我们一直这样分析下去,由于循环的次数太多,那么费时肯定也很多,而且还容易出错,因此,我们需要找到新的解决问题的办法。

从我们对上一次循环执行过程的分析可以看出,第一层循环,每次在最前面执行语句m=0操作,即将我们前面执行的m结果值进行清0操作,使其不影响后面m的值,程序最终要输出的m是当a=1时那次循环计算到的m的值。

当a=1时,b的初值为1,第二层循环执行5次,第一次计算到的m=0+1*1=1;第二次计算到的m=1+1*2=3;第三次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论