2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下一维数组a正确的定义是()

A.inta(5)B.intn=5,a[n]C.inta[SZ]其中SZ为符号常量D.inta{5}

2.在JavaScript语言中,要定义局部变量则可以()。

A.由关键字private在函数内定义

B.由关键字private在函数外定义

C.由var在函数内定义

D.由关键字var在函数外定义

3.

4.有如下定义:inta[5],*p;p=a;则下列描述错误的是()。

A.表达式p=p+1合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的

5.当一个函数无返回值时,定义它的函数类型应是()。

A.voidB.intC.任意D.无

6.

7.求2n个数中的最大值和最小值,最少的比较次数是()

A.4n/3B.2n-2C.3n-2D.3n/2

8.下列叙述中正确的足

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

9.下列关于字符串的说法中错误的是

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

B.'\0'作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入'\0'

D.在C语言中,字符串常量隐含处理成以'\0'结尾

10.以下说法错误的是()。

A.由3种基本结构组成的结构化程序不能解决过于复杂的问题

B.由3种基本结构组成的结构化程序能解决一些简单的问题

C.由3种基本结构组成的结构化程序能解决递归问题

D.由3种基本结构组成的结构化程序能解决数学上有解析解的问题

11.

12.查找较快,且插入和删除操作也比较方便的查找方法是

A.分块查找B.二分查找C.顺序查找D.折半查找

13.在C++中,一个函数带有参数说明时,则参数的默认值应该在()中给出。A.函数定义B.函数声明C.函数定义或声明D.函数调用

14.

15.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

16.

17.以下选项中合法的C语言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

18.当接受用户输入的含有空格的字符串时,应使用()函数。

A.gets()B.getchar()C.scanf()D.printf()

19.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

20.若变量已正确定义并赋初值,以下合法的赋值语句是()。

A.k=(m==n);B.k=-m-nC.k=int(m+n);D.k=m*n=1;

二、2.填空题(20题)21.输出若干学生3门课程的成绩。

#include<stdio.h>

【】

structstudent

{intnum;

floatscore[3];

}

main()

{inti=0,n;

floata[3];

【】*ptr[200];

printf("请输入学生学号和3门课成绩,学号为0表示数据输入结束\n");

do

{ptr[i]=(structstudent*)malloc(sizeof(structstudent));

scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]);

ptr[i]->score[O]=a[O];

ptr[i]->score[1]=a[1];

ptr[i]->score[2]=a[2];

if(【】)break;

i++;

}while(1);

n=i-1;

【】;

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

printf("%-6d%.1f%.1f%.1f\n",ptr[i]->num,ptr[i]->score[0],

ptr[i]->score[1],ptr[i]->score[2]);}

22.以下程序的运行结果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

23.以下程序段用以统计链表中元素的个数。其中first指向链表第一个结点,count用来统计结点个数。请填空。

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

24.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longf1;

myf=【】("test.t","rb");

fscek(myf,(),SEEK_END);f1+ftell(myf);

fclose(myf);

printf("%1d\n",f1);

25.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程

序的输出结果是______。

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

#include<stdio.h>

#defineMAX(x,y)(x),(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

27.以下程序输出的最后个值是【】

intff(intn)

{staticintf=1;

f=f*n

returnf;

}

main()

{inti;

for(i=1;i<=5:i++)printf("%d、n",ff(i));}

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

#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);

}

29.有以下程序#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(REC*x){x->num=23;x->s=88.5;}voidmain(){RECa={16,90.0};fun1(&A);printf("%d\n",a.num);}程序运行后的输出结果是()。

30.数据流图的类型有【】和事务型。

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

#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);}

32.栈和队列通常采用的存储结构是【】。

33.计算机指令是由【】和地址码组成的。

34.下面程序的输出是【】。

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

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

inta=1234;

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

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

37.以下程序的运行结果为【】。

main()

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

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

for(j=0;j<4;j++)

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

38.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

40.在面向对象方法中,类之间共享属性和方法的机制称为______。

三、1.选择题(20题)41.若要求定义具有10个血型元素的一维数组a,则以下定义语句中错误的是()。

A.#definmeN10inta[N];

B.#definen5inta[2*n];

C.inta[5+5];

D.intn=10,a[n];

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

A.012B.123C.234D.345

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

A.main函数必须放在C程序的最后面

B.main函数必须放在C程序的最前面

C.main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的

D.main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的

44.下列程序的输出结果是______。main(){intn;(n=6*4,n+6),n*2;printf("n=%d\n",n);}

A.22B.23C.24D.25

45.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

46.两个或两个以上的模块之间关联的紧密程度称为______。A.耦合度B.内聚度C.复杂度D.数据传输特性

47.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

48.以下定义语句中正确的是()。

A.chara='A'b='B';

B.floata=b=l0.0;

C.inta=l0,*b=&a;

D.float*a,b=&a;

49.运行以下程序后,如果从键盘上输入6514<回车>,则输出结果为______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

50.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是

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

51.以下叙述中正确的是______。A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以"#"开头

C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>

D.C语言的预处理不能实现宏定义和条件编译的功能

52.执行下列程序的结果是()。#defineN5#defineH(x)((N+2)*x)main(){inta=2,b=3,C;c=H(a+b);printf("%d",c);}

A.15B.17C.23D.35

53.信息隐蔽的概念与下述______概念直接相关。

A.软件结构定义B.模块独立性C.模块类型划分D.模拟耦合度

54.以下程序的输出结果是f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}

A.10B.18C.8D.15

55.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}

程序执行后的输出结果是

A.45B.20C.25D.36

56.软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。

A.阶段性报告B.需求评审C.总结D.都不正确

57.可以在C语言程序中用做用户标识符的一组标识符是()。

A.void123BBNB.aaabccasC.as+b3-123IfD.6fDoSIG

58.算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性,这个性质称为

A.可行性B.有穷性C.正确性D.确定性

59.设intx=7,则~x的值是()。

A.-8B.-7C.-1D.1

60.有以下程序structSTU{charname[10]intnum;voidf1(structSTUc){structSTUb={"LiSiGuo",2042};c=b;}voidf2(structSTU*c){structSTUb={"SunDan",2044);*c=b;}main(){structSTUa={"YangSan",2041},b={"WangYin",2043};f1(a);f2(&b);printf("%d%d\n",a.num,b.num);}执行后输出结果是

A.20412044B.20412043C.20422044D.20422043

四、选择题(20题)61.

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

A.确认测试

B.集成测试

C.验证测试

D.验收测试

63.

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

A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组

B.在c语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数

65.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

66.

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

A)C语言是高级语言

B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C)C语言产生的目标程序后缀名为OBJ

D)C语言中的函数不可以单独进行编译

68.

有以下程序:

#include<stdio.h>

main

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break:

else

i--;

}

i+=11:

a+=i:

}

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

}

程序的输出结果是()。

A.62B.63C.33D.32

69.在面向对象方法中,不属于“对象”基本特点的是A.一致性B.分类性C.多态性D.标识唯一性

70.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

71.下面函数的功能是()。

intfunc(char*x)

{char*y=x;

while(*y++);

return(y-x-1);

}

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串x复制到字符串y

D.将字符串x连接到字符串y后面

72.

73.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

74.c源程序中不能表示的数制是()。

A.二进制B.八进制C.十进制D.十六进制

75.

76.

77.

78.

79.下列特征中不是面向对象方法的主要特征的是()。

A.多态性B.继承C.封装性D.模块化

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是逐个比较str1,str2两个字符串对应位置中的字符,把比ASCⅡ值大或相等的字符依次存放到str数组中,形成一个新的字符串。

例如,str1中的字符串为fshADfg,str2中的字符串为sdAEdi,则str中的字符串应为sshEdig。

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

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

试题程序:

六、程序设计题(1题)82.请编一个函数fun(char*str),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.C

3.A

4.B

5.A

6.D

7.A

8.A解析:本题考核软件维护的概念.维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段,在软件交付使用后,还需要进行维护。软件维护通常有以下四类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。综上所述,本题的正确答案是A,其余选项的说法错误。

9.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。

10.A顺序结构、选择结构、循环结构是3种基本结构,由3种基本结构构成的程序称为结构化程序,由3种基本结构组成的算法可以解决任何复杂的问题,选项A错误。本题答案为A选项。

11.A

12.A分块查找是折半查找和顺序查找的一种改进方法,分块查找要求索引表是有序的,对块内节点没有排序要求,因此查找较快,且插入和删除操作也比较方便。

13.CC程序中函数可以在说明或定义时给一个或多个参数指定默认值,但是不能在函数说明定义时同时指定默认参数,默认参数值应该在函数名第一次出现时指定。

14.C

15.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:

#define宏名(形参表)字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

16.D

17.B所谓常量,是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项A是字符串,需要使用双引号;选项C不是合法的常量形式;选项D为实型常量中的指数形式,但指数形式e(E)之前必须是数字,之后必须为整数。故本题答案为B选项。

18.A

19.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

20.A变量m、n的数据类型未知,但题目中已定义并赋初值。选项B的语句缺少分号结尾。选项C,强制转化使用错误。选项D的“m*n”只能用作表达式的右值,不能作为左值。故本题答案为A选项。

21.#include<alloc.h>structstudentptr[i]->num==Ofree(ptr[i])#include<alloc.h>\r\nstructstudent\r\nptr[i]->num==O\r\nfree(ptr[i])

22.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

23.p!=NULLcount++(*p).next

24.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制j文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式:);

关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中fp为文件指针。

25.QTHRGQTHRG解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。

26.77解析:本题综合考查带参数的宏以及三目运算符的计算方法。三目运算符的一般形式是:<表达式1>?<表达式2>:<表达式3>。“?:”运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值,并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值,并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为7>6?7:6*10,即t=7>6?7:60,其值为t=7。

27.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与for语句一起求一个整数的阶乘。

28.3535解析:函数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。

29.23

30.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

31.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。

32.链式存储和顺序存储链式存储和顺序存储

33.操作码操作码

34.66解析:本题变量z的值应为最后一次给它赋的值,且最后一次for循环使prt指向a[2]

35.12341234解析:在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。

36.2222解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]…b[9]的值相加,结果为22。

37.159261037114812159\r\n2610\r\n3711\r\n4812解析:程序的功能是将一个二维数组的行和列元素互换,存到另一个二维数组中。

38.n/2性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为E=1/(n+1)(n-i+1)=n/2。

39.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系表达式(*ptr+y)<x)?*(ptr+y):x的值,再赋给变量z。当y=0时,*(ptr+y)=2,而x=8,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=2,所以z=2;当y-1时,*(ptr+y)=4,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=4,所以z=4;当y=2时,*(ptr+y)=6,(*(ptr+y)<x)条件为真,则整个条件表达式的值为*(ptr+y)=6,所以z=6;循环结束。因此输出z的结果为6。

40.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

41.D解析:C语言规定,在定义数组时数组名后的方括号中必须是常量表达式,不能包含变量。因此,选项D中用变量n来定义数组的大小是错误的。故应该选择D。

42.D解析:p指向的a的首地址,由于C语言是行优先存储的,一维数组p就依次存放了a中从第0行到第2行的所有元素,因此a[1][i]就对应了p[3]~p[5]。

43.D解析:每个C程序有且只有一个主函数(main),且程序必须从main()函数开始执行。别外main()函数可以放在程序中的任意位置。

44.C

45.A左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如,a<<4是把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。

46.A解析:耦合度是对模块间互相连接的紧密程度的度量;内聚度是对一个模块内部各个元素间彼此结合的紧密程度的度量。

47.D解析:本题考查两个知识点:①C语言用'\\n'这个字符常量表示换行;②函数getchar()的作用是从终端输入一个字符,当遇到换行时结束输入。

48.C解析:C语言中可以同时定义多个变量,但变量之间必须用“,”隔开,显然,选项A中少了一个逗号“,”,故选项A不正确;选项B中定义变量时用了连续的赋值语句,这在定义变量是不正确的,故选项B不正确:选项D定义了一个float型指针a,然后定义了一个float型变量b,并。让这个变量的初值为指针变量a的地址,显然这是错误的,除非b是指向float型指针变量的指针。故选项D不正确,所以选项C符合题意。

49.C解析:分析程序可知,该程序实现的功能是对数m,n求其最大公约数。在本题中m与n的值分别为65与14,其最大公约数为1,故其输出结果为m=1。

50.D解析:本题考查的知识点是!和&&的运算规则.本题中,&&左边的表达式!(x+y)为!(3+7),结果为假,即为0。再加上2,然后减一,相当于0+5-1=4。左边等于4,&&右边的表达式y+z/2相当于4+5/2为6,所以整个表达式相当于4&&6为真,即为1,所以选项D正确。

51.B解析:预处理命令行可以出现在C源程序的任何位置,故选项A不正确。#include<stdio.h>预处理命令行的意思是将stdio.h头文件插入源程序中该行命令所在的位置,表示我们将在后续行中用到stdio.h头文件中定义的函数或类型,若程序中没有用到这些函数或类型就可以不用包含此头文件,故选项C不正确。C提供的预处理功能主要有:宏定义、文件包含和条件编译三种功能,故选项D不正确。在C语言中,预处理命令行都以”#”开头,故应该选择B。

52.B解析:用a+b替代宏H(x)中的参数x,用5替代N,则((N+2)*x)=((5+2)*a=b)=((5+2)*2+3)=17。

53.B解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不合晰问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的内聚性越强,则该模块的模块独立性越强。而内聚性是信息隐蔽和局部化概念的自然扩长。

54.A解析:本题考核的知识点是数组名作为函数参数的应用.在malii()函数中定义了一个变量x,以及一个有9个元素的数组a,并且每个元素分别赋初值为1、2、3、4、5、6、7、8和9.执行函数调用f(a,3,7),把a的首地址赋给形参b,把3和7分别赋给形参m和n。在f()函数中,for循环执行了2次:第一次,i的值为3,相当于执行7语句“s=s+b[3]”,br3J的值就是a[3]的值4,故s的值变为4;第二次,i值为5,相当于执行了语句“s=s+b[5];”,b[5]的值6,故s的值变为10。把s作为函数值返回并赋值给x。所以,4个选项中A为所选。

55.C解析:统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是1+2+3+4+5+6+7+8+9=25。

56.B解析:需求分析是软件定义时期的最后一个阶段。可以概括为4个方面:①需求获取;②需求分析;⑧编写需求规格说明书;④需求评审。

57.B解析:C语言规定,标识符是由字母、数字或下画线组成,并且它的第一个字符必须是字母或者下画线。

58.D解析:算法中的每一个步骤都必须是有明确意义的,不允许有多义性。算法的这个性质即为算法的确定性。

59.A解析:本题主要考查按位求反运算和C语言中正负数的表示,“0”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个1代表负数,值为8。

60.A解析:本题考核的知识点是结构体类型的综合应用。本题中首先定义了一个结构体类型STU,它由一个字符数组和一个整形变量num组成。然后定义两个函数n和n。其中n是值传递的,n是地址传递的。主函数中定义两个结构体变量a和b并分别赋初值,接着调用函数f1(a),由于函数f1是值传递,故执行该函数后并没有改变a的值,在接着调用函数f2(&b),由于该函数是地址传递,执行该函数后将使变量b的值为{“SunDan”,2044},故函数最后输出的a.num和b.num的值为2041和2044。所以,4个选项中选项A符合题意。

61.D

62.A

63.A

64.D在C语言中,数组元素的个数是确定的,不允许随机变动,数组定义好后,它所能容纳的元素的个数也就确定了,并且同一个数组中所有元素都是同一类型。

65.D解析:本题主要考查左移、右移对数据值的影响,左移n位相当于乘以2的n次幂,右移n位相当于除以2的n次幂。

66.D\r\n

67.DC语言是一种高级语言,用C语言编制成的程序成为源程序,经编译后产生目标程序,后缀名为OBJ,C语言中的函数份为两大类:库函数和用户自定义函数,他们是可以进行单独编译的。

68.D

\n本题考查while循环。当i<20时,进入while循环体,循环体内的for循环实现的功能是i%10==0,也就是说当i值为0或者l0的倍数的时候,跳出循环,执行i+=11;a+=i;,若i值不是10的倍数,则一直执行for循环i--。①当i=0时,执行i+=11;a+=i;,i=11,a=11;②判断i=10时,跳出for循环,执行i+=11;a+=i;,i=21,a=32;③判断i=21>20,不符合题意,结束循环。

\n

69.A对象具有如下特性:标识唯一性、分类性、多态性、封装性、模块独立性。

70.BB。【解析】数据的存储结构分为顺序结构和链式结构,一个数据的逻辑结构可以有多种存储结构。顺序结构中数据元素所占的存储空间是连续的,而链式存储结构中,数据元素所占的存储空间不一定是连续的。数据的存储结构与数据的处理效率密切相关。

71.A首先将x指向的字符串的首地址赋给y,然后进行扫描,知道遇到结束标志0,y-x-1的意思就是求字符串的长度,因为y指向字符串的最后一个字符的下一位,而x指向字符的首地址。

72.A

73.B

\n本题主要考查结构指针:P=&data,访问结构体的成员。它可以通过结构变量访问,即data,可以用等价的指针形式:(*p).a和P->a来访问结构体变量中的成员。

\n

74.AA。【解析】C语言源程序不能表示八进制,在C语言中,所有的数值型常量都带有符号,所以整型数量只区别整型和长整型两种形式,整型常量和长整型常量均可用十进制、二进制、十六进制3种形式表示,故A不正确。

75.D

76.C

77.C

78.D

79.DD。【解析】面向对象设计方法与面向过程设计方法有本质的不同,其基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。其特点包括:分类性、多态性、封装性、模块独立性、继承和多态性等。模块化是结构化程序设计的特点。

80.C

81.

【解析】题目中要求将ASCIl码值较大的字符放到新的字符串中,因此if的条件判断语句“if(*p>=*q)”应改为“if(*p<=*q)”;在C语言中,每一条语句的结束是以“;”来标识的,因此k++后应该加上分号。

82.

【解析】在fun()函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。

2021年宁夏回族自治区银川市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下一维数组a正确的定义是()

A.inta(5)B.intn=5,a[n]C.inta[SZ]其中SZ为符号常量D.inta{5}

2.在JavaScript语言中,要定义局部变量则可以()。

A.由关键字private在函数内定义

B.由关键字private在函数外定义

C.由var在函数内定义

D.由关键字var在函数外定义

3.

4.有如下定义:inta[5],*p;p=a;则下列描述错误的是()。

A.表达式p=p+1合法的B.表达式a=a+1是合法的C.表达式p-a是合法的D.表达式a+2是合法的

5.当一个函数无返回值时,定义它的函数类型应是()。

A.voidB.intC.任意D.无

6.

7.求2n个数中的最大值和最小值,最少的比较次数是()

A.4n/3B.2n-2C.3n-2D.3n/2

8.下列叙述中正确的足

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

9.下列关于字符串的说法中错误的是

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

B.'\0'作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入'\0'

D.在C语言中,字符串常量隐含处理成以'\0'结尾

10.以下说法错误的是()。

A.由3种基本结构组成的结构化程序不能解决过于复杂的问题

B.由3种基本结构组成的结构化程序能解决一些简单的问题

C.由3种基本结构组成的结构化程序能解决递归问题

D.由3种基本结构组成的结构化程序能解决数学上有解析解的问题

11.

12.查找较快,且插入和删除操作也比较方便的查找方法是

A.分块查找B.二分查找C.顺序查找D.折半查找

13.在C++中,一个函数带有参数说明时,则参数的默认值应该在()中给出。A.函数定义B.函数声明C.函数定义或声明D.函数调用

14.

15.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}

A.19B.17C.15D.12

16.

17.以下选项中合法的C语言常量是()。

A.‘C-STR’B.2014.1C.”\1.0D.2EK

18.当接受用户输入的含有空格的字符串时,应使用()函数。

A.gets()B.getchar()C.scanf()D.printf()

19.若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,则对a数组元素不正确的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

20.若变量已正确定义并赋初值,以下合法的赋值语句是()。

A.k=(m==n);B.k=-m-nC.k=int(m+n);D.k=m*n=1;

二、2.填空题(20题)21.输出若干学生3门课程的成绩。

#include<stdio.h>

【】

structstudent

{intnum;

floatscore[3];

}

main()

{inti=0,n;

floata[3];

【】*ptr[200];

printf("请输入学生学号和3门课成绩,学号为0表示数据输入结束\n");

do

{ptr[i]=(structstudent*)malloc(sizeof(structstudent));

scanf("%d%f%f%f",&ptr[i]->num,&a[O],&a[1],&a[2]);

ptr[i]->score[O]=a[O];

ptr[i]->score[1]=a[1];

ptr[i]->score[2]=a[2];

if(【】)break;

i++;

}while(1);

n=i-1;

【】;

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

printf("%-6d%.1f%.1f%.1f\n",ptr[i]->num,ptr[i]->score[0],

ptr[i]->score[1],ptr[i]->score[2]);}

22.以下程序的运行结果是【】。

#defineMAX(a,b)(a>b?a:b)+1

main()

{inti=6,j=8,k;

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

}

23.以下程序段用以统计链表中元素的个数。其中first指向链表第一个结点,count用来统计结点个数。请填空。

structlink

{chardata;

structlink*next;

}

structlink*p,*first;

|

intcount=0;

p=first;

while(【】)

{

【】;

p=【】;

}

24.以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。

FILE*myf;longf1;

myf=【】("test.t","rb");

fscek(myf,(),SEEK_END);f1+ftell(myf);

fclose(myf);

printf("%1d\n",f1);

25.设有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序运行后,从键盘上输入(<CR>代表回车符):DEF<CR>BADEF<CR>QTHRG<CR>,则程

序的输出结果是______。

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

#include<stdio.h>

#defineMAX(x,y)(x),(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

27.以下程序输出的最后个值是【】

intff(intn)

{staticintf=1;

f=f*n

returnf;

}

main()

{inti;

for(i=1;i<=5:i++)printf("%d、n",ff(i));}

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

#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);

}

29.有以下程序#include<stdio.h>typedefstruct{intnum;doubles;}REC;voidfunl(REC*x){x->num=23;x->s=88.5;}voidmain(){RECa={16,90.0};fun1(&A);printf("%d\n",a.num);}程序运行后的输出结果是()。

30.数据流图的类型有【】和事务型。

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

#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);}

32.栈和队列通常采用的存储结构是【】。

33.计算机指令是由【】和地址码组成的。

34.下面程序的输出是【】。

main()

{inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)z=(*(ptr+y)<x)?*(prt+y):x;

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

}

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

inta=1234;

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

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

voidreverse(inta[],intn)

{inti,t;

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

{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

37.以下程序的运行结果为【】。

main()

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

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

for(j=0;j<4;j++)

b[j][i]=a[i][j];

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

{for(j=0;j<3;j++)

printf("%-3d",b[i][j]);

printf("\n");

}

}

38.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。

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

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

40.在面向对象方法中,类之间共享属性和方法的机制称为______。

三、1.选择题(20题)41.若要求定义具有10个血型元素的一维数组a,则以下定义语句中错误的是()。

A.#definmeN10inta[N];

B.#definen5inta[2*n];

C.inta[5+5];

D.intn=10,a[n];

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

A.012B.123C.234D.345

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

A.main函数必须放在C程序的最后面

B.main函数必须放在C程序的最前面

C.main函数可以放在C程序的中间部分,但在执行C程序时是从程序开头执行的

D.main函数可以放在C程序的中间部分,但在执行C程序时是从main函数开始的

44.下列程序的输出结果是______。main(){intn;(n=6*4,n+6),n*2;printf("n=%d\n",n);}

A.22B.23C.24D.25

45.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2

B.操作数除以2

C.操作数除以4

D.操作数乘以4

46.两个或两个以上的模块之间关联的紧密程度称为______。A.耦合度B.内聚度C.复杂度D.数据传输特性

47.若变量已正确定义,下列正确的程序段是()。

A.while(ch=getchar()=='\N')putchar(ch);

B.while((ch=getchar())=='\n')putchar(ch);

C.while((ch=getchar())!='\N')putchar(ch);

D.while((ch=getchar())!='\n')putchar(ch);

48.以下定义语句中正确的是()。

A.chara='A'b='B';

B.floata=b=l0.0;

C.inta=l0,*b=&a;

D.float*a,b=&a;

49.运行以下程序后,如果从键盘上输入6514<回车>,则输出结果为______。main(){intm,n;printf("Enterm,n:");scanf("%d%d",&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf("m=%d\n",m);}

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

50.已有定义:intx=3,y=4,z=5;,则表达式!(x+y)+z-1&&y+z/2的值是

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

51.以下叙述中正确的是______。A.预处理命令行必须位于C源程序的起始位置

B.在C语言中,预处理命令行都以"#"开头

C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>

D.C语言的预处理不能实现宏定义和条件编译的功能

52.执行下列程序的结果是()。#defineN5#defineH(x)((N+2)*x)main(){inta=2,b=3,C;c=H(a+b);printf("%d",c);}

A.15B.17C.23D.35

53.信息隐蔽的概念与下述______概念直接相关。

A.软件结构定义B.模块独立性C.模块类型划分D.模拟耦合度

54.以下程序的输出结果是f(intb[],intm,intn){inti,s=0;for(i=m;i<n;i=i+2)s=s+b[i];returns;}main(){intx,a[]={1,2,3,4,5,6,7,8,9};x=f(a,3,7);printf("%d\n",x);}

A.10B.18C.8D.15

55.有以下程序

main()

{inti,s=0,t[]={l,2,3,4,5,6,7,8,9};

for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}

程序执行后的输出结果是

A.45B.20C.25D.36

56.软件需求分析阶段的工作,可以分为4个方面:需求获取、需求分析、编写需求规格说明书以及()。

A.阶段性报告B.需求评审C.总结D.都不正确

57.可以在C语言程序中用做用户标识符的一组标识符是()。

A.void123BBNB.aaabccasC.as+b3-123IfD.6fDoSIG

58.算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性,这个性质称为

A.可行性B.有穷性C.正确性D.确定性

59.设intx=7,则~x的值是()。

A.-8B.-7C.-1D.1

60.有以下程序structSTU{charname[10]intnum;voidf1(structSTUc){structSTUb={"LiSiGuo",2042};c=b;}voidf2(structSTU*c){structSTUb={"SunDan",2044);*c=b;}main(){structSTUa={"YangSan",2041},b={"WangYin",2043};f1(a);f2(&b);printf("%d%d\n",a.num,b.num);}执行后输出结果是

A.20412044B.20412043C.20422044D.20422043

四、选择题(20题)61.

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

A.确认测试

B.集成测试

C.验证测试

D.验收测试

63.

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

A.在C语言中,可以使用动态内存分配技术定义元素个数可变的数组

B.在c语言中,数组元素的个数可以不确定,允许随机变动

C.在C语言中,数组元素的数据类型可以不一致

D.在C语言中,定义一个数组后.就确定了它所容纳的元素的个数

65.在位运算中,操作数每左移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

66.

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

A)C语言是高级语言

B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令

C)C语言产生的目标程序后缀名为OBJ

D)C语言中的函数不可以单独进行编译

68.

有以下程序:

#include<stdio.h>

main

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break:

else

i--;

}

i+=11:

a+=i:

}

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

}

程序的输出结果是()。

A.62B.63C.33D.32

69.在面向对象方法中,不属于“对象”基本特点的是A.一致性B.分类性C.多态性D.标识唯一性

70.下列叙述中错误的是()。

A.一种数据的逻辑结构可以有多种存储结构

B.数据的存储结构与数据的处理效率无关

C.数据的存储结构与数据的处理效率密切相关

D.数据的存储结构在计算机中所占的空间不一定是连续的

71.下面函数的功能是()。

intfunc(char*x)

{char*y=x;

while(*y++);

return(y-x-1);

}

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串x复制到字符串y

D.将字符串x连接到字符串y后面

72.

73.

已知有如下结构体:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,则对data的成员a引用正确的是()。

A.(*p).data.aB.(*p).a;C.p->data.aD.p.data.a

74.c源程序中不能表示的数制是()。

A.二进制B.八进制C.十进制D.十六进制

75.

76.

77.

78.

79.下列特征中不是面向对象方法的主要特征的是()。

A.多态性B.继承C.封装性D.模块化

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是逐个比较str1,str2两个字符串对应位置中的字符,把比ASCⅡ值大或相等的字符依次存放到str数组中,形成一个新的字符串。

例如,str1中的字符串为fshADfg,str2中的字符串为sdAEdi,则str中的字符串应为sshEdig。

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

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

试题程序:

六、程序设计题(1题)82.请编一个函数fun(char*str),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为asdfg,则调用该函数后,串中的内容为gfdsa。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.C

2.C

3.A

4.B

5.A

6.D

7.A

8.A解析:本题考核软件维护的概念.维护是软件生命周期的最后一个阶段,也是持续时间最长、付出代价最大的阶段,在软件交付使用后,还需要进行维护。软件维护通常有以下四类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。综上所述,本题的正确答案是A,其余选项的说法错误。

9.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。

10.A顺序结构、选择结构、循环结构是3种基本结构,由3种基本结构构成的程序称为结构化程序,由3种基本结构组成的算法可以解决任何复杂的问题,选项A错误。本题答案为A选项。

11.A

12.A分块查找是折半查找和顺序查找的一种改进方法,分块查找要求索引表是有序的,对块内节点没有排序要求,因此查找较快,且插入和删除操作也比较方便。

13.CC程序中函数可以在说明或定义时给一个或多个参数指定默认值,但是不能在函数说明定义时同时指定默认参数,默认参数值应该在函数名第一次出现时指定。

14.C

15.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:

#define宏名(形参表)字符串

本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。

16.D

17.B所谓常量,是指在程序运行的过程中,其值不能被改变的量。在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。选项A是字符串,需要使用双引号;选项C不是合法的常量形式;选项D为实型常量中的指数形式,但指数形式e(E)之前必须是数字,之后必须为整数。故本题答案为B选项。

18.A

19.D解析:通常,引用一个数组元素可以用下标法,如a[P-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出了数组范围,注意,数组的下标是从0开始的。

20.A变量m、n的数据类型未知,但题目中已定义并赋初值。选项B的语句缺少分号结尾。选项C,强制转化使用错误。选项D的“m*n”只能用作表达式的右值,不能作为左值。故本题答案为A选项。

21.#include<alloc.h>structstudentptr[i]->num==Ofree(ptr[i])#include<alloc.h>\r\nstructstudent\r\nptr[i]->num==O\r\nfree(ptr[i])

22.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。

23.p!=NULLcount++(*p).next

24.fopenfopen解析:C语言中的文件分为:ASCII文件与二进制j文件。文件在使用前打开,使用后要关闭。打开文件的函数为:fopen(),调用形式为:fp=fopen('文件名','使用文件方式:);

关闭文件的函数为:fclose(),调用形式为:fclose(fp);其中fp为文件指针。

25.QTHRGQTHRG解析:函数strcmp(t,s)用来比较t和s所指字符串的大小,若t>s,则函数值大于0;若t=s,则函数值等于0:若t<s,则函数值小于0。函数strcpy(t,s)的功能是,把字符数组s所指字符串的内容复制到字符数组t所指存储空间中。本题中,t[10]='CDEF'。第一次循环,s[10]='BADEF',if语句的控制条件strcmp(t,s)<0不成立,接着执行第二次循环,s='QTHRG',if语句的控制条件strcmp(t,s)<0成立,执行下列的语句,将字符数组s所指字符串的内容复制到字符数组t所指存储空间中,然后输出字符数组t。

26.77解析:本题综合考查带参数的宏以及三目运算符的计算方法。三目运算符的一般形式是:<表达式1>?<表达式2>:<表达式3>。“?:”运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值,并把它作为整个表达式的值;如果表达式1的值为假,则求表达式3的值,并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为7>6?7:6*10,即t=7>6?7:60,其值为t=7。

27.120120解析:静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

静态变量的类型说明符是static,静态局部变量属于静态存储方式,它具有以下特点:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。

②对静态局部变量是在编译时赋初值的,即只赋初值—次,在程序运行时它已有初值。以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值。

③如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)。(注意:C语言中非静态变量在定义时,系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。本题中函数的功能是:与for语句一起求一个整数的阶乘。

28.3535解析:函数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。

29.23

30.变换型典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务。

31.44解析:本题考查了静态存储类别的局部变量的特点。静态存储类别

温馨提示

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

评论

0/150

提交评论