2021年吉林省通化市全国计算机等级考试C语言程序设计真题二卷(含答案)_第1页
2021年吉林省通化市全国计算机等级考试C语言程序设计真题二卷(含答案)_第2页
2021年吉林省通化市全国计算机等级考试C语言程序设计真题二卷(含答案)_第3页
2021年吉林省通化市全国计算机等级考试C语言程序设计真题二卷(含答案)_第4页
2021年吉林省通化市全国计算机等级考试C语言程序设计真题二卷(含答案)_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

2021年吉林省通化市全国计算机等级考试C语言程序设计真题二卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下叙述中错误的是

A.在函数外部定义的变量在所有函数中都有效

B.在函数内部定义的变量只能在本函数范围内使用

C.函数中的形参属于局部变量

D.在不同的函数中可以使用相同名字的变量

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

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

3.关于指针,以下说法正确的是()。A.可以直接向指针中写入数据

B.若指针指向变量,则可以向指针所指内存单元写入数据

C.指针可以指向内存中任何位置,并写入数据

D.两个指针可以通过加运算求和,形成一个功能更强大的指针

4.有以下程序:#includc<stdio.h>voidfun(int*p){printf("%d\n",p[5]);}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序运行后的输出结果是()。A.5B.6C.8D.9

5.有以下程序:#include<stdio.h>voidfun(int*a,int*b){for(;(*a<*B)||(getchar()!=‘@’);){(*a)++;(*b)--;}}main(){inti=0,j=5;fun(&i,&j);printf(“%d,%d\n”,i,j);}程序运行时在第1列开始输入ab@并按<Enter>键,则运行结果是()。

A.7,1B.3,2C.0,5D.5,0

6.

7.

8.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是()。

A.c=(c-'A')%26+'A'B.c=c+32C.c=c-'A'+'A'D.c=('A'+C)%26-'a'

9.设线性链表中结点的结构为(data,next)。若想删除结点p的直接后继,则应执行下列()操作。

A.p->next=p->next->next;

B.p=p->nextp->next=p->next->next;

C.p->next=p->next;

D.p=p->next->next;

10.

11.在Windows环境下,单击当前应用程序窗口中的“关闭”按钮,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.退出Windows后重新启动计算机

D.终止当前应用程序的运行

12.下列程序的输出结果是()。main{inta,b,d=25;a=d/10%9;b=a&&(一1);printf("%d,%d\n",a,b);}A.6,1B.2,1C.6,0D.2,0

13.有以下程序:#include<stdio.h>main(){structSTU{charname[9];charsex;doublescore[2];};structSTUa={“Zhao”,‘m’,85.0,90.0},b={“Qian”,‘f’,95.0,92.0};b=a;printf(“%s,%c,%2.0f,%2.0f\n”,,b.sex,b.score[0],b.score[1]);}程序的运行结果是()。

A.Qian,m,85,90B.Zhao,m,85,90C.Zhao,f,95,92D.Qian,f,95,92

14.有以下程序:#include<stdio.h>structord{intX,y;)dt[2]={1,2,3,4};main(){structord*p=dt;printf("%d,",++(p->x));printf("%d\n",++(p->y));}程序运行后的输出结果是()。A.1,2B.4,1C.3,4D.2,3

15.若已知一个栈的进栈序列是l,2,3…n,其输出序列是P1,P2,P3,…PN,若P1=3,则P2为()。

A.可能是2B.一定是2C.可能是1D.一定是1

16.若有说明语句:double*p,a;则通过scanf语句正确给输入项读人数据的程序段是()。

A.*p=&a;scanf("%1f”,p);

B.*p=&a;scanf("%f",p);

C.p=&a;scanf("%",*p);

D.p=&a;scanf("%1f",p);

17.以下程序段中,与语句“k—a>b?(b>c?1:O):0;”功能相同的是()。

A.if(a>b)(b>c)k=1;elsek=0;

B.if((a>b)‖(b>c))k=1;elsek=0;

C.if(a<=b)k=0;elseif(b>c)k=1;

D.if(a>b)k=1;elseif(b<=c)k=1;elsek=0:

18.下列程序的输出结果是()。main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}

A.22B.76C.72D.62

19.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是______。

A.控制流B.加工C.数据存储D.源和潭

20.有嵌套的if语句:if(a<b) if(a<c)k=a; elsek=c;elseif(b<c)k=b;elsek=c;以下选项中与上述if语句等价的语句是()。

A.k=(a<b)?((b<c)?a:b):((b>c)?b:c);

B.k=(a<b)?((a<c)?a:c):((b<c)?b:c);

C.k=(a<b)?a:b;k=(b<c)?b:c;

D.k=(a<b)?a:b;k=(a<c)?a:c;

二、2.填空题(20题)21.在面向对象方法中,【】描述的是具有相似属性与操作的一组对象。

22.有下列程序;

#include<stdio.h>

main()

{charc;

while((c=getchar())!=',')putchar(++C);

}

程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。

23.若有如下程序:

main()

{intx=5,y,*t;t=&x;

y=++(*t);

printf("%d,%d",x,y);}

则程序执行后的x值为【】,y的值为【】。

24.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。

25.x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。

26.函数voidfun(float*sn,intn)的功能是:根据以下公式计算s,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

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

{f=【】*f;

w=f/(2*i+1);

s+=w;}

【】=s;}

27.在ER图中,矩形表示【】。

28.以下程序运行后的输出结果是______。

inta=5;

fun(intB)

{staticinta=10;

a+=b++;

printf("%d",A);

}

main()

{intc=20;

fun(C),

a+=C++;

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

}

29.以下程序的运行结果是()。

main()

(inta=2,b=7,c=5;

switch(a>0)

{case1:switch(b<0)

{case1:switch(");break;

case2:printf("!");break;

}

case0:switch(c==5)

{case0:printf("*");break;

case1:printf("#");break;

case2:printf("$");break;

}

default:printf("&");

}

printf("\n");

}

30.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

31.以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值,和值通过形参传回主函数输出。请填空,

#include<stdio.h>

#defineM2

#defineN4

voidSumColumMin(inta[M][N],int*sum)

{inti,j,k,s=0;

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

k=O;

for(j=1;j<M;j++)

if(a[k][i]>a[j][i])k=j;

s+:【】;

}

【】=s;

}

main()

{intx[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(【】);

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

}

32.下面程序的功能是将一个字符串str的内容颠倒过来,请填空。

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

for(i=0,j=strlen(str)【】;i<j;i++,j--)

{k=str[i];str[i]=str[j];str[j]=k;}

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

33.实体之间的联系可以归结为一对一联系、一对多(或多对多)的联系与多对多联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于______的联系。

34.在算法的4个特性中,算法必须能在执行有限个步骤之后终止指的是算法的______特性。

35.若有定义inta[4][4]={{1,2,3,4},{0},{4,6,8,10},{1,3,5,7}},则初始化后,a[1][1]得到的初值是______。

36.以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:

abcl23edf456gh,执行程序后输出:123456。请填空。

#include<stdio.h>

#include<ctype,h>

main()

{chars[80],d[80];inti,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

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

d[j]='\0';

puts(d);

}

37.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

38.下列程序的输出结果是______。

main()

{inti,sum;

for(i=1;i<7;i++)

sum+=i;

printf("%d",sum);

}

39.下列程序的运行结果是【】。

main()

{unionEXAMPLE

{struct

{intx;inty;}in;

inta;

intb;

}e:

e.a=1;e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("%d,%d\n",e.in.x,e.in.y);

}

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

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{

inti=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

}

三、1.选择题(20题)41.关系模型允许定义三类数据约束,下列不属于数据约束的是()。A.A.实体完整性约束B.参照完整性约束C.域完整性约束D.用户自定义的完整性约束

42.以下所列的各函数首部中,正确的是______。

A.voidplay(Var:Integer,varb:Integer)

B.voidplay(inta,b)

C.voidplay(inta,intb)

D.Subplay(aasinteger,basinteger)

43.若有如下程序:main(){intk,x=0,y=0;for(k=0;k<=2;k++)switch(k){case0:X++;case1:y++;case2:X++;y++;}printf("%d,"d\n",x,y);}则程序运行后的输出结果是()。

A.3,3B.2,2C.4,5D.2,3

44.有以下程序#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的运行结果是

A.0B.1C.2D.3

45.关于语句“for(表达式1;表达式2;表达式3)”,下面说法中错误的是()

A.for语句中的三个表达式可以同时省略

B.for语句可以用于循环次数不确定的情况

C.for语句中表达式2只能是关系表达式或逻辑表达式

D.for语句中表达式1和表达式3可以是逗号表达式

46.程序流程图中带有箭头的线段表示的是()。

A.图元关系B.数据流C.控制流D.调用关系

47.设计数据库的存储结构属于()。

A.需求分析B.概念设计C.逻辑设计D.物理设计

48.下面程序的输出结果是()main(){inta=-1,b=4,k;k=(a++<=0)&&(!(b--<=0));prinft("%d%d\n",k,a,b);}

A.003B.012C.103D.112

49.下列模式中,能够给出数据库物理存储结构与物理存取方法的是A.内模式B.外模式C.概念模式D.逻辑模式

50.有以下程序:main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i+1;printf("%d\n",a[1][2]);}程序运行后的输出结果是

A.3B.6C.9D.2

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

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

52.下面说明不正确的是()。

A.chara[10]="china";

B.chara[10],*p=a;p="chiua";

C.char*a;a="china";

D.chara[10],*p;p=a="china";

53.软件开发的结构化生命周期方法将软件生命周期划分成()

A.定义、开发、运行维护

B.设计阶段、编程阶段、测试阶段

C.总体设计、详细设计、编程调试

D.需求分析、功能定义、系统设计

54.执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是main(){chars[100];intc,i;scanf("%c",&c);scanf("%d",&i);scanf("%s",s);printf("%c,%d,%s\n",c,i,s);}

A.123,456,789B.1,456,789C.1,23,456,789D.1,23,456

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

A.logn2

B.n2

C.O(n1.5)D.n(n-1)/2

56.C语言中,组成数据文件的成分是()。A.A.记录

B.数据行

C.数据块

D.字符(字节)序列

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

A.C语言区分大小写

B.C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改

C.整数和实数都能用C语言准确无误地表示出来

D.在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示

58.单个用户使用的数据视图的描述称为______。

A.外模式B.概念模式C.内模式D.存储模式

59.设有如下程序#include<stdio.h>main(){int**k,*j,i=100;j=&i;k=&j;printf("%d\n",**k);}上述程序的输出结果是_______。

A.运行错误B.100C.i的地址D.j的地址

60.下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}

A.121,0,4B.2,2,2C.0,2,4D.0,2,2

四、选择题(20题)61.若执行以下程序时从键盘上输入9,则输出结果是()。main(){intn;scanf(”%d”,&n);if(n++<10)printf(”/%d\n”,n);elseprintf(”%d\n”,n--);}A.11B.10C.9D.8

62.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是()。

A.-369B.369C.0.369D.整数集合11,2,3,4,51

63.设有定义:intX=2;,以下表达式中,值不为6的是()。

A.2*x.x+=2B.x++,2*xC.x*=(1+x)D.x*!x+1

64.若有以下说明和语句,请选出哪个是对C数组元素的正确引用()。

A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)

65.数据库管理系统中负责数据完整性、安全性定义的语言是()。

A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

66.若调用fputc函数输出字符成功,则其返回值是()。

A.EOFB.1C.0D.输出的字符

67.

执行下列程序中的输出语句后,a的值是()。

main

{inta;

printf("%d\n",(a=2*3,a*5,a+7));

}

A.17B.37C.6D.13

68.C源程序中不能表示的数制是

A.十进制B.八进制

C.二进制D.十六进制

69.有以下程序程序的运行结果是()。

A.4332B.2344C.1234D.1123

70.假定已建立以下链表结构,且指针p和q已指向如图所示的结点:

71.Internet使用的网络协议是()。

A.3CP协议B.TCP/IP协议C.UDP协议D.IP协议

72.下列叙述中正确的是()。

A.软件测试应该由程序开发者来完成

B.程序经调试后一般不需要测试

C.软件维护只包括对程序代码的维护

D.以上三种说法都不对

73.

74.有以下程序:

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

A.b,B"b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B

75.以下程序的输出结果是()。main(){inti,a[4][4]={{1,3,5),{2,4,6},{3,5,7}};printf("%(1%d%d%d\n".a[O][3],a[1][2],a[2][1],a[3][0]);}A.0650B.1470C.5430D.输出值不定

76.有如下嵌套的if语句:

以下选项中与上述if语句等价的语句是()。

A.k=(a<B.?((b<C.?a:

B.B.:((b>C.?b:

C.;B.k=(a<B.?((a<C.?a:C.:((b<C.?b:C.;C.k=(a<B.?a:b;k=(b<C.?b:C;

D.k=(a<B.?a:b;k=(a<C.?a:c;

77.

78.下列关于栈的叙述正确的是()。

A.栈按“先进先出”组织数据,B.栈按“先进后出”组织数据C.只能在栈底插入数据D.不能删除数据

79.

80.有以下程序段

#include"stdio.h"

main()

{intj,i,k=0;

for(j=50;j<=60;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))

break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

程序执行后输出的结果是

A.5359B.5953

C.3595D.9535

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是l5。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

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

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

试题程序:

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度

不超过N),按顺序合并组成一个新的字符串。

例如,若字符串数组中的M个字符串为:

ABCD

BCDEFG

CDEFGHI

则合并后的字符串内容应该是ABCDBCDEFGCDEFGHl。

注意:部分源程序给出如下。

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

试题程序:

#include<stdio.h>

#include<conio.h>

#defineM3

#defineN20

voidproc(chararr[M][N],char*b)

{

}

voidmain

{

charstr[M][N]={"ABCD","BCDEFG","CDEFGHl"),i;

chararr[100]={"##################"};

printf(”Thestrin9:kn”);

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

puts(str[i]);

printf("\n");

proc(str,arr);

printf("TheAstring:\n");

printf("%S",arr);

printf("\n\n");

}

参考答案

1.A全局变量有效范围是从定义的位置开始到所在源文件的结束,在这区域内的函数才可以调用,如果在定义函数之后,定义的变量,该变量不能被之前的函数访问所以A选项说法错误,答案为A选项。

2.A本题主要考查软件测试的基本知识。软件测试的步骤可分为单元测试(模块测试)、集成测试、确认测试和系统测试。

(1)单元测试是针对每个模块进行的测试,它可从程序的内部结构出发设计测试用例,多个模块可以平行、对立地测试。单元测试主要用于发现详细设计和编程时犯下的错误。单元测试多采用白盒测试,辅之以黑盒测试。

(2)集成测试是在单元测试的基础上,根据模块结构图将各个模块连接起来,必须精心计划,应提交集成测试计划、集成测试规格说明和集成测试分析报告。主要目标是发现与接口有关的问题。集成测试可以发现概要设计时犯的错误。

(3)确认测试用于验证软件的功能和性能及其他特性是否与用户的要求一致。确认测试主要用于发现需求分析时犯下的错误,一般使用黑盒法测试,以表明软件符合需求说明书的要求,应该仔细设计测试用例和测试过程。确认测试必须有用户参加,或以用户为主,用户应参与设计测试用例,通常情况下,主要使用生产中的实际数据进行测试,测试数据通过用户接口输入。

(4)系统测试是将已经通过确认测试的软件,作为整个计算机系统的元素与计算机硬件、外设和网络等其他因素结合在一起,进行一系列的组装测试和确认测试。系统测试的目的是通过与系统的需求定义做比较,发现软件与系统的定义不符合的地方。系统测试可以发现问题定义时犯下的错误。

3.BC语言中指针就是变量的地址,它必须有确定的基类型。当指针指向某个变量时,才能向其中写入数据,选项A错误,选项B正确;指针除了指向变量外,还可以赋值为NULL,表示未指向任何地址,此时不能写入数据,另外指针必须有基类型,只能指向基类型相同的变量,选项C错误;指针只能与一个整数进行运算,即移动指针,两个指针不能运算,选项D错误。本题答案为B选项。

4.B由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。

5.Dfun函数接收两个整型指针变量a、b。for循环判断a、b指向的值大小和getchar读入的字符是否为“@”来决定循环是否执行。循环体内对a、b指向的值各自自增1、自减1。main函数定义并初始化实参i的值为0,实参j的值为5,调用函数fun,传入i、j的地址。所以形参a指向i,形参b指向j,*a的值为0,*b的值为5,*a<*b为真,执行循环体;*a的值为1,*b的值为4,*a<*b为真,执行循环体;*a的值为2,*b的值为3,*a<*b为真,执行循环体;*a的值为3,*b的值为2,*a<*b为假,getchar读入字符“a”,执行循环体;*a的值为4,*b的值为1,*a<*b为假,getchar读入字符“b”,执行循环体;*a的值为5,*b的值为0,*a<*b为假,getchar读入字符“@”,fun函数执行完毕,main函数输出5,0。故本题答案为D选项。

6.B

7.B

8.B根据ASCII码可知大写字符A与小写字符a的ASCIl码相差32,而D中应该是加上'a',选项A和C左侧的表达式都是大写字符C与大写字符A的差与'a'的ASCIl代码的和就是小写字符c的ASCII代码。

9.A

10.C

11.D

12.B当逻辑运算符“&&”两边的值是非零时,逻辑表达式的值为真(即为1)。所以b=2&&(-1)=1,2%9=2,故a=2,故先算a/10=25/10=2。

13.B在main函数中将结构体变量a赋值给变量b。输出结构体变量b的值为:Zhao,m,85,90。故本题答案为8选项。

14.Dp一>x的值为1,++(p->x)作用是取p->x的值加1作为表达式的值即值为2,同理++(p->y)的值为3。所以选D。

15.A

16.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf函数要求在输入double型数据,格式控制符必须用%1f。否则,数据不能正确输入。所以选项D正确。

17.A本题考查了双重三目运算符的用法。例如:表达式a>b?c:d可以看成,当a>b时取C的值,否则取d的值。在本题中k=a>b?(b>c?1:0):0可以看做:当b>c时为真,则k=a>b?1:0。当bb?0:0。也就是说,当a>b并且b>C时,k=1,否则k=0。所以A选项符合题意。

18.C解析:函数slzeof(a)的功能是求出字符串a中的字符占用存储空间的大小,由于字符数组a有长度为7,所以i=7;函数strlen(a)的功能是:求出字符串a的长度。而每个字符串都以'\\0'为字符串的结束标记,所以j的值等于2。

19.A解析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。

20.B题目中嵌套语句的含义是当“a<b”且“a<c”成立时,将a的值赋给k。如果“a<b”成立而“a<c”不成立,则将c的值赋给k。如果“a<b”不成立而“b<c”成立,则将b的值赋给k。如果“a<b”不成立且“b<c”也不成立,则将c的值赋给k。判断条件表达式,只有B选项可以表示这个含义。故本题答案为B选项。

21.类类解析:在面向对象方法中,类描述的是具有相似属性与操作的一组对象。

22.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。

23.66

24.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)

25.((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))((x>0)&&<y>0))‖(x>0)&&(z>0)‖y>0)&&(z>0))解析:题目要求“x、y和z中至少有两个为正数”,即x、y和x这3个数中必须有两个是正数,且这3个数中的哪两个数都有可能是正数,所以它们之间是或的关系。

26.=-1*sn=-1\r\n*sn解析:C语言中实参变量和形参变量的数据传递是单向的“值传递”方式。指针变量作函数也要遵循这一规则。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。

27.实体实体解析:在E-R图中用矩形表示实体;椭圆形表示属性;菱形表示联系。

28.30253025解析:本题考核的知识点是变量的存储属性和算术运算的应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在所有函数之外的变量,本题中inta=5定义了一个外部变量a,它是一个全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的存储空间在程序的整个运行期间是固定的(static),本题函数fun()中staticinta=10定义个一个静态变量a,此静态变量a是个静态的局部变量,即它的值只能在本函数中使用;自动变量是C程序中使用最多的一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变量为auto,本题中main()中intc=20定义了一个自动变量c,此自动变量c是个静态的局部变量.算术运算中a+=b++相当于a=a+b,b=b+1.所以,在第一个ptine('%d',a)中a=a+b=10+20=30,第二个printf('%d',a)中a=a+c=5+20=25,即输出3025。

29.#&#&解析:刚开始时,switch后面的表达式a>0为真(1),与case1匹配,然后执行case1后面的switch语句,表达式b<0值为0,没有与其匹配的语句,返回外层,因为外层没有break语句,顺序执行case0后面的switch语句,表达式“c==5”值为1,与其后面的case1匹配,因此输出#,遇到break返回外层,又因为外层没有break语句,顺序执行default后的语句,输出&。

30.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

31.a[k][i]*sumx&sa[k][i]\r\n*sum\r\nx,&s解析:程序段for(j=1;j<M;j++)if(a[k][i]>a[j][i]))k=j;是找出第i列的最小值,第一处应该是每列最小值累加,所以填a[k][i];和值要通过形参传回主函数,第二处应该填*sum;根据形参可以确定第三处应该填x,&s。

32.k-1k\r\n-1解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的下标,j是后端元素的下标,交换以这两个变量值为下标的元素str[i]和str[j]。开始时,i的值为0,j的值为字符串末元素的下标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]还位于str[j]的前面,即i<j。字符串末元素的下标是它的长度减1,所以在第二个空框处应填入-1。程序为了交换str[i]和str[j],使用了变量k,该变量应在程序的变量定义部分中一起定义,所以在第一个空框处应填入k。

33.一对多或1:N。一对多或1:N。

34.有穷性有穷性解析:算法的4个基本特性包括:可靠性、确定性、有穷性和拥有足够的情报,其中,算法的有穷性指的是算法必须在有限的时间内完成,即算法必须在执行有限个步骤之后终止。

35.00解析:二维数组可以看成是按矩阵形式排列的,题目中给二维数组赋初值是按行分段赋值的,a[4][4]可以分解为4个一维数组,其数组名分别为a[0]、a[1]、a[2]、a[3],这4个一维数组都有4个元素,a[0]的元素为a[0][0]、a[0][1]、a[0][2]、a[0][3]。

36.s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]或48<=s[i]&&57>=s[i]解析:字符数组的初始化,字符串的输入和输出的应用。C语言没有字符串变量,字符串不是存放在一个变量中而是存放在一个字符型数组中,因此为了存放字符串,常常在程序中定义字符型数组;字符串存放在字符数组中,但字符数组与字符串可以不等长,C语言规定以“\\0”字符作为字符串结束标志。

本题中,chars[80],d[80];定义了两个字符型数组,可以放入80个字符。gets函数是c语言提供的一个专门用于读字符串的函数,它读入全部字符(包括空格),直到遇到回车为止。本题中,读入字符串s后,开始比较s中的每个字符是否为数字字符,因为字符数据在内存中以相应的ASCII码存放,所以只需比较相应的ASCII码值是否在48('0'的ASCII代码)与57('9'的ASCII代码)之间,或者直接与'0','9'进行比较,如果是数字字符则将此字符存入d数组中,不是则继续进行下一字符的比较,直至s结束(即'0'的出现)。将“'\\0'”字符作为字符串d结束标志,最后调用puts函数输出d。所以在空格处应填入比较语句s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57或s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]&&'9'>=s[i]或s[i]<=57&&s[i]>=48或&&48<=s[i]或57>=s[i]。

37.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

38.无定值无定值解析:for(i=1;i<7;i++)决定了循环次数为6次,每次执行的操作是sum+=i,但由于sum没有初始化,并不知道sum的初值是多少,所以结果无定值。

39.484,8解析:C语言规定,共用体中各个成员变量在内存中占用同一段内存单元,即e.in.x和e.a、e.b占用同一段内存单元,由于e.in.x和e.a、e.b占用的是同、段内存单元,所以程序最后的打印结果为“4,8”。

40.1616解析:首先用j和MCRA(i)替换MCRB(n,m)中的参数n和m,变成2*MCRA(j)+MCRA(i),再用j和i替换MCRA(m)中的参数m,变成2*2*j+2*i=2*2*3+2*2=16。

41.C数据约束是用来确保数据的准确性和一致性的。常见的四种数据约束如下:

(1)实体完整性约束:规定表的每一行在表中是唯一的实体。

(2)域完整性约束:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。

(3)参照完整性约束:是指两个表的主关键字和外关键字的数据应一致,保证了表之间数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。

(4)用户定义的完整性约束:不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性即是针对某个特定关系数据库的约束条件,它反映某一具体应用必须满足的语义要求。

在上述四种数据约束中,不属于关系模型定义的三种数据约束的是域完整性约束。

42.C解析:C语言中函数首部中的各参数必须分开单独定义,因此选项C才是正确的。而选项A和D是其他语言的函数定义方式。

43.C解析:本题使用了一个for循环,循环变量k从0递增到2共循环3次,循环体是一个switch语句,第一次循环k为0,所以从case0:处开始执行,变量x和y都自增两次。然后分别从case1:和case2:处执行,变量x共自增两次,y共自增3次,所以最后输出的结果是4,5。故应该选择C。

44.B解析:本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为“j<=i”,而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。

45.C

46.C解析:程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:→或↓表示控制流;□表示加工步骤;

表示逻辑条件。

47.DD。【解析】物理设计阶段主要解决选择文件存储结构和确定文件存取方法的问题。物理设计阶段包括:选择存储结构、确定存取方法、选择存取路径、确定数据的存放位置。

48.C

49.A数据库管理系统的三级模式结构由外模式、模式和内模式组成。

外模式,或子模式,或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式,或逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。外模式是模式的一一部分。内模式,或存储模式,或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方式的描述。

50.B解析:主函数中首先定义了一个3行3列的二维数组,定义了一个整型变量指向它,直接通过for循环给数组的每一个元素赋值,使得a[0][0]=1、a[0][1]=2、a[0][2]=3、a[1][0]=4、a[1][l]=5、a[1][2]=6、a[2]10]=7、a[2][1]=8、a[2][2]=9。所以,4个选项中选项B符合题意。

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

52.D解析:C语言中操作一个字符串常量的方法有:

①把字符串常量存放在一个字符数组之中。

②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。

当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。

本题选项D)错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。

53.A解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。它可以分为软件定义、软件开发及软件运行维护3个阶段。

54.D解析:根据给定的数据输入格式:123<空格>456<空格>789<回车>,第一个scanf语句中,格式字符为“%c”,只能得到一个字符\'1\',第二个scanf语句中格式字符为“%d”,变量i得到的数值为23,第三个scanf语句中格式字符为“%s”,遇到空格就自动结束,因此字符数组s得到的是'456\\0”。因而正确答案为选项D。

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

56.D解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。

57.C解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。

58.A解析:选项A)正确,外模式是用户的数据视图,也就是用户所见到的数据模式;选项B)不正确,全局数据视图的描述称为概念模式,即数据库中全部数据的整体逻辑结构的描述;选项C)不正确,物理存储数据视图的描述称为内模式,即数据库在物理存储方面的描述;选项D)不正确,存储模式即为内模式。

59.B解析:j=&i,j的值就是i的地址,*j=100,将j的地址赋给k,这时*k=j,那么,**k=*j,而*j=100,所以**k=100,最后的打印结果应当为100。

60.B解析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;constb=12;,其中数据类型可以缺省,默认为整型;enumc{a1,a2};定义了—个枚举类型enumc,a1,a2为枚举元素,在C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。

61.B当n为9时,此时if语句成立,执行n++后,n为10,因此输出n的值为10,故选择B选项。

62.B只有B)选项369可以用无符号整数来表示和存储。A)选项~369有负号。选项c)0.369是qJ、数,它们都不能用无符号整数类存储。选项D)是一个整数集合需要用数组来存储。

63.AA选项中逗号表达式先计算第一表达式2*x,然后计算表达式x+=2的值,即x=x+2即4,整个逗号表达式为第二个表达式的值4,所以选择A。B选项中首先计算逗号表达式中第一表达式x++,此时x为3,在执行第二个表达式2·X=2*3=6,所以逗号表达式为第二个表达式的值6。C选项的赋值表达式可以表示为x=x*(1+x)=2}(1+2)=6。D选项中的表达式可以表示为x=X}(x+1)=2·3=60

64.B本题的考查点是数组元素的引用。cp=c这个语句是将数组c的首行元素地址赋给了指针数组cp

温馨提示

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

评论

0/150

提交评论