计算机二级考试C语言模拟试题二

Python023

计算机二级考试C语言模拟试题二,第1张

1. 运算符________的优先级最高。

A.[ ]

B. +=

C. ?:

D.++

2.main( )

{ int n( n=6*4,n+6),n*2printf(“n=%d\n”,n)}

程序的输出结果是______________.

A.30

B. 24

C. 60

D. 48

3.若有如下定义,则__________是对数组元素的正确的引用。.

int a[10] , *p p=a

A. *&a[10]

B. a[11]

C. *(p+11)

D. *p *p *p

4.设整型变量n的值为2,执行语句“n+=n-=n*n”后,n的值是__________

A. 0

B. 4

C. - 4

D. 2

5.各种基本数据类型的存贮空间正确的长度排列为__________。

A.Char

C.Char

6.下面的变量说明中__________是正确的。

A.char:a, b, c

B.char abc

C.char a, b, c

D.char a, b, c

7.表达式y=(13>12?15:6>7?8:9)的值为____________ 。

A 9

B 8

C 15

D. 1

8.若x=5,y=3 则y*=x+5y的值为___________.

A. 10

B. 20

C. 15

D. 30

9.能正确表示a和b同时为正或同时为负的逻辑表达式是_________。

A.a>=0||b>=0)&&(a<0 ||b<0)

B.(a>=0 &&b>=0)&&(a<0 &&b<0)

C.(a+b>0) &&(a+b<=0)

D. a*b>0

10.C语言中,合法的字符型常数是_________。

A.‘A’

B.“A”

C. 65

D. A

11.已有定义 int x=3, y=4, z=5则表达式“!(x+y)+z-1&&y+z/2”的值是________。

A.6

B.0

C.2

D.1

12.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。

A.’a’<=c<=’z’

B. (c>=’a’) || (c<=’z’)

C.(‘a’<=c) and (‘z’>=c)

D. (c>=’a’) &&(c<=’z’)

13.设有定义:long x=-123456L则以下能够正确输出变量x值的语句是_______。

A.printf(“x=%d\n”,x)

B.printf(“x=%ld\n”,x)

C.printf(“x=l\n”,x)

C.printf(“x=%D\n”,x)

14.从循环体内某一层跳出,继续执行循环外的语句是:___________。

A. break语句

B.return语句

C.continue语句

D.空语句。

15.C语言用_______表示逻辑“真”值。

A.true

B.t或y

C.非零整型值

D.整型值0

16.为了避免嵌套的条件分支语句if—else 的二义性,C语言规定:C程序中的else总是与_____组成配对关系。

A.缩排位置相同的if

B.在其之前未配对的if

C.在其之前未配对的最近的if

D.同一行上的if

17.在函数中默认存储类型说明符的变量应该是________存储类型。

A.内部静态

B. 外部

C.自动

D. 寄存器

18.C语言中以只读方式打开一个文件应选择_______________参数。

A.“r”

B.“w”

C.“rb”

D.“a”

19.设有数组定义:char array[]=”student”则数组所占的存贮空间为__________。

A.6个字节

B. 7个字节

C. 8个字节

D. 9个字节

20.根据C语言的语法规则,下列________个是不合法标识符。

A.do

B. Name

C. R5

D. _exam

二、判断题

1. C 语言源程序文件通过了编译、连接之后 , 生成一个后缀为 .EXE 的文件。 ( )

2.在 C 程序中 , 函数既可以嵌套定义 , 也可以嵌套调用。( )

3.在 C 程序中 ,APH 和 aph 代表不同的变量。( )

4.表达式 0195 是一个八进制整数。( )

5.Continue语句的作用是结束本次循环。( )

6.Extern变量的.生命期是整个程序执行期。 ( )

7.C语言中字符串的结束符是’\0’。 ( )

8.利用fclose函数关闭已打开的文件。 ( )。

9.C程序总是从main( ) 函数的第一条语句开始执行的。 ( )

10.数组名代表数组的首地址。( )

三、填空题

1.C语言的预处理语句以__________开头。

2.表达式7+10>2 &&25 %5的结果是_______________。

3.下列程序段是从键盘输入的字符中统计数字字符的个数,用换行符结束循环。

Int n=0, chCh=getchar( )

While( __________________ )

{ if ( ________________ ) n++c=getchar( )}

4.C语言中getchar() 函数的功能是_________________________。

5.int *p 的含义是______________________________。

6.定义fp为文件型指针变量的定义方法为_______________。

7.数组 int a[3][3]共定义了____________个数组元素。

四、读程序题。

1. 改正下列程序中不正确的语句。

main( )

{ int a

scanf(“%d”, a)if (a = 1) printf(“One\n”) }

2.写出下列程序的运行结果。

fun(int a, int b)

{ if(a>b) return (a)

Else return (b)}

main()

{ int x=3,y=8,z=6,r

r=fun(fun(x,y),2*z)printf(“%d\n”,r)}

3. 改正下列程序中不正确的语句。

main()

{ int n

float s=1.0

for(n=10n>1n- -)

s=s+1/n

printf(“%6.1f\n”,s)}

4. 写出下列程序的运行结果。

main()

{ int n

For(n=3n<=10n++)

{ if(n%6= =0) breakPrintf(“%d”,n)} }

5.写出下列程序的运行结果。

#include “stdio.h”

Main()

{ int a[]={1,2,3,-4,5}

int m,n,*pp=&a[0]m=*(p+1)n=*(p+4)

printf(“%d %d %d ”,*p,m,n)}

五、编程题

1. 编程计算下列表达式:s=n!(n从键盘上输入)

2.输出1—100之间不能被12整除的数。

3.从键盘上输出10个整数存入一维数组中,按由大到小的顺序输出。

4.从键盘上输入9个数,按3行3列的格式输出。

5.编程将文件read.txt中的字符读出显示到屏幕上。

、选择题

(1)下列数据结构中,按先进后出原则组织数据的是

A)线性链表

B)栈

C)循环链表

D)顺序表

正确答案:

B

(2)具有3个结点的二叉树有

A)2种形态

B)4种形态

C)7种形态

D)5种形态

正确答案:

D

(3)设有下列二叉树:

对此二叉树前序遍历的结果为

A)ZBTYCPXA

B)ATBZXCYP

C)ZBTACYXP

D)ATBZXCPY

正确答案:

B

(4)结构化程序设计主要强调的是

A)程序的规模

B)程序的效率

C)程序设计语言的先进性

D)程序易读性

正确答案:

D

(5)程序的3种基本控制结构是

A)过程、子过程和分程序

B)顺序、选择和重复

C)递归、堆栈和队列

D)调用、返回和转移

正确答案:

B

(6)下列叙述中,不属于测试的特征的是

A)测试的挑剔性

B)完全测试的不可能性

C)测试的可靠性

D)测试的经济性

正确答案:

C

(7)需求分析中开发人员要从用户那里了解

A)软件做什么

B)用户使用界面

C)输入的信息

D)软件的规模

正确答案:

A

(8)下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是

A)选择

B)连接

C)投影

D)并

正确答案:

B

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

A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系

B)用E-R图只能表示实体集之间一对一的联系

C)用E-R图只能表示实体集之间一对多的联系

D)用E-R图表示的概念数据模型只能转换为关系数据模型

正确答案:

C

(10)"年龄在18~25之间"这种约束是属于数据库当中的

A)原子性措施

B)一致性措施

C)完整性措施

D)安全性措施

正确答案:

C

11)以下说法错误的是

A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式

B)计算机只能处理由0和1的代码构成的二进制指令或数据

C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件

D)每一种高级语言都有它对应的编译程序

正确答案:

C

(12)算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是

A)有零个输入或多个输入

B)高效性

C)有穷性

D)确定性

正确答案:

B

(13)已知int

a=6

则执行a+=a-=a*a语句后,a的值为

A)36

B)0

C)-24

D)-60

正确答案:

D

(14)下面各选项中,均是C语言标识符的选项组是

A)forchinato

B)long_123short56_do

C)voidunion_342

D)text.txt

_023_3ew

正确答案:

B

(15)下列表达式中,结果为5的是

A)6*5%6

B)5*-2+15

C)5+75%10

D)6+-2/3

正确答案:

B

(16)下列常量中,为不合法的实型常量表示的是

A).0032

B)0.0

C)0.3242E8

D).E3

正确答案:

D

(17)关于C语言的主函数描述正确的是

A)C程序可以有多个main函数

B)C程序必有一个而且只能有一个main函数

C)C程序可以没有main函数

D)C程序的执行不一定在main函数开始执行

正确答案:

B

(18)已知int

a=1,b=-1则语句printf("%d\n",(a--,++b))的输出结果是

A)-1

B)0

C)1

D)语句错误

正确答案:

B

(19)已知int

a,bdouble

c则以下语句中错误的函数调用是

A)scanf("%d,%x,%lf",&a,&b,&c)

B)scanf("%d,%d,%le",&a,&b,&c)

C)scanf("%o,%x,%o",&a,&b)

D)scanf("%d,%o,%e",&a,&b,&c)

正确答案:

D

(20)已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z后,表达式x+y的值为

A)1

B)2

C)3

D)4

正确答案:

C

2006年4月二级C语言笔试试题

一选择题((1)-(10)每题2分,(11)-(50)每题1分,共60分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

1)下列选项中不属于结构化程序设计方法的是

A) 自顶向下

B)逐步求精

C)模块化

D)可复用

2)两个或两个以上模块之间关联的紧密程度称为

A)耦合度

B)内聚度

C)复杂度

D)数据传输特性

3)下列叙述中正确的是

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

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

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

D)以上三种说法都不对

4)按照“后进先出”原则组织数据的数据结构是

A)队列

B)栈

C)双向链表

D)二叉树

5)下列叙述中正确的是

A)线性链表是线性表的链式存储结构

B)栈与队列是非线性结构

C)双向链表是非线性结构

D)只有根结点的二叉树是线性结构

6)对如下二叉树

进行后序遍历的结果为

A) ABCDEF

B) DBEAFC

C) ABDECF

D) DEBFCA

7)在深度为7的满二叉树中,叶子结点的个数为

A)32

B)31

C)64

D)63

8)“商品”与“顾客”两个实体集之间的联系一般是

A)一对一

B)一对多

C)多对一

D)多对多

9)在E-R图中,用来表示实体的图形是

A)矩形

B)椭圆形

C)菱形

D)三角形

10)数据库DB,数据库系统DBS,数据库管理系统DBMS之间的关系是

A)DB包含DBS和DBMS

B)DBMS包含DB和DBS

C)DBS包含DB和DBMS

D)没有任何关系

11)以下不合法的用户标识符是

A)j2_KEY

B)Double

C) 4d

D) _8_

12)以下不合法的数值常量是

A)011

B)lel

C) 8.0 E0.5

D) 0xabcd

13)以下不合法的字符常量是

A)'\018'

B '\”'

C) '\\'

D) ‘\xcc'

14)表达式3.6-5/2+1.2+5%2的值是

A)4.3

B) 4.8

C) 3.3

D) 3.8

15)以下能正确定义字符串的语句是

A)char str[]={‘\064'}

B) char str=”\x43”

C) char str=”

D) char str[]=”\0”

16)以下数组定义中错误的是

A) int x[][3]={0}

B) int x[2][3]={{1,2},{3,4},{5,6}}

C) nt x[][3]={{1,2,3},{4,5,6}}

D)int x[2][3]={1,2,3,4,5,6}

17)若要求从键盘读入含有空格字符的字符串,应使用函数

A)getc()

B) gets()

C) getchar()

D) scanf()

18) 下四个程序中,完全正确的是

A)#include B)#include

main()main()

{/*programming*/ {/*/programming/*/

printf(“programming!\n”)} printf(“programming!\n”)}

C) #include D) include

main() main()

{/*/*programming*/*/ {/*programming*/

printf(“programming!\n”)} printf(“programming!\n”)}

19)若有定义:float x=1.5int a=1,b=3,c=2则正确的switch语句是

A)switch(x) B) switch((int)x)

{case 1.0: printf(“*\n”){case 1: printf(“*\n”)

Case 2.0: printf(“**\n”)} case 2: printf(“**\n”)}

C) switch(a+b) D) switch(a+b)

{ case 1: printf(“*\n”){case 1: printf(*\n”)

case 2+1: printf(“**\n”)} case c: printf(“**\n”)}

20)若各选项中所用变量已正确定义,函数fun中通过return语句返回一个函数值,以下选项中错误的程序是

A)main() B) float fun(int a,int b){……}

{……x=fun(2,10)……} main()

float fun(int a,int b){……} {……x=fun(i,j)……}

C)float fun(int,int)D) main()

main() { float fun(int i,int j)

{……x=fun(2,10)……} ……x=fun(i,j)……}

float fun(int a,int b){……} float fun(int a,int b){……}

21)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是

A)(!E=0)

B) (E>0||E<0)

C) (E==0)

D) (E!=0)

22)要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是

A) while((ch=getchar())!='N') printf(“%c”,ch)

B) while(ch=getchar()!='N') printf(“%c”,ch)

C) while(ch=getchar()==N') printf(“%c”,ch)

D) while((ch=getchar())=='N') printf(“%c”,ch)

23)已定义以下函数

int fun(int *p)

{return *p}

fun 函数返回值是

A)不确定的值

B)一个整数

C)形参p中存放的值

D)形参p的地址值

24)若有说明语句:double *p,a则能通过scanf语句正确给输入项读入数据的程序段是

A)*p=&ascanf(“%lf”,p)

B)*p=&ascanf(“%f”,p)

C) p=&ascanf(“%lf”,*p)

D)p=&ascanf(“%lf”,p)

25)现有以下结构体说明和变量定义,如图所示,指针p,q,r分别指向一个链表中连续的三个结点。

struct node

{

char data

struct node *next

}*p,*q,*r

现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是

A)q->next=r->nextp->next=rr->next=q

B) p->next=rq->next=r->nextr-.next=q

C) q->next=r->nextr->next=qp->next=r

D) r->next=qp-next=rq-next=r->next

26)有以下程序段

struct st

{ int xint *y}*pt:

int a[]={1,2},b[]={3,4}

struct st c[2]={10,a,20,b}

pt=c

以下选项中表达式的值为11的是

A) *pt->y

B) pt->x

C) ++pt->x

D) (pt++)->x

27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为

A)EOF

B)非0值

C) 0

D)NULL

28)设有以下语句

int a=1,b=2,c

c=a^(b<<2)

执行后,c的值为

A)6

B) 7

C) 8

D) 9

29)有以下程序

#include

main()

{

char c1,c2,c3,c4,c5,c6

scanf(“%c%c%c%c”,&c1,&c2,&c3,&c4)

c5=getchar()c6=getchar()

putchar(c1)putchar(c2)

printf(“%c%c\n”,c5,c6)

}

程序运行后,若从键盘输入(从第1列开始)

123<回车>

45678<回车>

则输出结果是

A)1267

B)1256

C) 1278

D)1245

30)若有以下程序

main()

{int y=10

while(y- -)printf(“y=%d\n”y)

}

程序运行后的输出结果是

A)y=0

B)y=-1

C) y=1

D)while构成无限循环

31)有以下程序

main()

{

int a=0,b=0,c=0,d=0

if(a=1) b=1c=2

else d=3

printf(“%d,%d,%d,%d\n”,a,b,c,d)

}

程序输出

A)0,1,2,0

B) 0,0,0,3

C)1,1,2,0

D)编译有错

32)有以下程序

main()

{

int i,j,x=0

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

{ x++

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

{

if(j%2) continue

x++

}

x++

}

printf(“x=%d\n”,x)

}

程序执行后的输出结果是

A)x=4

B) x=8

C) x=6

D) x=12

33)有以下程序

int fun1(duoble a){return a*=a}

int fun2(dpuble x,double y)

{

double a=0,b=0

a=fun1(x)b=fun1(y)return (int)(a+b)

}

main()

{double ww=fun2(1.1,2.0)……}

程序执行后变量w中的值是

A)5.21

B) 5

C) 5.0

D) 0.0

34)有以下程序

main()

{

int i,t[][3]={9,8,7,6,5,4,3,2,1}

for(i=0i<3i++) printf(“%d”,t[2-i][i])

}

程序的执行后的输出结果是

A)7 5 3

B) 3 5 7

C)3 6 9

D)7 5 1

35)有以下程序

fun(char p[][10])

{int n=0,i

for(i=0i<7i++)

if(p[i][0]=='T') n++

return n

}

main()

{

char str[][10]={“Mon”, “Tue”, “Wed”, “Thu”,”Fri”,”Sat”,”Sun”}

printf(“%d\n”,fun(str))

}

程序执行后的输出结果是

A)1

B) 2

C)3

D) 0

36有以下程序

main()

{

int i,s=0,t[]={1,2,3,4,5,6,7,8,9}

for(i=0i<9i+=2) s+=*(t+i)

printf(“%d\n”,s)

}

程序执行后的输出结果是

A)45

B)20

C)25

D)36

37)有以下程序

void fun1(char *p)

{

char *q

q=p

while(*q!='\0')

{ (*q)++q++}

}

main()

{ char a[]={“Program”},*p

p=&a[3]fun1(p)printf(“%s\n”,a)

}

程序执行后的输出结果是

A)P rohsbn

B)Prphsbn

C)Progsbn

D)Program

38)有以下程序

void swap(char *x,char *y)

{

char t

t=*x*x=*y*y=t

}

main()

{

char *s1=”abc”,*s2=”123”

swap(s1,s2)printf(“%s,%s\n”,s1,s2)

}

程序执行后的输出结果是

A)123,abc

B) abc,123

C)1bc,a23

D) 321,cba

39)有以下程序

int fun(int n)

{

if(n==1) return 1

else

return (n+fun(n-1))

}

main()

{

int x

scanf(“%d”,&x)x=fun(x)printf(“%d\n”,x)

}

程序执行时,给变量x输入10,程序的输出结果是

A)55

B) 54

C) 65

D) 45

40)有以下程序

int fun(int x[],int n)

{static int sum=0,i

for(i=0i sum+=x[i]

return sum

}

main()

{int a[]={1,2,3,4,5},b[]={6,7,8,9},s=0

s=fun(a,5)+fun(b,4)printf(“%d\n”,s)

}

程序执行后的输出结果是

A)45

B)50

C)60

D)55

41)有以下程序

main()

{

union {

char ch[2]

int d

}s

s.d=0x4321

printf(“%x,%x\n”,s.ch[0],s.ch[1])

}

在16位编译系统上,程序执行后的输出结果是

A)21,43

B)43,21

C)43,00

D)21,00

42)有以下程序

main()

{

char *p[]={“3697”,”2584”}

int i,jlong num=0

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

{j=0

while(p[i][j]!='\0')

{ if((p[i][j]-‘0')%2)num=10*num+p[i][j]-‘0'

j+=2

} }

printf(“%d\n”num)

}

程序执行后的输出结果是

A)35

B)37

C)39

D)3975

43)执行以下程序后,test.txt文件的内容是(若文件能正常打开)

#include

main()

{

FILE *fp

char *s1=”Fortran”,*s2=”Basic”

if((fp=fopen(“test.txt”,”wb”))==NULL)

{ printf(“Can't open test.txt file\n”)exit(1)}

fwrite(s1,7,1,fp)/*把从地址s1开始的7个字符写到fp所指文件中*/

fseek(fp,0L,SEEK_SET)/*文件位置指针移到文件开头*/

fwrite(s2,5,1,fp)

fclose(fp)

}

A)Basican

B)BasicFortran

C)Basic

D)FortranBasic

44)以下叙述中错误的是

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

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

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

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

45)以下叙述中错误的是

A)算法正确的程序最终一定会结束

B)算法正确的程序可以有零个输出

C)算法正确的程序可以有零个输入

D)算法正确的程序对于相同的输入一定有相同的结果

46)以下叙述中错误的是

A)C程序必须由一个或一个以上的函数组成

B)函数调用可以作为一个独立的语句存在

C)若函数有返回值,必须通过return语句返回

D)函数形参的值也可以传回对应的实参

47)设有以下定义和语句

char str[20]=”Program”,*p

p=str

则以下叙述中正确的是

A)*p与str[0]中的值相等

B)str与p的类型完全相同

C)str数组长度和p所指向的字符串长度相等

D)数组str中存放的内容和指针变量p中存放的内容相同

48)以下叙述中错误的是

A)C程序中的#include和#define行均不是C语句

B)除逗号运算符外,赋值运算符的优先级最低

C)C程序中,j++;是赋值语句

D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算

49)以下叙述中正确的是

A)预处理命令行必须位于C源程序的起始位置

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

C)每个C程序必须在开头包括预处理命令行:#include

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

50)以下叙述中错误的是

A)可以通过typedef增加新的类型

B)可以用typedef将已存在的类型用一个新的名字来代表

C)用typedef定义新的类型名后,原有类型名仍有效

D)用typedef可以为各种类型起别名,但不能为变量起别名

二:填空题(每空2分,共40分)

请将每一个空的正确答案写在答题卡[1]至[20]序号的横线上,答在试卷上不得分

1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为_______[1]________。

2)在面向对象方法中,_____[2]______描述的是具有相似属性与操作的一组对象。

3)在关系模型中,把数据看成是二维表,每一个二维表称为一个___[3]_____。

4)程序测试分为静态分析和动态测试,其中__[4]______是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。

5)数据独立性分为逻辑独立性与物理独立性,当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为_[5]______。

6)若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句__[6]____。

7)以下程序用于判断a,b,c能否构成三角形,若能输出YES,若不能输出NO。当a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是需要同时满足三条件:a+b>c,a+c>b,b+c>a。 请填空。

main()

{

float a,b,c

scanf(“%f%f%f”,&a,&b,&c)

if(__[7]__)printf(“YES\n”)/*a,b,c能构成三角形*/

else printf(“NO\n”)/*a,b,c不能构成三角形*/

}

8)以下程序的输出结果是__[8]_____

main()

{ int a[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0

for(i=0i<3i++) s+=a[i][i]+a[i][3-i-1]

printf(“%d\n”,s)

}

9)当运行以下程序时,输入abcd,程序的输出结果是:_[9]____。

insert(char str[])

{ int i

i=strlen(str)

while(i>0)

{ str[2*i]=str[i]str[2*i-1]='*'i--}

printf(“%s\n”,str)

}

main()

{char str[40]

scanf(“%s”,str )insert(str)

}

10)以下程序的运行结果是:__[10]____

fun(int t[],int n)

{ int i,m

if(n==1) return t[0]

else

if(n>=2) {m=fun(t,n-1)return m}

}

main()

{

int a[]={11,4,6,3,8,2,3,5,9,2}

printf(“%d\n”,fun(a,10))

}

11)现有两个C程序文件T18.c和myfun.c同时在TC系统目录(文件夹)下,其中T18.c文件如下:

#include

#include”myfun.c”

main()

{ fun()printf(“\n”)}

myfun.c文件如下:

void fun()

{ char s[80],cint n=0

while((c=getchar())!='\n') s[n++]=c

n--

while(n>=0) printf(“%c”,s[n--])

}

当编译连接通过后,运行程序T18时,输入Thank!则输出的结果是:___[11] 。

12)以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为Hello!, c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。

char *fun(char *str,char c)

{ int n=0char *p=str

if(p!=NULL)

while(p[n]!=c&&p[n]!='\0') n++

if(p[n]=='\0' return NULL

return (_[12]_)

}

13)以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。

main()

{ int i,j

for(i=0__[13]__i++)

{ j=i*10+6

if(_[14]____) continue

printf(“%d ”,j)

}

}

14)以下isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0,请填空

int isprime(int a)

{ int i

for(i=2i<=a/2i++)

if(a%i==0) __[15]___

__[16]___

}

15)以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形,例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

A B C D E

F G H I

J K L

M N

O

请填空完成该程序。

main()

{ int i,j,nchar ch='A'

scanf(“%d”,&n)

if(n<11)

{

for(i=1i<=ni++)

{ for(j=1j<=n-i+1j++)

{ printf(“%2c”,ch)

___[17]____

}

【18】

}

}

else printf(“n is too large!\n”)

printf(“\n”)

}

16)以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。

#include

typedef struct node /*链表结点结构*/

{ char sub[3]

Struct node *next

}Node

Node fun(char s) /*建立链表*/

{ …… }

void disp(Node *h)

{

Node *p

p=h->next

While(【19】)

{

printf(“%s\n”,p->sub)p=【20】}

}

main()

{

Node *hd

hd=fun()disp(hd)printf(“\n”)

}

答案

一、选择题

1-10 : DADBA DCDAC

11-20:CCADD BBBCA

21-30:CABDD CBDDD

31-40:DBCBB CACAC

41-50:ACADB DADBA

二、填空题

1、45

2、类

3、关系

4、静态分析

5、物理独立性

6、printf("a=%d,b=%d",a,b)

7、(a+b>c)&&(a+c>b)&&(b+c>a)

8、30

9、a*b*c*d*

10、11

11、!knahT

12、p+n 或 str+n

13、i<=9 或 i<10

14、j%3!=0

15、return 0

16、return 1

17、ch=ch+1

18、printf("\n")

19、p!=NULL

20、p->next