您的位置:

上海大学c语言试题,上海海洋大学c语言试卷

本文目录一览:

C语言简单试题大家帮忙做一下!

C.C.?.B.A.D.B.C.D.C.B.B.D.B.C

第三题是不是写错了!啥意思啊?郁闷~

C语言的一些试题

1.a

a=7/2(=3)

4.c

看一下scanf的定义

5.c

"222"是字符串

6.a

没有转义

8.b

'\0'是字符串结束标志

9.b

试过了,没想通

10.d

没有理由

11.c

逻辑与

12.b

y=*a就是y=a

13.b

++在后面

14.a

++a不影响a的地址(vc下不能编译)

15.c

先++x,x为6,(++x==y)成立,又++x为7

C语言期末考试试题(谭浩强版)

C语言期末考试试题

2008年04月12日 星期六 00:22

一 选择题(24分,每小题2分)

1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是()。

A 存放读入数据项的存储区

B 存放读入数据的地址或指向此地址的指针

C 一个指向所读文件的文件指针

D 一个整形变量,代表要读入的数据项总数

2.以下程序的输出结果为( )。

main( )

{

int i=010,j=10;

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

}

A 11,9

B 9,10

C 8,10

D 9,9 

3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。

a=125.534;

a=20.0/3;

a=(int)125.521%4;

a=52;

A 125,6,31,1

B 125,6,1,20

C 125,6.666666,31,20

D 125.534,6.666666,2,20 

4.设i和k都是int类型,则for循环语句( )。

for(i=0,k=-1;k=1;i++,k++)

printf("****\n");

A 循环结束的条件不合法

B 循环体一次也不执行

C 循环体只执行一次

D 是无限循环 

5.以下程序的输出结果为( )。

main( )

{

char c;

int i;

for(i=65;i68;i++)

{

c=i+32;

switch(c)

{

case 'a':

case 'b':

case 'c':printf("%c,",c);break;

default:printf("end");

}

}

}

A a,b,c,end

B a,a,a,end

C a,a,a,

D a,b,c,

6.函数调用语句:fseek(fp,-10L,2);的含义是( )。

A 将文件位置指针从文件末尾处向文件头的方向移动10个字节

B 将文件位置指针从当前位置向文件头的方向移动10个字节

C 将文件位置指针从当前位置向文件末尾方向移动10个字节

D 将文件位置指针移到距离文件头10个字节处

7.以下程序的输出结果为( )。

main( )

{

int i=0,j=0;

while(s1[i]!='\0')

i++;

while(s2[j]!='\0')

s1[i++]=s2[j++];

s1[i]=0;

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

}

A side

B country

C sidetry

D countryside

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

A 主函数main中定义的变量在整个文件或程序中有效

B 不同函数中,可以使用相同名字的变量

C 形式参数是局部变量

D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

9.在下列程序段中,枚举变量 c1的值是( )。

enum color { red,yellow,blue=4,green,white}c1;

c1=yellow;

c1=white;

A 1

B 3

C 5

D 6

10.设有说明 int (*ptr)();其中标识符ptr是( )。

A 是一个指向整形变量的指针

B 是一个指针,它指向一个函数值是int的函数

C 是一个函数名

D定义不合法

11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。

A int p;

B int (*p)[n];

C int *p[n];

D int (*p)( );

12.具有相同类型的指针类型变量p与数组a,不能进行的操作是( )。

A p=a;

B *p=a[0];

C p=a[0];

D p=a;

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.参加位运算的数据可以是任何类型的数据。 ( )

2.若有定义和语句:

int a;

char c;

float f;

scanf("%d,%c,%f",a,c,f);

若通过键盘输入:10 A 12 5

则a=10,c=‘A’,f=12.5。 ( )

3.C语言把文件看作是一个字符(字节)的序列。 ( )

4.若有宏定义:

#define S(a,b) t=a;a=b;b=t

由于变量t没定义,所以此宏定义是错误的。 ( )

5.在Turbo C中,下面的定义和语句是合法的:

file *fp;

fp=fopen("a.txt","r"); ( )

6.若有定义:

char s[ ]="china";

则Turbo C系统为数组s开辟6个字节的内存单元。 ( )

7.若有定义和语句:

int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;

for(i=0;i3;i++)

sum+=a[i][2-i];

则sum=21。 ( )

8.若有定义和语句:

struct student

{

int num;

char name[10];

float score;

}

s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);

输出结果是1。 ( )

9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。 ( )

10.在Turbo C中,此定义和语句是合法的:

enum aa{ a=5,b,c}bb;

bb=(enum aa)5; ( )

三 写出下列程序的运行结果(36分,每小题6分)

1.

main( )

{

int i=29,j=6,k=2,s;

s=i+i/j%k-9; //s=i+(i/j)%k-9

printf(“s=%d\n”,s);

}

2.

main( )

{

int x=31,y=2,s=0;

do

{

s-=x*y;

x+=2;y-=3;

}

while(x%3==0); //先执行,后判断

printf(“x=%d\ty=%d\ts=%d\n”,x,y,s);

}

3.

main( )

{

int a[6]={10,20,30,40,50,60},i;

invert(a,0,5);

for(i=0;i6;i++)

printf(“%d,”,a[i]);

printf(“\n”);

}

invert(int s[ ],int i,int j) //倒置

{

int t;

if(ij)

{

invert(s,i+1,j-1); //函数自身的嵌套调用,形成循环

t=s[i];

s[i]=s[j];

s[j]=t;

}

}

4.

#include stdio.h

main()

{

char str[ ]="The C program",c;

int i;

for(i=2;(c=str[i])!='\0';i++)

{

switch(c)

{

case 'g': ++i; break; //由于++i,跳过了g后面的1个字母

case 'o': continue;

default: printf(“%c”,c); continue;

}

printf(“*”);

}

printf(“\n”);

}

5.

struct w //结构体

{

char low;

char high;

};

union u //共用体

{

struct w byte;

short word;

}uw;

main( )

{

int result;

uw.word=0x1234;

printf("word value:%04x\n",uw.word);

printf("high byte:%02x\n",uw.byte.high);

printf("low byte:%02x\n",uw.byte.low);

uw.byte.low=0x74;

printf("word value:%04x\n",uw.word);

result=uw.word+0x2a34;

printf("the result:%04x\n",result);

}

6.

main()

{

char *s2="I love China!",**s1=s2;

char *s3,c,*s4="w";

s3=c;

*s3='H';

s2=s2+2;

printf("%s\t%c\t%s\t%c\n",s2,*s3,s4,**s1);

}

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1.百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹?

main( )

{

int hb,hm,hl,n=0;

for(hb=0;hb=100;hb+=(1))

for(hm=0;hm=100-hb;hm+=(2))

{

hl=100-hb- (3) ;

if(hb/3+hm/2+2*(3)==100)

{

n++;

printf("hb=%d,hm=%d,hl=%d\n",hb/3,hm/2,2*hl);

}

}

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

}

2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。

#define N 10

char str[N];

void main()

{

int i,flag;

for(flag=1;flag==1;)

{

scanf("%s",str);

flag=0;

printf("\n");

}

sort(___(4)___);

for(i=0;iN;i++)

{

printf("%c",str[i]);

}

printf("\n");

}

sort(char str[N]) //冒泡排序

{

int i,j;

char t;

for(j=1;jN;j++)

for(i=0;i10-j;i++)

if(str[i]str[i+1])

{

t=str[i];

____(5)____;

____(6)____; //交换位置

}

}

3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。)

例如,矩阵为:

3 0 0 3

2 5 7 3

1 0 4 2

则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。

add(int m,int n,int arr[])

{

for(i=0;im;i=i+m-1)

for(j=0;jn;j++)

sum=sum+____(7)____;

for(j=0;jn;j=j+n-1)

for(i=1;____(8)____;i++)

sum=sum+arr[i*n+j];

return(sum);

}

4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

#define N 10

main()

{

void maxmin(int arr[],int *pt1,int *pt2,int n);

int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

p1=a;

p2=b;

maxmin(array,p1,p2,N);

printf("max=%d,min=%d",a,b);

}

void maxmin(int arr[],int *pt1,int *pt2,int n)

{

int i;

*pt1=*pt2=arr[0];

for(i=1;in;i++)

{

if(arr[i]*pt1)

____(9)____ ;

if(arr[i]*pt2)

____(10)____ ;

}

}

答案

一 选择题(24分,每小题2分)

1.( B ) 2.( C ) 3.( B )

4.( D ) 5.( D ) 6.( A )

7.( D ) 8.( A ) 9.( D )

10.( B ) 11.( C ) 12.( D )

二 判断对错,对的划“√”,错的划“×”(20分,每小题2分)

1.( × ) 2.( √ )

3.( √ ) 4.( × )

5.( × ) 6.( √ )

7.( √ ) 8.( × )

9.( √ ) 10.( √ )

三 写出下列程序的运行结果(36分,每小题6分)

1.s=20

2.x=35 y=-4 s=-29

3.60,50,40,30,20,10,

4.e C pr*am

5.word value:1234

6.love China! H w l

high byte:12

low byte:34

word value:1274

the result:3ca8

四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分)

1.(1) 3 (2) 2 (3)hm hl

2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t

3.(7) arr[i*n+j] (8) im-1

4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

就那个 计算机二级 C语言的 给我发过来 我选你最佳答案 我急着想用呢

2010年9月全国计算机二级C语言笔试试题:文字版

一、选择题(每小题2分,共70分)

下列各题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)一组对象所具有的相似性质

B)一个对象具有另一个对象的性质

C)各对象之间的共同性质

D)类之间共享属性和操作的机制

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

A)记录长度

B)文件的大小

C)联系的复杂程度

D)数据之间的联系方式

(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是

A)一对一

B)一对多

C)多对多

D)多对一

(9)数据库设计中反映用户对数据要求的模式是

A)内模式

B)概念模式

C)外模式

D)设计模式

(10)有三个关系R、S和T如下:

则由关系R和S得到关系T的操作是

A)自然连接

B)交

C)投影

D)并

(11)以下关于结构化程序设计的叙述中正确的是

A)一个结构化程序必须同时由顺序、分支、循环三种结构组成

B)结构化程序使用goto语句会很便捷

C)在C语言中,程序的模块化是利用函数实现的

D)由三种基本结构构成的程序只能解决小规模的问题

(12)以下关于简单程序设计的步骤和顺序的说法中正确的是

A)确定算法后,整理并写出文档,最后进行编码和上机调试

B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档

C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档

D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构

(13)以下叙述中错误的是

A) C程序在运行过程中所有计算都以二进制方式进行

B)C程序在运行过程中所有计算都以十进制方式进行

C)所有C程序都需要编译链接无误后才能运行

D)C程序中整型变量只能存放整数,实型变量只能存放浮点数

(14)有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是

A)a%(int)(x-y)

B)a=x!=y;

C)(a*y)%b

D)y=x+y=x

(15)以下选项中能表示合法常量的是

A)整数:1,200

B)实数:1.5E2.0

C )字符斜杠:‘\’

D)字符串:"\007"

(16)表达式a+=a-=a=9的值是

A)9

B)_9

C)18

D)0

(17)若变量已正确定义,在if (W)printf(“%d\n,k”);中,以下不可替代W的是

A)a<>b+c

B)ch=getchar()

C)a==b+c

D)a++

(18)有以下程序

#includestdio.h

main()

{int a=1,b=0;

if(!a) b++;

else if(a==0)if(a)b+=2;

else b+=3;

printf(”%d\n”,b);

程序运行后的输出结果是

A)0

B)1

C)2

D)3

(19)若有定义语句int a, b;double x;则下列选项中没有错误的是

A)switch(x%2) B)switch((int)x/2.0

{case 0: a++; break; {case 0: a++; break;

case 1: b++; break; case 1: b++; break;

default : a++; b++; default : a++; b++;

} }

C)switch((int)x%2) D)switch((int)(x)%2)

{case 0: a++; break; {case 0.0: a++; break;

case 1: b++; break; case 1.0: b++; break;

default : a++; b++; default : a++; b++;

} }

(20)有以下程序

#include stdio.h

main()

{int a=1,b=2;

while(a6){b+=a;a+=2;b%二10;}

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

程序运行后的输出结果是

A)5,11

B)7,1

C)7,11

D)6,1

(21)有以下程序

#include<stdio.h

main()

{int y=10;

while(y--);

printf(”Y=%d\n”,Y);

程序执行后的输出结果是

A)y=0

B)y= -1

C)y=1

D)while构成无限循环

(22)有以下程序

#include<stdio .h

main()

{char s〔」=”rstuv";

printf(”%c\n”,*s+2);

程序运行后的输出结果是

A)tuv

B)字符t的ASCII码值

C)t

D)出错

(23)有以下程序

#include<stdio.h

#include<string.h

main()

{char x〔〕=”STRING”;

x〔0」=0;x〔1〕=’\0’;x〔2」=’0’;

printf(”%d %d\n”,sizeof(x),strlen(x));

程序运行后的输出结果是

A)6 1

B)7 0

C)6 3

D)7 1

(24)有以下程序

#include<stdio.h

Int f(int x);

main()

{int n=1,m;

m=f(f(f(n)));printf(”%d\n”,m);

int f(int x)

{return x*2;}

程序运行后的输出结果是

A)1

B)2

C)4

D)8

(25)以下程序段完全正确的是

A)int *p; scanf("%d",&p);

B)int *p; scanf(“%d”,p);

C)int k, *p=k; scanf("%d",p);

D)int k, *p:; *p= k; scanf(“%d”,p);

(26)有定义语句:int *p[4];以下选项中与此语句等价的是

A)int p[4];

B)int **p;

C)int *(p「4」);

D)int (*p)「4」;

(27)下列定义数组的语句中,正确的是

A)int N=10; B)#define N 10

int x[N]; int x[N];

C)int x[0..10〕; D)int x〔〕;

(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是

A)int a[5]={0};

B)int b[]={0,0,0,0,0};

C)int c[2+3];

D)int i=5,d[i];

(29)有以下程序

#include<stdio.h

void f(int *p);

main()

{int a〔5〕={1,2,3,4,5},*r=a;

f(r);printf(”%d\n”;*r);

void f(int *p)

{p=p+3;printf(”%d,”,*p);}

程序运行后的输出结果是

A)1,4

B)4,4

C)3,1

D)4,1

(30)有以下程序(函数fun只对下标为偶数的元素进行操作)

# include<stdio.h

void fun(int*a;int n)

{int i、j、k、t;

for (i=0;i<n一1;1+=2)

{k=i;‘

for(j=i;jn;j+=2)if(a〔j〕a〔k])k=j;

t=a〔i];a〔i]=a〔k];a〔k]=t;

main()

{int aa「10」={1、2、3、4、5、6、7},i;

fun(aa、7);

for(i=0,i7; i++)printf(”%d,”,aa〔i〕));

printf(”\n”);

程序运行后的输出结果是

A)7,2,5,4,3,6,1

B)1,6,3,4,5,2,7

C)7,6,5,4,3,2,1

D)1,7,3,5,6;2,1

(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是

A)if(strcmp(s2,s1)==0)ST;

B)if(sl==s2)ST;

C)if(strcpy(s l ,s2)==1)ST;

D)if(sl-s2==0)ST;

(32)以下不能将s所指字符串正确复制到t所指存储空间的是

A)while(*t=*s){t++;s++;}

B)for(i=0;t[i]=s[i〕;i++);

C)do{*t++=*s++;}while(*s);

D)for(i=0,j=0;t[i++]=s[j++];);

(33)有以下程序( strcat函数用以连接两个字符串)

#include<stdio.h

#include<string .h

main()

{char a〔20〕=”ABCD\OEFG\0”,b〔〕=”IJK”;

strcat(a,b);printf(”%s\n”,a);

程序运行后的输出结果是

A)ABCDE\OFG\OIJK

B)ABCDIJK

C)IJK

D)EFGIJK

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

#include<stdio.h

#include<ctype.h>

void fun(char*p)

{int i=0;

while (p[i〕)

{if(p[i]==’ ’&& islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;

i++;

main()

{char s1〔100〕=”ab cd EFG!”;

fun(s1); printf(”%s\n”,s1);

程序运行后的输出结果是

A)ab cd EFG!

B)Ab Cd EFg!

C)aB cD EFG!

D)ab cd EFg!

(35)有以下程序

#include<stdio.h

void fun(int x)

{if(x/2>1)fun(x/2);

printf(”%d”,x);

main()

{fun(7);printf(”\n”);}

程序运行后的输出结果是

A)1 3 7

B)7 3 1

C)7 3

D)3 7

(36)有以下程序

#include<stdio.h>

int fun()

{static int x=1;

x+=1;return x;

main()

{int i;s=1;

for(i=1;i=5;i++)s+=fun();

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

程序运行后的输出结果是

A)11

B)21

C)6

D)120

(37)有以下程序

#inctude<stdio.h>

#include<stdlib.h>

Main()

{int *a,*b,*c;

a=b=c=(int*)malloc(sizeof(int));

*a=1;*b=2,*c=3;

a=b;

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

程序运行后的输出结果是

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

(38)有以下程序

#include<stdio.h

main()

{int s,t,A=10;double B=6;

s=sizeof(A);t=sizeof(B);

printf(“%d,%d\n”,s,t);

在VC6平台上编译运行,程序运行后的输出结果是

A)2,4 B)4,4 C)4,8 D)10,6

(39)若有以下语句

Typedef struct S

{int g; char h;}T;

以下叙述中正确的是

A)可用S定义结构体变量

B)可用T定义结构体变量

C)S是struct类型的变量

D)T是struct S类型的变量

(40)有以下程序

#include<stdio.h

main()

{short c=124;

c=c_______;

printf(“%d\n”、C);

若要使程序的运行结果为248,应在下划线处填入的是

A)2 B)|248 C)&0248 D)I

二、填空题(每空2分,共30分)

请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。

(1)一个栈的初始状态为空。首先将元素5,4,3,2,1依次入栈,然后退栈一次,再将元素 A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为【1】

(2)在长度为n的线性表中,寻找最大项至少需要比较【2】次。

(3)一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有【3】个结点。

(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是【4】程序。

(5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计【5】。

(6)以下程序运行后的输出结果是【6】。

#include<stdio.h

main()

{int a=200,b=010;

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

(7)有以下程序

#include<stdio.h

main()

{int x,Y;

scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);

程序运行时输入:1234567程序的运行结果是【7】。

(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【8】时表示逻辑值“真”。

(9)有以下程序

#include<stdio.h

main()

{int i,n[]={0,0,0,0,0};

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

{n[i]=n[i-1]*3+1; printf(”%d ",n[i]);}

}

程序运行后的输出结果是【9】。

(10)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)

int fun(int x〔N〕)

{int i,k=0;

for(i=0;iN;I++)

if(x〔i〕

return x〔k〕;

}

(11)有以下程序

#include<stdio.h

int*f(int *p,int*q);

main()

{int m=1,n=2,*r=m;

r=f(r,&n);printf(”%d\n”,*r);

int*f(int *p,int*q)

{return(*p*q)?p:q;}

程序运行后的输出结果是【11】

(12)以下fun函数的功能是在N行M列的整形二维数组中,选出一个最大值作为函数值返回,请填空。(设M,. N已定义)

int fun(int a〔N〕[M))

{int i,j,row=0,col=0;

for(i=0;iN;I++)

for(j=0;j

if(a〔i〕〔j〕>a〔row〕〔col〕){row=i;col=j;}

return(【12】):

}

(13)有以下程序

#include<stdio.h

main()

{int n[2],i,j;

for(i=0;i2;i++)n[i]=0;

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

for(j=0;j2;j++)n〔j〕=n「i」+1;

printf(”%d\n”,n[1]);

程序运行后的输出结果是【13】

(14)以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。

#include<stdio.h

main()

{int a〔10〕,*p,*s;

for(p=a;p-a10;p++)scanf(”%d”,p);

for(p=a,s=a;p-a10;p++)if(*p*s)S=P;

printf("max=%d\n”,【14】);

(15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。

#include<stdio.h

main()

{【15】*fp;

char a〔5〕={’1’,’2’,’3’,’4’,’5’},i;

fp=fopen(”f .txt”,”w”);

for(i=0;i5;i++)fputc(a[i],fp);

fclose(fp);

2009年上半年全国计算机等级考试二级C语言笔试试题及答案

一、选择题(每题2分,共计70分)

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

A)栈是先进先出的线性表

B)队列是"先进后出"的线性表

C)循环队列是非线性结构

D)有序线性表即可以采用顺序存储结构,也可以采用链式存储结构

2.

(2)支持子程序调用的数据结构是

A)栈

B)树

C)队列

D)二叉树

3.

(3)某二叉树有5个读为2的结点,则该二叉树中的叶子结点数是

A)10

B)8

C)6

D)4

4.

(4)下列排序方法中,最坏情况下比较次数最少的是

A)冒泡排序

B)简单选择排序

C)直接插入排序

D)堆排序

(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下列

属于应用软件的是

A)编译程序

B)操作系统

C)教务管理系统

D)汇编程序

6.

(6)下面叙述中错误的是

A)软件测试的目的是发现错误并改正错误

B)对被调试程序进行"错误定位"是程序调试的必要步骤

C)程序调试也成为Debug

D)软件测试应严格执行测试计划,排除测试的随意性

7.

(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是

A)提高耦合性降低内聚性有利于提高模块的独立性

B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度

D)内聚性是指模块间互相连接的紧密程度

8.

(8)数据库应用系统中的核心问题是

A)数据库设计

B)数据库系统设计

C)数据库维护

D)数据库管理员培训

9.

(9)有两个关系R,S如下:

由关系R通过运算得到关系S,则所使用的运算为

A)选择

B)投影

C)插入

D)连接

10.

(10)将E-R图转换为关系模式时,实体和联系都可以表示为

A)属性

B)键

C)关系

D)域

11.(11)一下选项中合法的标识符是

A)1_1

B)1-1

C)_11

D)1_ _

12.

(12)若函数中有定义语句:int k;,则

A)系统将自动给k赋初值0

B)这是k中的值无定义

C)系统将自动给k赋初值-1

D)这时k中无任何值

13.

(13)一下选项中,能用作数据常量的是

A)o115

B)0118

C)1.5e1.5

D)115L

14.

(14)设有定义:int x=2;,一下表达式中,值不为6的是

A)x*=x+1

B)X++,2*x

C)x*=(1+x)

D)2*x,x+=2

15.

(15)程序段:int x=12; double y=3.141593;printf("%d%8.6f",x,y);的输出结果是

A)123.141593

B)12 3.141593

C)12,3.141593

D)123.1415930

16.

(16)若有定义语句:double x,y,*px,*py;执行了px=x;py=y;之后,正确的输入语句是

A)scanf("%f%f",x,y);

B)scanf("%f%f" x,y);

C)scanf("%lf%le",px,py);

D)scanf("%lf%lf",x,y);

17.

(17)一下是if语句的基本形式:

if(表达式) 语句

其中"表达式"

A)必须是逻辑表达式

B)必须是关系表达式

C)必须是逻辑表达式或关系表达式

D)可以是任意合法的表达式

18.

(18)有以下程序

#include stdio.h

main()

{ int x;

scanf("%d",x);

if(x=3) ; else

if(x!=10) printf("%d\n",x);

}

程序运行时,输入的值在哪个范围才会有输出结果

A)不等于10的整数

B)大于3且不等于10的整数

C)大于3或等于10的整数

D)小于3的整数

19.

(19)有以下程序

#include stdio.h

main()

{ int a=1,b=2,c=3,d=0;

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

if (b!=2||c--!=3)

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

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

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

}

程序运行后输出结果是

A)1,2,3

B)1,3,2

C)1,3,3

D)3,2,1

20.

(20)一下程序段中的变量已正确定义

for(i=0;i4;i++,j++)

for(k=1;k3;k++); printf("*");

程序段的输出结果是

A)********

B)****

C)**

D)*

21.(21)有以下程序

#include stdio.h

main()

{ char *s={"ABC"};

do

{ printf("%d",*s%10);s++;

}

while (*s);

}

注意:字母A的ASCII码值为65。程序运行后的输出结果是

A)5670

B)656667

C)567

D)ABC

22.

(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是

A)n=0;while((ch=getchar())!=~\n~)n++;

B)n=0;while(getchar()!=~\n~)n++;

C)for(n=0;getchar()!=~\n~;n++);

D)n=0;for(ch=getchar();ch!=~\n~;n++);

23.

(23)有以下程序

#include stdio.h

main()

{ int a1,a2; char c1,c2;

scanf("%d%c%d%c",a1,c1,a2,c2);

printf("%d,%c,%d,%c",a1,c1,a2,c2);

}

若通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,

程序输出结果是:12,a,34,b 则正确的输入格式是(以下_代表空格,CR代表回车)

A)12a34bCR

B)12_a_34_bCR

C)12,a,34,bCR

D)12_a34_bCR

24.

(24)有以下程序

#include stdio.h

int f(int x,int y)

{ return ((y-x)*x);}

main()

{ int a=3,b=4,c=5,d;

d=f(f(a,b),f(a,c));

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

}

程序运行后的输出结果是

A)10

B)9

C)8

D)7

25.

(25)有以下程序

#include stdio.h

void fun(char *s)

{ while(*s)

{ if (*s%2==0) printf("%c",*s);

s++;

}

}

main()

{ char a[]={"good"};

fun(a); printf("\n");

}

注意:字母a的ASCII码值为97,程序运行后的输出结果是

A)d

B)go

C)god

D)good

26.

(26)有以下程序

#include stdio.h

void fun(int *a,int *b)

{ int *c;

c=a;a=b;b=c;

}

main()

{ int x=3,y=5,*p=x,*q=y;

fun(p,q); printf("%d,%d,",*p,*q);

fun(x,y);printf("%d,%d\n",*p,*q);

}

程序运行后输出的结果是

A)3,5,5,3

B)3,5,3,5

C)5,3,3,5

D)5,3,5,3

27.

(27)有以下程序

#include stdio.h

void f(int *p,int *q);

main()

{ int m=1,n=2,*r=m;

f(r,n); printf("%d,%d",m,n);

}

void f(int *p,int *q)

{p=p+1;*q=*q+1;}

程序运行后的输出结果是

A)1,3

B)2,3

C)1,4

D)1,2

28.

(28)以下函数按每行8个输出数组中的数据

#include stdio.h

void fun(int *w,int n)

{ int i;

for(i=0;in;i++)

{ ____________

printf("%d ",w[i]);

}

printf("\n");

}

下划线出应填入的语句是

A)if(i/8==0) printf("\n");

B)if(i/8==0) continue;

C)if(i%8==0) printf("\n");

D)if(i%8==0) continue;

29.

(29)若有以下定义

int x[10],*pt=x;

则对数组元素的正确引用是

A)*x[10]

B)*(x+3)

C)*(pt+10)

D)pt+3

30.

(30)设有定义:char s[81];int i=0;,以下不能将一行(不超过80个字符)带有空格

的字符串正确读入的语句或语句组是

A)gets(s);

B)while((s[i++]=getchar())!=~\n~);s[i]=~\0~;

C)scanf("%s",s);

D)do{scanf("%c",s[i]);}while(s[i++]!=~\n~);s[i]=~\0~;

31.

(31)有以下程序

#include stdio.h

main()

{ char *a[]={"abcd","ef","gh","ijk"};int i;

for(i=0;i4;i++) printf("%c",*a[i]);

}

程序运行后的输出结果是

A)aegi

B)dfhk

C)dfhk

D)abcdefghijk

32.

(32)以下选项中正确的语句组是

A)char s[];s="BOOK!";

B)char *s;s={"BOOK!"};

C)char s[10];s="BOOK!";

D)char *s;s="BOOK!";

33.

(33)有以下程序

#include stdio.h

int fun(int x,int y)

{ if(x==y) return (x);

else return((x+y)/2);

}

main()

{ int a=4,b=5,c=6;

printf("%d\n",fun(2*a,fun(b,c)));

}

程序运行后的输出结果是

A)3

B)6

C)8

D)12

34.

(34)设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应该选择的存储类别是

A)auto

B)register

C)static

D)auto 或register

35.

(35)有以下程序

#include stdio.h

int b=2;

int fun(int *k)

{ b=*k+b;return (b);}

main()

{ int a[10]={1,2,3,4,5,6,7,8},i;

for(i=2;i4;i++) {b=fun(a[i])+b; printf("%d ",b);}

printf("\n");

}

程序运行后的输出结果是

A)10 12

B)8 10

C)10 28

D)10 16

36.

(36)有以下程序

#include stdio.h

#define PT 3.5 ;

#define S(x) PT*x*x ;

main()

{ int a=1,b=2 ; printf("%4.1f\n",S(a+b));}

程序运行后的输出结果是

A)14.0

B)31.5

C)7.5

D)程序有错无输出结果

37.

(37) 有以下程序

#include stdio.h

struct ord

{ int x,y; } dt[2]={1,2,3,4};

main()

{ struct ord *p=dt;

printf("%d,",++p-x); printf("%d\n",++p-y);

}

程序的运行结果是

A)1,2

B)2,3

C)3,4

D)4,1

38.

(38)设有宏定义:#define IsDIV(k,n) ((k%n==1)?1:0)且变量m已正确定义并赋值,

则宏调用:IsDIV(m,5)IsDIV(m,7)为真时所要表达的是

A)判断m是否能被5或者7整除

B)判断m是否能被5和7整除

C)判断m被5或者7整除是否余1

D)判断m被5和7整除是否都余1

39.

(39)有以下程序

#include stdio.h

main()

{ int a=5,b=1,t;

t=(a2)|b; printf("%d\n",t);

}

程序运行后的输出结果是

A)21

B)11

C)6

D)1

40.

(40)有以下程序

#include stdio.h

main()

{ FILE *f;

f=fopen("filea.txt","w");

fprintf(f,"abc");

fclose(f);

}

若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt的内容为

A)helloabc

B)abclo

C)abc

D)abchello

2009年3月二级C语言程序设答案

选择题:

1-10: DACDC ABABC

11-20:CBDDA CDBCB

21-30:CDABA BACBC

31-40:ADBCC CBDAC

填空题:

(1)19

(2)白盒

(3)顺序结构

(4)数据库管理系统(DBMS)

(5)菱形

(6)4

(7)"x/y=%d"

(8)能

(9)s=0

(10)1AbCeDf2dF

(11)7777654321

(12)max(int a,int b)

(13)NULL

(14)1001,ChangRong,1098.0

(15)p=p—next