2022年福建省泉州市全国计算机等级考试C语言程序设计_第1页
2022年福建省泉州市全国计算机等级考试C语言程序设计_第2页
2022年福建省泉州市全国计算机等级考试C语言程序设计_第3页
2022年福建省泉州市全国计算机等级考试C语言程序设计_第4页
2022年福建省泉州市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

2022年福建省泉州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于C语言源程序的起始位置

C.“include<stdio.h>”必须放在C语言程序的开头

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

3.有以下程序:

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

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

4.当很频繁的对序列中部进行插入和删除操作时,应该选择使用的容器是()

A.vectorB.listC.dequeD.stack

5.以下程序的输出结果是()。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.输出值不定

6.

7.若有以下定义和语句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);则输出结果()

A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定

8.下列选项中与“if(a==1)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a==1){ case0:a=b;break; case1:a++;}

B.switch(a){ case1:a=b;break; default:a++;}

C.switch(a){ default:a++;break; case1:a=b;}

D.switch(a==1){ case1:a=b;break; case0:a++;}

9.在定义inta[5][6];后,数组a中的第10个元素是()。(设a[0][0]为第一个元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

10.以下描述中正确的是

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由d。开始,用while结束,在while(表达式)后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

11.

12.有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;Main(){inta=1,b=2;printf("%4.1f\n",S(a+b));程序运行后的输出结果是()。A.7.5B.31.5C.程序有错无输出结果D.14.0

13.已知一算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

A.-a+b*c/dB.-a+b*cd/eC.-+*abc/deD.abcd/+e*-

14.设n、m为一棵二叉树上的两个结点,在中序遍历时,n在m之前的条件是_____________。

A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孙

15.以下函数不能用于向文件中写入数据的是()。

A.hellB.fwriteC.fputcD.fprintf

16.下列描述中正确的是______。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件新产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

17.若有说明语句: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);

18.下面关于串的的叙述中,哪一个是不正确的()。

A.串是字符的有限序列

B.空串是由空格构成的串

C.模式匹配是串的一种重要运算

D.串既可以采用顺序存储,也可以采用链式存储

19.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的运行结果是()。A.2B.3C.7D.0

20.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

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

voidfun(int*n)

{while((*n))

printf("%d",(*n)--);

}

main()

{inta=10;

fun(&a);

}

22.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

23.若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【】。

24.\13'在内存中占1个字节,"\12"在内存中占______个字节。

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

ints=12;

while(s);

--s;

26.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

27.下面的程序实现的是从指针p所指向的地址的n个数中,找出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;______;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

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

#include"stdio.h"

main()

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

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

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

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

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

30.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

31.下面程序的功能是将一个字符串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);}

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

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

}

33.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

34.有以下说明定义和语句,可用a.day引用结构体成员day,写出引用结构体成员day的其他两种形式【】、【】。

struct{intday;charmouth;intyear;}a,*b;b=&a;

35.函数fun的功能是计算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。

36.在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【】。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

38.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

39.设有宏定义:

#defineWIDTH80

#defineLENGTHWIDTH+40

则执行赋值语句“v=LENGTH*20;"(v为int型变量)后,v的值是【】。

40.若有以下程序

main()

{chara;

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

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

}

执行后输出的结果是______。

三、1.选择题(20题)41.若有说明inta[][3]={1,2,3,4,5,6,7,8,9},则a数组第一维的大小是()。

A.2B.3C.4D.无确定值

42.有以下程序: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

43.利用fseek函数可以实现的操作是

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

44.已知x=3、y=2则表达式x*=y+8的值为()

A.3B.2C.30D.10

45.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

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

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

47.软件是指()。A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合

48.有以下程序:

#include<stdlib.h>

structNODE

{intnum;structNODE*next;};

main()

{structNODE*p,*q,*r;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)mallloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf("%d\n",p->num+q->next->num);

}

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

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

49.为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令()

A.REN*.PAS.?ASB.RENPASPC.REN*.PAS*.PD.REN*.PAS*.P??

50.在面向对象方法中,()描述的是具有相似属性与操作的一组对象。

A.属性B.事件C.方法D.类

51.有下列函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是()。

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

B.计算s所指字符串占用内存字节的个数

C.计算s所指字符串的长度

D.将s所指字符串复制到字符串t中

52.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

53.以下程序的输出结果是longfun(intn){longs;if(n==1‖n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

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

A.2B.3C.4D.编译时有错,无结果

55.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序输出的结果是______。

A.123.4B.123.5C.123.45D.123.46

56.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()

A.e3,e1,e4,e2B.e2,e4,e3,e1C.e3,e4,e1,e2D.任意顺序

57.执行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.不确定

58.线性表若采用链式存储结构时,要求内存中可用存储单元的地址()

A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续不连续都可以

59.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

60.对于下列字符串,说明表达式strlen(s)值的是()。chars[10]={'a','\n','a','b','\t','c'};

A.10B.1C.6D.7

四、选择题(20题)61.程序段:intx=12;doubley=3.141593;printf(”%d%8.6f”,x,y.;的输出结果是()。

A.123.141593

B.123.141593

C.12,3.141593

D.123.1415930

62.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.**B.****C.*D.********

63.(9)下列叙述中正确的是()

A.数据库是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

64.以下选项中关于C语言常量的叙述错误的是()。

A.经常被陡用的变量可以定义成常量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型常量和非数值型常量

D.所谓常量,是指在程序运行过程中,其值不能被改变的量

65.

66.设有定义:intx-2;,以下表达式中,值不为6的是()。A.2*x,X+=2B.x++,2*xC.x*=(1+x)D.x*=x+1

67.有以下定义:

68.设有以下函数:

voidfun(intn,char*s){…}

则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

69.数据库管理系统中负责数据模式定义的语言是()。A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

70.

71.已有定义:chara[]="xyz",b[]={′x′,′y′,′z′};,以下叙述中正确的是()。

A)数组a和b的长度相同B)a数组长度小于b数组长度

C)a数组长度大于b数组长度D)上述说法都不对

72.有以下程序:

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

A.321678B.876543C.1098765D.345678

73.有以下程序:

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

A.一263B.2C.0D.一26

74.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20][{"One*World","One*Dream!"},*p=str[1];

prinft("%d,",strlen(p));printf("%s\n",p);

}

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

A.9,0ne*World

B.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

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

A.6B.9C.0D.8

76.

77.(37)下面不属于软件设计原则的是()

A.抽象

B.模块化

C.自底向上

D.信息隐蔽

78.

79.

80.若有以下定义:intt[3][2];,能正确表示t数组元素地址的表达式是______。

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是根据整型形参n,计算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值为l0,则应输出0.817962。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdiOh>

doubleproc(intn)

{

doubley=1.0;

//****found****

intJ=1;.

inti;

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

{

j=-l*j;//****found****

y+=1/(i*i);

}

return(y);

}

voidmain

{

intn=10:

system("CLS"):

printf("\nTheresultis%1f\n",proc(n));

}

六、程序设计题(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.C

2.A预处理命令以“#”开头,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、C选项错误。C语言的预处理能够实现宏定义和条件编译的功能,所以D选项错误。故本题答案为A选项。

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

4.B

5.A当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故选择A选项。

6.D

7.B

8.A题干中,if语句的含义是:如果a的值为1,将b的值赋给a,否则将a的值自增1。选项A中,“switch(a==1)”中表达式“a==1”的结果如果为真,即1,则从case1开始执行“a++”;如果“a==1”的结果为假,即为0,则从case0开始执行“a=b”,所以与题干含义执行操作相反的是选项A中的语句。故本题答案为A选项。

9.C

10.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

11.B

12.C宏定义不是C语句,末尾不需要有分号。所以语句Printf("%4.1f\\n",,S(a+b));展开后为printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序会出现语法错误。

13.D

14.C

15.Aftell是返回文件当前指针。

16.C解析:软件工程是解决软件项目的管理、软件开发过程中的技术、软件产品的生产率等问题,它的主要思想是强调在软件开发过程中需要应用工程化原则。

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

18.B

19.A因为fun(intx)是一个递归函数。在主函数中fun(7)经过3次递归调用。其过程可以描述为fun(7)=7-fun(5)=7-(5*fun(3))=7*(5*(3*fun(1)))=7-(5-(3-3))=7-5=2。最后的输出结果为2。故本题答案为A选项。

20.B解析:结构体类型的定义格式为:

strcut结构体名

{成员说明列表};

结构体变量的定义有3种形式:第一种:定义结构体型的同时定义结构体变量如:strcut结构体名{成员说明列表}变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strcutstudent{成员说明列表):student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:Strctstudent{成员说明列表}变量。和上面三种情况比较我们不难得知只有选项B是正确的。所以,4个选项中选项B符合题意。

21.1.09877e+010

22.(y%4==0)&&(y%100!=0)||(y%400==0)(y%4==0)&&(y%100!=0)||(y%400==0)解析:考查逻辑表达。年号能被4整除(y%4==0)但不能被100整除(y%100!=0),两者是与的关系,年号能被400整除即y%400==0,与前两项是或的关系。

23.-16-16解析:将赋值运算符右侧的“表达式”的值赋给左侧的变量,并且赋值运算符按照“自右而左”的结合顺序,本题表达式应先算m的值为10,再运算y的值为8,最后计算y=y+(-8)=-8+(-8)=-16。

24.22解析:'\\13':表示八进制数13表示的ASCII字符,是一个字符,占一个字节;而”\\12”是个字符串,除了八进制数12表示的ASCII字符占一个字节外,还有在字符串的末尾加上串结束标志“'\\0'”,所以共有2个字节。

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

26.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。

27.

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

29.7979解析:因为在调用子函数时进行的是数值传递,调用于函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。

30.x>5||x<-5x<-5或x<-5||x>5x>5||x<-5,x<-5或x<-5||x>5解析:要使整数x的绝对值大于5,则x大于5或x小于5,用C语言表示即为:x>5||x<-5或者x<-5||x>5。故本题答案为;x>5||x<-5或者x<-5||x>5。

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

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

33.(x>-5)&&(x<5)(x>-5)&&(x<5)解析:本题考查基本逻辑表达,“整数x的绝对值大于5”时值为“假”,即整数x的绝对值小于等于5,也就是整数x要大于等于-5且要小于等于5。这里“且”用“与(&&)”表示,所以C语言表达式为:(x>-5)&&(x<5)。

34.(*B).dat.b->day

35.m=fun(a4)+fun(b4)-fun(a+b3);m=fun(a,4)+fun(b,4)-fun(a+b,3);解析:函数fun(x,n)的作用是求xn,因此a4应该调用函数fun(a,4),b4应该调用函数fun(b,4),(a+b)3应该调用函数fun(a+b,3),所以题目中的数学表达式,写成C程序中的语句为m=fun(a,4)+fun(b,4)-fun(a+b,3)。

36.log2n

37.2468

38.“filea.dat”“r”“filea.dat”,“r”解析:考查对文件的操作。fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入'filea.dat','r'。

39.880

40.77解析:本题考核的知识点是字符类型变量的运算。字符型数据可作为整型参加算术运算,其值为其对应的ASCII码。'H'-'A'的结果是7,加'0'后是'7'的ASCII码,所以输出的是字符'7'。

41.B解析:本题考查二维数组第一维的大小如何确定。二维数组第一维的大小由下列规则确定:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小:②当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加1。

42.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,所以f的值为100/65≈1.538。接着向最右边执行“a=f”,由于a是整型变量,所以a最后去f的整数部分为1。程序最后输出的a、c、f和x的值(f和x只保留小数点后面1位)分别为1、65、1.5、6.5。所以,4个选项中选项B符合题意。

43.D解析:用fseek函数可以实现改变文件的位置指针,从而实现对文件的顺序和随机读写。

44.C

45.C解析:线性结构,是指数据元素只有一个直接前件元素和直接后件元素。线性表是线性结构。栈和队列是指对插入和删除操作有特殊要求的线性表,树是非线性结构。

46.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。

47.D软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据及相关文档的完整集合。其中,程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。因此本题的正确答案是D。

48.D解析:本题在主函数中首先定义了3个结构体指针变量p,q,r。然后调用内存分配函数分别为其分配地址空间,程序中变量p->num的值为10,指针变量q->next指向指针变量r,r->num的值为30,所以变量q->next->num的值为30,因此,表达式p->num+q->next->num的值为10+30=40。所以4个选项中D正确。

49.C

50.D解析:类(calss)描述的是具有相似属性与操作的一组对象,而一个具体对象则是其对应类的一个实例。

51.C解析:在函数fun(char*s)中,首先用字符指针变量t指向s,而循环语句while(*t++);的功能是使指针变量t指向字符串变量s的末尾,这时退出循环,因而语句return(t-s);返回的就是字符串s所指字符串的长度。

52.C答案C

解析:在语句“k=*f(a,b)”中,由于“()”的优先级高于“*”,所以“*f(a,b);”表示其返回类型为指针的带有两个整型参数的函数。

53.A解析:该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第1次调用:fun(3)n=3s=3-fun(2);第二次调用时:fun(2)n=2s=2返回第一次调用后,s=3-2=1。

54.B解析:C语言规定else总是和离它最近的if语句配对。故第一个else和第一个if配对,第二个else和第二个if配对。首先计算第一个订后面的表达式“a>b>c”,表达式“a>b”是为1,表达式“1>c,’为0,所以执行else后面的语句.先执行if后面的表达式,“c-1>d”为真,值为1。“1==1”为真,执行printf语句.所以,B选项为所选。

55.D解析:f格式符,用来输出实数,以小数形式式输出。“%-m.nf”的含义是:输出数据共占m列,其中n位小数,如果输出位数小于m,则右端补空恪。如果总长度大于列数,则按实际情况四舍五入输出。

56.B解析:由栈“后进先出”的特点可知:A中e1不可能比e2先出,C中e3不可能比e4先出,且e1不可能比e2先出,D中栈是先进后出的,所以不可能是任意顺序。所以B是正确的。它执行的顺序是:e1进栈→e2进栈→e2出栈→e3进栈→e4进栈→e4出栈→e3出栈→e1出栈,所以只看出栈序列应为e2,e4,e3,e1。

57.B解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。p[4]等阶于*(p-4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。

58.D解析:在链式存储结构中,存储数据结构的存储空间可以不连续,各数据接点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。

59.D软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、通信资源、辅助资源等。(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成任务,它是其他资源的基础资源。(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无关。(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对象开发的Rose软件,它主要是软件开发的工具。通过对上述分析的总结,可以知道本题的正确答案选D。

60.C解析:strlen(s)返回s字符串中字符的个数,若s是个数组,则返回数组元素的个数。

61.A本题考查prinff函数的输出格式控制符,%m.nf表示指定输出的实型数据的宽度为m(包含小数点),并保留n位小数。当输出数据的小数位大于n时,截去右边多余的小数,并对截去的部分的第一位做四舍五入的处理;当输出数据小数位小于n时,在小数的最右边补0,输出数据的小数部分宽度为n。若给出的总宽度m小于ll加上整数位数和小数点,则自动突破m的限制;反之,数字右对齐,左边补空格。本题中3.141593数值长度为8,小数位数是6,因此左端没有空格,故正确答案为A。

62.C由于内层循环for(k=1;k<3;k++)后面直接跟了空语句“;”所以在循环内部什么操作也不做,跳出外层循环后执行打印语句,所以打印了一个“t”,选择C。

63.C

64.A常量是在程序运行时,其值不能被改变的量,跟是否经常使用没关系.

65.D

66.A选项A中,2*x对x的值没有影响,x仍为2,“x+=2”执行后,表达式值为4。故本题答案为A。

67.Ac语言中不存在<>运算符,B)错误;%两边必须都是整数(C)错误;x+y不能出现在赋值号的左边,D)错误。

68.A\n函数指针的定义格式为函数类型(*指针变量名)(形参列表);函数名和数组名一样代表了函数代码的首地址,因此在赋值时,直接将函数指针指向函数名就行了。所以选项A正确。

\n

69.AA。数据定义语言(DDL)是集中负责数据库模式定义与数据库对象定义的语言。数据操纵语言(DML)是指用来查询、添加、修改和删除数据库中数的语句。数据控制语言(DCL)是用来设置或者更改数据为用户或角色权限的语句。据此,本题正确答案为选项A。

70.D

71.C数组a占4个字节,数组b占3个字节。所以数组a长度大于b长度。

72.A本题中的函数fun()的功能是将数组k中前5个元素倒序,所以返回后数组k中的元素排列是5,4,3,2,1,6,7,8,9,10。所以打印输出k[2]到k[7]元素的值,即321678,所以选择A。

73.Disspaee(c)检查参数c是否为空格字符。若参数e为空格字符,则返回TRUE,否则返回NULL(0)。Is—di#t(c)函数检查参数c是否为阿拉伯数字0到9。返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(O)。fLm()函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。遇到了非数字的字符跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回一26,因此打印的结果是一26。故答案为D选项。

74.C\n本题输出两个结果,第一个是求字符串的长度。第二个是输出的字符串,数组的下标是从0开始的,所以当str取1的时候,应为“One*Dream!”。

\n

75.A本题主要考查的是递归函数。题目中的f()函数直接调用了自身,是一个递归函数。主函数中调用f()函数时传入的参数是3,所以会跳过if语句,执行Y=x*x—f(x一2);,也就是Y=3*3一f(1);,再次调用f()函数,传人参数1,此时满足if语句的条件,返N3。所以前面My=3*3-f(1);就等价于y=3*3—3;。结果是6,所以返回给主函数的结果是6。故本题应该选择A)。

76.A

77.C

78.B

79.B

80.C解析:选项A和B两个表达式都越界了;选项D中,*t[2]是目标变量,即—个整型值,而不是地址值。

81.(1)错误:intj=1;正确:doublej=1.0;

\n(2)错误:y+=1/(i*i);正确:y+=j/(i*i);

\n【解析】由函数proc可知,变量j的作用是控制每一项符号的变化,并且作为运算的分子,应改为double型变量。因此,“intj=1;”应改为“doublej=1.0;”。变量y中存放多项式的值,多项式中的每一项符号由变量j决定。因此,“y+=1/(i*i);”应改为“y+=j/(i*i);”。

\n

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

\n{

\ninti,j,k=0;

\nfor(i=0;i<M;i++)//i表示其行下标

\nfor(j=0;arr[i][j]!=\0;j++)//由于每行的个数不等,因此用a[i][j]!=\0来作为循环结束

\n的条件

\nb[k++]=arr[i][j];//把二维数组中的元素放到b的一维数组中,

\nb[k]=\0;//最后把b赋\0作为字符串结束的标志

\n)

\n【解析】字符串数组中每一行都是一个一个完整的字符串,其结束标志为\0。因此通过字符串的结束标志来判断每一个字符串是否结束,将字符串数组中的所有字符串均赋值新的一维数组b来完成字符串的合并。

\n2022年福建省泉州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

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

A.在C语言中,预处理命令行都以“#”开头

B.预处理命令行必须位于C语言源程序的起始位置

C.“include<stdio.h>”必须放在C语言程序的开头

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

3.有以下程序:

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

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

4.当很频繁的对序列中部进行插入和删除操作时,应该选择使用的容器是()

A.vectorB.listC.dequeD.stack

5.以下程序的输出结果是()。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.输出值不定

6.

7.若有以下定义和语句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);则输出结果()

A.2,MB.3,EC.2,ED.输出项与对应的格式控制不一致,输出结果不确定

8.下列选项中与“if(a==1)a=b;elsea++;”语句功能不同的switch语句是()。

A.switch(a==1){ case0:a=b;break; case1:a++;}

B.switch(a){ case1:a=b;break; default:a++;}

C.switch(a){ default:a++;break; case1:a=b;}

D.switch(a==1){ case1:a=b;break; case0:a++;}

9.在定义inta[5][6];后,数组a中的第10个元素是()。(设a[0][0]为第一个元素)

A.a[2][5]B.a[2][4]C.a[1][3]D.a[1][5]

10.以下描述中正确的是

A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B.do-while循环由d。开始,用while结束,在while(表达式)后面不能写分号

C.在do-while循环体中,是先执行一次循环,再进行判断

D.do-while循环中,根据情况可以省略while

11.

12.有以下程序:#include#definePT3.5;#defineS(x)PT*x*x;Main(){inta=1,b=2;printf("%4.1f\n",S(a+b));程序运行后的输出结果是()。A.7.5B.31.5C.程序有错无输出结果D.14.0

13.已知一算术表达式的中缀表达式为a-(b+c/d)*e,其后缀形式为()

A.-a+b*c/dB.-a+b*cd/eC.-+*abc/deD.abcd/+e*-

14.设n、m为一棵二叉树上的两个结点,在中序遍历时,n在m之前的条件是_____________。

A.n在m右方B.n是m的祖先C.n在m左方D.n是m子孙

15.以下函数不能用于向文件中写入数据的是()。

A.hellB.fwriteC.fputcD.fprintf

16.下列描述中正确的是______。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件新产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发中的技术问题

17.若有说明语句: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);

18.下面关于串的的叙述中,哪一个是不正确的()。

A.串是字符的有限序列

B.空串是由空格构成的串

C.模式匹配是串的一种重要运算

D.串既可以采用顺序存储,也可以采用链式存储

19.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的运行结果是()。A.2B.3C.7D.0

20.设有以下语句

typedefstructS

{intg;charh;}T;

则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量

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

voidfun(int*n)

{while((*n))

printf("%d",(*n)--);

}

main()

{inta=10;

fun(&a);

}

22.下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4整除但不能被100整除或年号能被400整除,请填空______。

23.若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【】。

24.\13'在内存中占1个字节,"\12"在内存中占______个字节。

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

ints=12;

while(s);

--s;

26.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。

27.下面的程序实现的是从指针p所指向的地址的n个数中,找出最大的和最小的数据,请填空。

fun(int*p,intn)

{int*q;

intmax,min;

max=min=*p;

for(q=p;______;q++)

if(*q>max)max=*q;

elseif(*q<min)min=*q;}

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

#include"stdio.h"

main()

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

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

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

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

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

#include<stdio.h>

int(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

{inta=1,b=8,c=7,d=9;

t(a,b,c,d);

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

}

30.表示""整数x的绝对值大于5""时值为""真""的C语言表达式是【】。

31.下面程序的功能是将一个字符串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);}

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

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

}

33.表示“整数x的绝对值大于5”时值为“假”的C语言表达式是______。

34.有以下说明定义和语句,可用a.day引用结构体成员day,写出引用结构体成员day的其他两种形式【】、【】。

struct{intday;charmouth;intyear;}a,*b;b=&a;

35.函数fun的功能是计算xn。

doublefun(doublex,intn)

{inti;doubley=1;

for(i=1;i<=n;i++)y=y*x;

returny;

}

主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算:m=a4+b4-(a+b)3。实现这一计算的函数调用语句为【】。

36.在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【】。

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

voidfun()

{staticinta;

a+=2;

printf("%d",A);

}

main()

{intcc;

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

printf("\n");

}

38.以下程序的功能是从名为filea.dat的文本文件中逐个读入字符并显示在屏幕上。请填空。

#include<stdio.h>

main()

{FILE*fp;charch;

fp=fopen(【】);

ch=fgetc(fp);

while(!feof(fp)){putchar(ch);ch=fgetc(fp);}

putchar('\n');fclose(fp);

}

39.设有宏定义:

#defineWIDTH80

#defineLENGTHWIDTH+40

则执行赋值语句“v=LENGTH*20;"(v为int型变量)后,v的值是【】。

40.若有以下程序

main()

{chara;

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

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

}

执行后输出的结果是______。

三、1.选择题(20题)41.若有说明inta[][3]={1,2,3,4,5,6,7,8,9},则a数组第一维的大小是()。

A.2B.3C.4D.无确定值

42.有以下程序: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

43.利用fseek函数可以实现的操作是

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

44.已知x=3、y=2则表达式x*=y+8的值为()

A.3B.2C.30D.10

45.下列数据结构中,属于非线性的是()。

A.线性表B.队列C.树D.栈

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

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

47.软件是指()。A.程序B.程序和文档C.算法加数据结构D.程序、数据与相关文档的完整集合

48.有以下程序:

#include<stdlib.h>

structNODE

{intnum;structNODE*next;};

main()

{structNODE*p,*q,*r;

p=(structNODE*)malloc(sizeof(structNODE));

q=(structNODE*)mallloc(sizeof(structNODE));

r=(structNODE*)malloc(sizeof(structNODE));

p->num=10;q->num=20;r->num=30;

p->next=q;q->next=r;

printf("%d\n",p->num+q->next->num);

}

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

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

49.为了将所有扩展名为.PAS的文件改成扩展名为.P,应使用命令()

A.REN*.PAS.?ASB.RENPASPC.REN*.PAS*.PD.REN*.PAS*.P??

50.在面向对象方法中,()描述的是具有相似属性与操作的一组对象。

A.属性B.事件C.方法D.类

51.有下列函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是()。

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

B.计算s所指字符串占用内存字节的个数

C.计算s所指字符串的长度

D.将s所指字符串复制到字符串t中

52.有以下程序

intadd(inta,intb){return(a+b);}

main()

{intk,(*f)(),a=5,b=10;

f=add;

}

则以下函数调用语句错误的是A.k=(*f)(a,b);B.k=add(a,b);C.k=*f(a,b);D.k=f(a,b);

53.以下程序的输出结果是longfun(intn){longs;if(n==1‖n==2)s=2;elses=n-fun(n-1);returns;}main(){printf("%1d\n",fun(3));}

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

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

A.2B.3C.4D.编译时有错,无结果

55.main(){floatx=123.456;printf("%-5.2f\n",x);}以上程序输出的结果是______。

A.123.4B.123.5C.123.45D.123.46

56.如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是()

A.e3,e1,e4,e2B.e2,e4,e3,e1C.e3,e4,e1,e2D.任意顺序

57.执行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=p[4];

A.4B.5C.3D.不确定

58.线性表若采用链式存储结构时,要求内存中可用存储单元的地址()

A.必须是连续的B.部分地址必须是连续的C.一定是不连续的D.连续不连续都可以

59.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

60.对于下列字符串,说明表达式strlen(s)值的是()。chars[10]={'a','\n','a','b','\t','c'};

A.10B.1C.6D.7

四、选择题(20题)61.程序段:intx=12;doubley=3.141593;printf(”%d%8.6f”,x,y.;的输出结果是()。

A.123.141593

B.123.141593

C.12,3.141593

D.123.1415930

62.以下程序段中的变量已正确定义:

程序段的输出结果是()。

A.**B.****C.*D.********

63.(9)下列叙述中正确的是()

A.数据库是一个独立的系统,不需要操作系统的支持

B.数据库设计是指设计数据库管理系统

C.数据库技术的根本目标是要解决数据共享的问题

D.数据库系统中,数据的物理结构必须与逻辑结构一致

64.以下选项中关于C语言常量的叙述错误的是()。

A.经常被陡用的变量可以定义成常量

B.常量分为整型常量、实型常量、字符常量和字符串常量

C.常量可分为数值型常量和非数值型常量

D.所谓常量,是指在程序运行过程中,其值不能被改变的量

65.

66.设有定义:intx-2;,以下表达式中,值不为6的是()。A.2*x,X+=2B.x++,2*xC.x*=(1+x)D.x*=x+1

67.有以下定义:

68.设有以下函数:

voidfun(intn,char*s){…}

则下面对函数指针的定义和赋值均正确的是()。

A.void(*pf)();pf=fun;

B.void*pf();pf=fun

C.void*pf();*pf=fun;

D.void(*pf)(int,char);pf=&fun;

69.数据库管理系统中负责数据模式定义的语言是()。A.数据定义语言B.数据管理语言C.数据操纵语言D.数据控制语言

70.

71.已有定义:chara[]="xyz",b[]={′x′,′y′,′z′};,以下叙述中正确的是()。

A)数组a和b的长度相同B)a数组长度小于b数组长度

C)a数组长度大于b数组长度D)上述说法都不对

72.有以下程序:

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

A.321678B.876543C.1098765D.345678

73.有以下程序:

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

A.一263B.2C.0D.一26

74.有以下程序:

#include<stdio.h>

#include<string.h>

main()

{charstr[][20][{"One*World","One*Dream!"},*p=str[1];

prinft("%d,",strlen(p));printf("%s\n",p);

}

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

A.9,0ne*World

B.9,0ne*Dream!

C.10,One*Dream!

D.10,Ome*World

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

A.6B.9C.0D.8

76.

77.(37)下面不属于软件设计原则的是()

A.抽象

B.模块化

C.自底向上

D.信息隐蔽

78.

79.

80.若有以下定义:intt[3][2];,能正确表示t数组元素地址的表达式是______。

A.&t[3][2]B.t[3]C.t[1]D.*t[2]

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是根据整型形参n,计算如下公式的值:

Y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(nn)

例如,n中的值为l0,则应输出0.817962。

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

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

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdiOh>

doubleproc(intn)

{

doubley=1.0;

//****found****

intJ=1;.

inti;

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

{

j=-l*j;//****found****

y+=1/(i*i);

}

return(y);

}

voidmain

{

intn=10:

system("CLS"):

printf("\nTheresultis%1f\n",proc(n));

}

六、程序设计题(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.C

2.A预处理命令以“#”开头,一般在源文件的最前面书写,但不是必须在起始位置书写,所以B、C选项错误。C语言的预处理能够实现宏定义和条件编译的功能,所以D选项错误。故本题答案为A选项。

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

4.B

5.A当所赋的值不够其列的宽度时,系统在其后自动补0,因此a[0][3]=0,a[1][2]=6,a[2][1]=5,a[3][0]=0,故选择A选项。

6.D

7.B

8.A题干中,if语句的含义是:如果a的值为1,将b的值赋给a,否则将a的值自增1。选项A中,“switch(a==1)”中表达式“a==1”的结果如果为真,即1,则从case1开始执行“a++”;如果“a==1”的结果为假,即为0,则从case0开始执行“a=b”,所以与题干含义执行操作相反的是选项A中的语句。故本题答案为A选项。

9.C

10.C解析:do-while语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

11.B

12.C宏定义不是C语句,末尾不需要有分号。所以语句Printf("%4.1f\\n",,S(a+b));展开后为printf("%4.1f\\n",3.5;*a+b*a+b;);所以程序会出现语法错误。

13.D

14.C

15.Aftell是返回文件当前指针。

16.C解析:软件工程是解决软件项目的管理、软件开发过程中的技术、软件产品的生产率等问题,它的主要思想是强调在软件开发过程中需要应用工程化原则。

17.Ddouble*p,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量p;scanf("%If",p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,s

温馨提示

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

最新文档

评论

0/150

提交评论