2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

2.有以下函数:intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

3.

4.具有n个结点的连通图至少有()条边。

A.n-1B.nC.n(n-1)/2D.2n

5.关于结构化程序设计原则和方法的描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOT0语句

D.语言中若没有控制结构,应该采用前后一致的方法来模拟

6.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。

A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针

7.

8.有以下程序:

程序运行后的输出结果是()。A.1B.11C.7D.9

9.以下能正确定义一维数组的选项是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

10.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

11.若有定义语句:“intyear=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是()。

A.*p+=1;B.(*p)++;C.++(*p);D.*++P

12.以下非法的赋值语句是

A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;

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

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

14.

15.一个递归算法必须包括()。

A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分

16.若有运算符:>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列次序为()。

A.*=<<>%sizeof

B.<<*=>%sizeof

C.%=><<sizeof%

D.*=><<%sizeof

17.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

18.层次型、网状型和关系型数据库划分原则是()。

A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

19.请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若运行时从键盘上输入9876543210,则上面程序的输出结果是______。

A.a=98,b=765,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000

D.a=98,b=765.0,c=4321.0

20.已知char**s,下面正确的语句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

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

main()

{intarr[10],i,k=0;

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

arr[i=i;]

for(1;i<4;i++)

k+=arr[i]+i;

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

23.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【】link;};

24.一般来说,算法可以用顺序、选择和______三种基本控制结构组合而成。

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

26.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

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

}

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

#include<stdio.h>

fun()

{staticinta=O;

a+=3;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

28.若有以下程序:

main()

{chara;

a='H'-'A'+'0';

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

}

执行后的输出结果是【】。

29.设有定义:floatx=123.4567;,则执行以下语句后的输出结果是()。printf("%f\n",(int)(x*100+0.5)/100.0);

30.有以下定义和语句,则sizeof(a.share)的值是()。

structdate

{unsignedintday;

unsignedintmouth;

unsignedintyear;

union{intshare1;

floatshare2;

}share;

}a;

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

32.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

33.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

34.Jackson方法是一种面向【】的结构化方法。

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

36.本程序用改进冒泡法对数组a[n]的元素从小到大排序,请在程序空白处填空。

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

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

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

39.函数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;}

40.在关系数据库中把数据表示成二维表,每一个二维表称为【】。

三、1.选择题(20题)41.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x>10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是

A.0.000000B.0.250000C.0.500000D.1.000000

42.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

43.以下能正确进行字符串赋值操作的是______。

A.char*sss;*sss="hello!";

B.char*sss;sss="hello!";

C.charsss[8];sss="hello!";

D.charsss[8];*sss="hello!";

44.有以下程序:main(){charnn[4][3]={"12","34","56","78"),*pn[4];intk,s=0;for(k=0;k<4;k++)pn[k)=nn[k];for(k=1;k<4;k+=2)s=s*10+pn[k][1]-'0';printf("%d\n",s);}程序的输出结果是()

A.48B.26C.3478D.576

45.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码

46.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序运行后的输出结果是

A.2B.3C.43D.44

47.有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}

return(n);

}

main()

{chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

}

程序的运行结果是

A.9B.61490C.61D.5

48.若已包括头文件<stdio.h>和<string.h>,运行下列程序段时输出结果是()。inti=0;chars1[10]="ABCD",s2[10]="EFG";strcat(s1,s2);while(s2[i++]!='\0')s2[i]=s1[i];puts(s2);

A.ABCB.ABCDEFC.EBCDEFGD.CBD

49.设有定义:“longx=123450L;”,则以下能够正确输出变量x的是()。

A.printf("x=%d\n",x);

B.printf("x=%id\a",x);

C.printf("x=%dL\n”,x);

D.printf("x=%ld\n",x);

50.以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}输入数据如下:(此处<CR>代表回车符)aaa<CR>bbb<CR>

A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb

51.在下列选项中,不是一个算法一般应该具有的基本特征的是()。

A.确定性B.可行性C.无穷性D.拥有足够的情报

52.已知p为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

53.main()

{inta=4,b=5,c;

ifa<B)

{c=a*b;printf("%d,%d,%d\n",b,a,c);}

else

{c=b/a;printf("%d,%d,%d\n",b,a,c);}

}

A.4,5,12B.20C.5,4,20D.12

54.设有定义语句int(*f)(int);,则以下叙述正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

55.下面程序的输出结果是______。main(){inta[]={1,2,3,4,5,6,7,8,9,0,},*p;p=a;printf("%d\n",*p+9);}

A.0B.1C.10D.9

56.有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);print("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()。

A.m=123n=456P=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

57.下列判断正确的是()。

A.chara="ABCD";等价于char*a;*a="ABCD";

B.charstr[10]=ABCD"};等价于charstr[10];str[]={"ABCD"};

C.char*s="ABCD";等价于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD";等价于charc[5]=d[5]="ABCD";

58.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-=a*A));}

A.-6B.1C.2D.-12

59.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

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

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

四、选择题(20题)61.有以下程序程序的运行结果是()。

A.123B.12300C.1D.321

62.

63.有以下程序:

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

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

64.下列C语言用户标识符中,不属于合法标识符的是

A.ad_intB.bb_7C._dd7D.int

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

A.C语言源程序经编译后生成后缀为.obj的目标程序

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中

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

66.

67.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

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

A.学生成绩管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

69.在执行下述程序时,若从键盘输入6和8,则结果为()。

A.36B.64C.48D.以上都不对

70.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

71.下列合法的声明语句是()。

A.intabc=50;

B.doubleint=3+5e2.5;

C.longdo=1L;

D.float3asd=3e一3;

72.与“y=(x>0?1:x<0?-1:0)”;的功能相同的if语句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

73.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125B.n/2C.nD.n+1

74.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于捅入和删除操作D.数据元素的物理顺序与逻辑顺序相同

75.已知

则以下叙述正确的是()。

A.循环控制表达式不合法B.循环控制表达式的值为0C.循环控制表达式的值为lD.以上说法都不对

76.

77.用树形结构来表示实体之间联系的模型称为

A.层次模型B.关系模型C.网状模型D.数据模型

78.

79.

80.

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:求出如下分数序列的前n项之和,结果通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.编写函数proc(),它的功能是求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

例如,m为100时,函数值应为s=7.416198。

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

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

试题程序:

参考答案

1.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

2.C本题中由循环条件可知遇到‘\\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

3.D

4.A

5.C结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。其他三项为结构化程序设计的原则。

6.B由题意可知:使用typedef将类型“struct{intx,y;}*”重命名为“USER”,所以函数fun的返回类型为“struct{intx,y;}*”,即指向结构体类型的指针。故本题答案为B选项。

7.B

8.D题干中,函数fun的功能是将二维数组p的行下标为1、列下标为1的元素(p[1][1])的值赋给二维地址s指向的*s所指向的存储单元。main函数中定义了整型指针p,动态分配了整型长度的内存空间,调用函数fun将数组元素a[1][1],即9赋给p所指向的空间。本题答案为D选项。

9.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

10.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。

11.D

12.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量,故选项C错误;选项D中为复合赋值表达式,正确.所以应当选择C。

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

14.B

15.B

16.D解析:本题主要考查算术运算的优先级。顺序如下:

[*]

注:*=、>、<<、%、sizeof的优先级依次递增。

17.D调用缸函数后,实参数组名sl传给形参指针P,P也指向数组sl。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。

18.D层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。

19.C解析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

20.C

21.8181解析:带参数的宏定义是按#define命令行中指定的字符串从左到右进行替换。本题替换后得到:4*i+j*i+j+1,代入i,j的值得81。

22.1212解析:本题通过第—个for循环将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,

具体分析如下:

i+1:k=0+arr[1]+1即k=2;

i=2:k=2+arr[2]+2即k=6;

i=3:k=6+arr[3]+3即k=12;

23.structnode*structnode*解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。

24.循环循环解析:算法一般由顺序,选择和循环三种基本控制结构组合而成。

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

26.!=returnj!=,returnj解析:本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a[j-1]!=a[i],其中a[j-1]就是新数组中的最后一个元素,若条件成立则表示出现了不同的值,所以a[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。

27.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完子函数之后,变量a所做的改变都要保存。

28.77解析:本题考查英文字母ASCII码值的概念。字符参与运算的值是其对应的ASCII码,字符H的ASCII码为72,A的ASCII码为65,0的ASCII码为48,所以a=72-65+48=55,ASCII码值为55的字符是7。

29.460000

30.4

31.11231123解析:在主函数中第一次调用func子函数时,m=0,i=2,i=i+m+1=3,m=i+a+b=3+5+3=11。因为在子函数中将m和i定义成了static类型,所以在子函数中对m和i进行的改变,在下一次调用子函数时能进行保存,所以第二次调用子函数时,m=11,i==3,则i=i+m+1=15,m=i+a+b=15+5+3=23。

32.调试调试

33.20

34.数据结构数据结构解析:Jackson方法是—‘种面向数据结构的结构化方法。

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.n-1jn-1\r\nj解析:此题采用了do…while循环内嵌for循环的双层循环结构来实现了数组元素的排序。数组元素通过首地址和数组下标的方式来引用的。

37.3691236912解析:本题考查最基本的for循环:for(cc=1;cc<5;cc++)规定循环次数为4次,每次a+=3即每次a的值增3,但因为fun函数中变量a为static类型,所以每次调用完于函数之后,变量a所做的改变都要保存。

38.*2*4*6*8**2*4*6*8*解析:程序中定义了一个字符数组a,并初始化为123456789,接着定义了一个指针p并让它指向数组a,紧接着执行了一个while循环,此循环的作用是:当i为偶数时,将“*”赋给a[i],p指向数组末尾,循环结束,此时数组中a[0]、a[2]、a[4]、a[6]和a[8]的值都为“*”,所以最后调用puts()函数输出的a的值为*2*4*6*8*

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

40.关系或一个关系关系或一个关系解析:在关系数据库中,把数据表示成二维表,而一个二维表就是一个关系。

41.D

42.B解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a=0,则!a成立,执行下列的语句,x--,得x=11:第二个if语句,判断条件,发现c=o,则条件不成立,执行下列的else语句,得x=4。

43.B

44.A

45.A解析:关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为表中的一个属性,对应表中的一个字段;在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。

46.A解析:本题考核的知识点是if-else语句的程序分析。我们首先看程序中if-else的匹配,由于C语言中规定else总是与最近的if搭配,因此程序中else与第二个订搭配,即该if-else语句为第一个if语句的执行部分,接着判断第一个if后面括号里的表达式的值“a>b”为假('3>4'为假),因此不执行后面if-else语句,程序将执行下面的输出语句输出d,而d一直未被改变故为原来的值2,所以,4个选项中选项A符合题意。

47.C解析:在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。

48.C解析:strcat(s1,s2)把s2连接到s1的后面,s1=ABCDEFG,执行while(s2[i++]!='\\0')后i的值变为1,往后执行s2[i]=s1[i]时是从把s1的第二位给s2的第二位开始,把s1赋给s2。

49.D解析:C语言规定,输出long型数值的格式符为%1d。

50.B解析:scanf是标准输入函数,在输入字符串aaa时,实际的内容为“aaa\\0”,“\\0”是由系统自动加入的:gets的功能是从终端读入一行字符,即一直读到换行符为止,并由系统自动以“/0”代替换行符。

51.C解析:作为一个算法,一般应具有的基本特征有:可行性、确定性、有穷性、拥有足够的情报。

52.D

53.C解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行下列的复合语句,得c=a*b=20,b、a的值不变。

54.B本题考查的是指向函数的指针。语句“int(*f)(int);”是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。故答案选B)。

55.A解析:p指向a[0],则p+9指向a[9],*(p+9)=a[9]=0。

56.A解析:本题若想使变量m的值为123、n为456、p为789,则应该输入的字符串为:用这三个数据按m、n、p出现在scaaf()函数中的位置顺序替换掉scant()函数格式控制串中的格式控制符后所得到的格式控制串,即'm=123n=456p=789'。所以,4个选项十选项A符合题意。

57.D解析:a='ABCD'书写错误,因为“=”左边不能出现常量;数组名s是代表s数组首地址的地址常量,而不是变量;字符串只有在定义时维数可以省略。

58.D解析:赋值运算符的结合方向是自右至左,所以表达式a+=a-=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a-+(-6),即a=(-6)+(-6)=-12。

59.D各种排序方法中最坏情况下需要比较的次数分别为:冒泡排序n(n-1)/2、快速排序n(n-1)/2、简单插入排序n(n-1)/2、希尔排序0(n1.5)、简单选择排序n(n-1)/2、堆排序O(nlog2n)

60.C解析:在位运算中,操作数每右移两位,相当于在操作数的左侧添0,最右面的两位被移出,即操作数除以4。

61.A程序首先将数组a[10]中的元素l、2、3分别写入了文件dl.dat文件中,然后又将dl.dat文件中的数据l23,整体写入了变量n的空间中,因此打印n时输出的数据为123,选项A)正确。

62.D

63.B结构体tt是一个递归定义,类似于链表,

通过成员变量Y链接起来。P=s+1指向s[1]。P一>Y指向8[2],但现在P->Y=s,因此s[2]=s[O],此时8[]={1.0,2.0,1.0},而P在s[1]位置,因此P_>x为2,P=P_>Y,P指向s[2],因此P_>x=1,故打印结果为2,1。答案为B选项。

64.DC语言的标识符主要用来表示常量、变量、函数和类型等的名字,只起到标识作用。标识符由数字、下画线或英文字母构成,可以分为三类:保留字、预定义标识符和用户定义标识符。保留字是指每一个标识符都有其特定的含义,不允许用户把它们当做变量名使用,如if、int、for等。预定义标识符也是一类具有特殊含义的标识符,它们被用做库函数名和预编译命令,如define、include等。用户定义标识符是用户根据自己的需要定义的一类标识符,用于标识变量、符号常量、用户定义函数、类型名和文件指针等。这类标识符主要由英文字母、数字和下画线构成,但开头字符一定是字母或下画线。

题目中选项A、B、C都是合法的用户自定义标识符,选项D为保留字,不属于用户标识符。

65.D并不是源程序中的所有行都参加编译。在条件编译形式下,相关内容只在满足一定条件时才进行编译。选项D)中的非执行语句不在其范围内。

66.B

67.D解析:软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软什开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段.软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。

68.A软件按功能可以分为:应用软件、系统软件、支撑软件。操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件,因此B)、C)、D)都是系统软件,只有A)是应用软件。

69.B本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。

70.A广播/电视是一种单向的、点对多点(面)的以信息传递为主要目的的系统。

71.A标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。B选项int不是表达变量类型的标识符,它不能再用做变量名和函数名。C选项do是C语言的一个关键字。D选项标识符只能以字母或下划线开始。

72.By=(x=)071:x<0?-1:0)中有两个三目运算符,因此按从右到在的顺序运算,可写成y=(x>071:(x<0?-1:0)),故选择8选项。

73.CC。【解析】对线性表进行顺序查找时,从表中的第一个元素开始,将给定的值与表中逐个元素的关键字进行比较,直到两者相符,查找到所要找的元素为止。在最坏情况下,要查找的元素是表的最后一个元素或查找失败,这两种情况都需要将这个元素与表中的所有元素进行比较,因此比较次数为n。

74.C数据的存储结构有顺序存储结构和链式存储结构两种。不同存储结构的数据处理效率不同。由于链表采用链式存储结构,元素的物理顺序并不连续,对于插入和删除无需移动元素,很方便,当查找元素时就需要逐.个元素查找,因此查找的时间相对更长。

75.Cx=1是将X赋值为1,所以循环控制表达式的值为1。判断x是否等于l时,应用x==1,注意”=”与”==”的用法。

76.A

77.A层次模型是最早发展出来的数据库模型。它的基本结构是树形结构,这种结构方式在现实世界中很普遍,如家族结构、行政组织机构,它们自顶向下、层次分明。

78.B

79.C

80.B

81.(1)错误:fun(intn)

正确:doublefun(intn)

(2)错误:s=s+(Double)a/b;

正确:s=s+(double)a/b;

【解析】本题考查函数的定义规则。函数定义的一般形式为类型标识符函数名(形式参数表列){函数体}。fun()函数中,最后返回的是变量s,由变量s的定义可知,返回值是double型,所以fun()函数定义时应明确注明标识符double类型。Double为书写问题,写程序时切记书写格式。

82.

【解析】按照题目中要求求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,需要判断m以内的所有整数是否能同时被5与11整除,首先求出同时能被5与

11整除的所有自然数之和,然后再求和的平方根,最后返回到主函数当中。

2021年江西省赣州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2};};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i);}

A.266B.11C.265D.138

2.有以下函数:intfun(char*x,char*y)intn=0;while((*x==*y)&&*x!=‘\0’)∣x++;y++;n++;∣returnn;函数的功能是()。A.将y所指字符串赋给x所指存储空间

B.查找和y所指字符串中是否有‘\0’

C.统计x和y所指字符串中最前面连续相同的字符个数

D.统计x和y所指字符串中相同的字符个数

3.

4.具有n个结点的连通图至少有()条边。

A.n-1B.nC.n(n-1)/2D.2n

5.关于结构化程序设计原则和方法的描述错误的是()。

A.选用的结构只准许有一个入口和一个出口

B.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现

C.不允许使用GOT0语句

D.语言中若没有控制结构,应该采用前后一致的方法来模拟

6.设有定义:#include<stdio.h>#include<stdlib.h>typedefstruct{intx,y;}T;typedefstruct{intx,y;}*USER;USERfun(){USERp;p=(USER)malloc(sizeof(T));p->x=1;p->y=2;returnp;}函数fun返回值的类型是()。

A.T类型的结构体B.指向结构体类型的指针C.int类型的元素D.int类型的指针

7.

8.有以下程序:

程序运行后的输出结果是()。A.1B.11C.7D.9

9.以下能正确定义一维数组的选项是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

10.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()

11.若有定义语句:“intyear=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是()。

A.*p+=1;B.(*p)++;C.++(*p);D.*++P

12.以下非法的赋值语句是

A.n=(i=2,++i);B.j++;C.++(i+1);D.x=j>0;

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

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

14.

15.一个递归算法必须包括()。

A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分

16.若有运算符:>、*=、<<、%、sizeof,则它们按优先级(由低至高)的正确排列次序为()。

A.*=<<>%sizeof

B.<<*=>%sizeof

C.%=><<sizeof%

D.*=><<%sizeof

17.有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

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

A.abcdEFg!B.AbCdEFg!C.abcdEFG!D.aBcDEFG!

18.层次型、网状型和关系型数据库划分原则是()。

A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式

19.请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c);}若运行时从键盘上输入9876543210,则上面程序的输出结果是______。

A.a=98,b=765,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000,c=4321.000000

D.a=98,b=765.0,c=4321.0

20.已知char**s,下面正确的语句是()。A.A.s="ABCDEF";

B.*s="ABCDEF";

C.**s="ABCDEF";

D.*s='A';

二、2.填空题(20题)21.以下程序运行后的输出结果是【】。

#include<stdio.h>

#defineS(x)4*x*x+1

main()

{inti=6,j=8;

prinff("%d\n",S(i+j));

}

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

main()

{intarr[10],i,k=0;

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

arr[i=i;]

for(1;i<4;i++)

k+=arr[i]+i;

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

23.以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。

structnode

{intinfo;

【】link;};

24.一般来说,算法可以用顺序、选择和______三种基本控制结构组合而成。

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

26.以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

例如,若一维数组中的数据是:

2223445666677899101010

删除后,数组中的内容应该是:

2345678910。

请填空。

#include<stdio.h>

#defineN80

intfun(inta[],intn)

{inti,j=1;

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

if(a[j-1]【】a[i])

a[j++]=a[i];

【】;

}

main()

{inta[N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;

printf("Theoriginaldata:\n");

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

n=fun(a,n);

printf("\nThedataafterdeleted:\n");

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

}

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

#include<stdio.h>

fun()

{staticinta=O;

a+=3;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

28.若有以下程序:

main()

{chara;

a='H'-'A'+'0';

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

}

执行后的输出结果是【】。

29.设有定义:floatx=123.4567;,则执行以下语句后的输出结果是()。printf("%f\n",(int)(x*100+0.5)/100.0);

30.有以下定义和语句,则sizeof(a.share)的值是()。

structdate

{unsignedintday;

unsignedintmouth;

unsignedintyear;

union{intshare1;

floatshare2;

}share;

}a;

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

#include<stdio.h>

func(a,B)

{staticintm=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main0

{intk=5,m=3,p;

p=func(k,m);

printf("%d",p);

p=func(k,m);

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

}

32.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

33.下面程序的输出是()。

main()

{intarr[8],i,k=0;

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

arr[i]=i;

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

k+=arr[i]+i;

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

}

34.Jackson方法是一种面向【】的结构化方法。

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

36.本程序用改进冒泡法对数组a[n]的元素从小到大排序,请在程序空白处填空。

voidbubble(inta[],intn)

{intj,k,jmax,temp;

jmax=【】;

do{

k=0;

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

if(a[j]>a[j+1])

{temp=a[j];a[j]=a[j+1];a[j+1]=temp;k=【】;

jmax=k;

}while(jmax>0);}

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

#include<stdio.h>

fun()

{staticinta=0;

a+=3;printf("%d",A);

}

main()

{intcc;

for(cc=1;cc<5;cc++)fun();

printf("\n");

}

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

main()

{

chara[]="123456789",*p;

inti=0;

p=a;

while(*p)

{

if(i%2==0)

*p='*';

p++;i++;

}

puts(a);

}

39.函数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;}

40.在关系数据库中把数据表示成二维表,每一个二维表称为【】。

三、1.选择题(20题)41.有如下程序main(){floatx=2.0,y;if(x<0.0)y=0.0;elseif(x>10.0)y=1.0/x;elsey=1.0;printf("%f\n",y);}该程序的输出结果是

A.0.000000B.0.250000C.0.500000D.1.000000

42.假定所有变量均已正确说明,下列程序段运行后x的值是()。a=b=c=0;x=12;if(!a)x--;elsex=5:if(c)x=3:elsex=4:A.11B.4C.12D.3

43.以下能正确进行字符串赋值操作的是______。

A.char*sss;*sss="hello!";

B.char*sss;sss="hello!";

C.charsss[8];sss="hello!";

D.charsss[8];*sss="hello!";

44.有以下程序:main(){charnn[4][3]={"12","34","56","78"),*pn[4];intk,s=0;for(k=0;k<4;k++)pn[k)=nn[k];for(k=1;k<4;k+=2)s=s*10+pn[k][1]-'0';printf("%d\n",s);}程序的输出结果是()

A.48B.26C.3478D.576

45.关系表中的每一横行称为一个()。A.元组B.字段C.属性D.码

46.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序运行后的输出结果是

A.2B.3C.43D.44

47.有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}

return(n);

}

main()

{chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

}

程序的运行结果是

A.9B.61490C.61D.5

48.若已包括头文件<stdio.h>和<string.h>,运行下列程序段时输出结果是()。inti=0;chars1[10]="ABCD",s2[10]="EFG";strcat(s1,s2);while(s2[i++]!='\0')s2[i]=s1[i];puts(s2);

A.ABCB.ABCDEFC.EBCDEFGD.CBD

49.设有定义:“longx=123450L;”,则以下能够正确输出变量x的是()。

A.printf("x=%d\n",x);

B.printf("x=%id\a",x);

C.printf("x=%dL\n”,x);

D.printf("x=%ld\n",x);

50.以下程序段的输出结果是______。main(){chars1[10],s2[10],s3[10];scanf("%s",s1);gets(s2);gets(s3);puts(s1);puts(s2);puts(s3);}输入数据如下:(此处<CR>代表回车符)aaa<CR>bbb<CR>

A.aaabbbB.aaabbbC.aaa\0bbb\0D.aaabbb

51.在下列选项中,不是一个算法一般应该具有的基本特征的是()。

A.确定性B.可行性C.无穷性D.拥有足够的情报

52.已知p为指针变量,a为数组名,i为整型变量,下列赋值语句中不正确的是()

A.p=&i;B.p=a;C.p=&a[i];D.p=10;

53.main()

{inta=4,b=5,c;

ifa<B)

{c=a*b;printf("%d,%d,%d\n",b,a,c);}

else

{c=b/a;printf("%d,%d,%d\n",b,a,c);}

}

A.4,5,12B.20C.5,4,20D.12

54.设有定义语句int(*f)(int);,则以下叙述正确的是()。

A.f是基类型为int的指针变量

B.f是指向函数的指针变量,该函数具有一个int类型的形参

C.f是指向int类型一维数组的指针变量

D.f是函数名,该函数的返回值是基类型为int类型的地址

55.下面程序的输出结果是______。main(){inta[]={1,2,3,4,5,6,7,8,9,0,},*p;p=a;printf("%d\n",*p+9);}

A.0B.1C.10D.9

56.有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);print("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是()。

A.m=123n=456P=789

B.m=123n=456p=789

C.m=123,n=456,p=789

D.123456789

57.下列判断正确的是()。

A.chara="ABCD";等价于char*a;*a="ABCD";

B.charstr[10]=ABCD"};等价于charstr[10];str[]={"ABCD"};

C.char*s="ABCD";等价于chars;*s="ABCD";

D.charc[5]="ABCD",d[5]="ABCD";等价于charc[5]=d[5]="ABCD";

58.以下程序的输出结果是______。main(){inta=3;printf("%d\n",(a+=a-=a*A));}

A.-6B.1C.2D.-12

59.对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

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

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

四、选择题(20题)61.有以下程序程序的运行结果是()。

A.123B.12300C.1D.321

62.

63.有以下程序:

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

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

64.下列C语言用户标识符中,不属于合法标识符的是

A.ad_intB.bb_7C._dd7D.int

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

A.C语言源程序经编译后生成后缀为.obj的目标程序

B.C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中

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

66.

67.软件生命周期中所花费用最多的阶段是()。

A.详细设计B.软件编码C.软件测试D.软件维护

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

A.学生成绩管理系统B.C语言编译程序C.UNIX操作系统D.数据库管理系统

69.在执行下述程序时,若从键盘输入6和8,则结果为()。

A.36B.64C.48D.以上都不对

70.下列关于信息系统的叙述中,错误的是()。

A.广播电视是一种双向的、点到多点的信息交互系自

B.网络聊天是一种双向的,以信息交互为主要目的系统

C.电话是一种双向的、点对点的、以信息交互为主要的的系统

D.雷达是一种以感测和识别为主要目的的系统

71.下列合法的声明语句是()。

A.intabc=50;

B.doubleint=3+5e2.5;

C.longdo=1L;

D.float3asd=3e一3;

72.与“y=(x>0?1:x<0?-1:0)”;的功能相同的if语句是()。A.A.if(x>0)y=1;elseif(x<0)y=1;else=""y="0;

B."x="">0)y=1;elseif(x<0)y=-l;else=""y="0;"

C.y="-l"x="">O)y=1;elseif(x=-0)y=0;elsey=-l;

D.y=0;if(x>=0)if(x>=0)y=1;elsey=-l;

73.对长度为n的线性表进行顺序查找,在最坏情况下需要比较的次数为()。

A.125B.n/2C.nD.n+1

74.用链表表示线性表的优点是()。

A.便于随机存取B.花费的存储空间较顺序存储少C.便于捅入和删除操作D.数据元素的物理顺序与逻辑顺序相同

75.已知

则以下叙述正确的是()。

A.循环控制表达式不合法B.循环控制表达式的值为0C.循环控制表达式的值为lD.以上说法都不对

76.

77.用树形结构来表示实体之间联系的模型称为

A.层次模型B.关系模型C.网状模型D.数据模型

78.

79.

80.

五、程序改错题(1题)81.下列给定程序中函数fun()的功能是:求出如下分数序列的前n项之和,结果通过函数值返回。例如,若n=5,则应输出8.391667。请改正程序中的错误,使其得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:

六、程序设计题(1题)82.编写函数proc(),它的功能是求m以内(不包括m)同时能被5与11整除的所有自然数之和的平方根s,并作为函数值返回。

例如,m为100时,函数值应为s=7.416198。

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

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

试题程序:

参考答案

1.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。

2.C本题中由循环条件可知遇到‘\\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。

3.D

4.A

5.C结构化程序设计的原则和方法之一是限制使用GOT0语句,但不是绝对不允许使用G0T0语句。其他三项为结构化程序设计的原则。

6.B由题意可知:使用typedef将类型“struct{intx,y;}*”重命名为“USER”,所以函数fun的返回类型为“struct{intx,y;}*”,即指向结构体类型的指针。故本题答案为B选项。

7.B

8.D题干中,函数fun的功能是将二维数组p的行下标为1、列下标为1的元素(p[1][1])的值赋给二维地址s指向的*s所指向的存储单元。main函数中定义了整型指针p,动态分配了整型长度的内存空间,调用函数fun将数组元素a[1][1],即9赋给p所指向的空间。本题答案为D选项。

9.B解析:选项A)定义的是长度为5的数组元素,但初值有6个元素,所以错误;选项C)不符合数组定义形式,数组名后应加上“[];选项D)的类型说明符错误,应改为char;选项B)中的0,1,2,3,4,5分别表示对应字符的ASCII码,所以正确。

10.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。

11.D

12.C解析:本题考查的知识点是赋值语句的基本知识。在表达式的运算中,双目赋值运算符的格式为“变量二表达式”,单目运算符一般形式为“运算符表达式”或“表达式运算符”。常量和表达式是不能被赋值的。选项A为复合表达式,首先计算(i=2,++i)的值,然后赋值给n,故选项A正确;选项B为简单自加运算,故选项B正确;选项C在表达式++(i+1);中,(i+1)不是变量,该表达式的值为常量,而在++运算中,其运算对象必须为变量

温馨提示

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

评论

0/150

提交评论