2001年4月份全国高等教育自学考试计算机基础与程序设计试题及答案

Python018

2001年4月份全国高等教育自学考试计算机基础与程序设计试题及答案,第1张

2001年4月份全国高等教育自学考试

计算机基础与程序设计试题及答案

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。

1.I/O设备指的是计算机的()

A、存储设备

B、输入和输出设备

C、控制器

D、运算器

2.具有只读功能的内存储器是指()

A、ROM

B、RAM

C、硬盘

D、CD-ROM

3.C语言源程序的基本单位是()

A、过程

B、函数

C、子程序

D、语句

4.字符串常数"CHINA"在内存中存储时占的字节数是()

A、5个

B、6个

C、7个

D、8个

5.设有int p,q;以下不正确的语句是()

A、p*=3

B、p/=q

C、p+=3

D、p&&=q

6.如果a=1,b=2,c=3,d=4,则表达式a>b?a:cA、1

B、2

C、3

D、4

7.下面程序段的运行结果是( )

main( )

{Int a=11,b=10

a-=b+1;

printf("%dn",a);

}

A、1

B、0

C、2

D、5

8.下列程序段执行后输出结果为()

int i=-1;

if(i<=0)printf("****n");

else printf("%%%%n");

A、****C

B、%%%%

C、%%%%C

D、****

9.若所用变量已正确地定义,则下列程序段输出结果为()

a=10;b=50;c=30;

if(a>b)a=b

b=c;c=a

printf("a=%d,b=%d,c=%dn",a,b,c);

A、a=10,b=50,c=10

B、a=10,b=30,c=10

C、a=50,b=30,c=10

D、a=50,b=3,c=50

10.下述循环的循环次数是()

int k=2;

while(k=0)printf("%d",k);

k--;printf("n")

A、无限次

B、0次

C、1次

D、2次

11.在下列选项中,没有构成死循环的程序段是()

A、int i=100;

while(1)

{i=i0+1;

if(i>100)break;

}

B、for(;;)

C、int k=1000;

do(++k;) while(k>=10000);

D、int s=36;

while(s);--s;

12.若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是()

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

p=a

A、*(a+i)

B、a[p-a]

C、p+i

D、*(&a[i])

13.下面能正确将字符串"Boy"进行完整赋值操作的语句是()

A、char s[3]={'B','o','y'};

B、char s[ ]="Boy";

C、char s[3]={"Boy"};

D、char s[3];

s[0]='B';s[1]='o';s[2]='y'

14.以下程序段的输出结果是( )

char arr[ ]="ABCD";

char*ptr;

for(ptr=arr;ptrprintf("%sn",ptr);

A、ABCD

B、

A

C、

D

D、

ABCD

    B

  C

  BCD

    C

  B

  CD

    D

  A

  D

15.下面说法不正确的是()

A、一个源程序文件由一个或多个函数组成。

B、一个C程序由一个或多个源程序文件组成。

C、一个C程序以函数为独立的编译单位。

D、一个C程序必须有一个main()函数。

16.C语言的auto型变量是()

A、存储在动态存储区中。

B、存储在静态存储区中。

C、存储在计算机CPU的寄存器中。

D、存储在外存储器中。

17.以下程序的运行结果是()

void swapl(x,y)

int x,y;

{int t;t=x;x=y;y=t;}

void swap2(p1,p2)

int *p1,*p2;

{*p1=*p2;*p2=*p1;}

main()

{int a=3,b=5,*x1=&a,*x2=&b;

swap1(a,b);

printf("a=%d,b=%dn",a,b);

swap2(x1,x2);

printf("a=%d,b=%dn",a,b);}

A、

a=5,b=3

B、

a=3,b=5

C、

a=5,b=3

D、

a=3,b=5

  a=5,b=3

  a=3,b=5

  a=3,b=3

  a=5,b=5

18.下列定义中,不是指针数组定义的是( )

A、int *p[5];

B、float *q[4];

C、int (*r)[6];

D、char *w[7];

19.以下程序的运行结果是()

#define sl(x)(3.14*(x)*(x))

#include

main()

{float x,s;

s=s1(10);

printf("%.2fn",s);}

A、3.14

B、31.40

C、314.00

D、6.28

20.测试文件是否结束函数的函数名是()

A、feof

B、EOF

C、eof

D、FEOF

二、多项选择题(本大题共10小题,每小题2分,共20分)在每小题列出的五个选项中有二至五个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。多选、少选、错选均无分。

21.下列哪些设备属外存储设备()

A、RAM

B、光盘

C、硬盘

D、软盘

E、磁带

22.?X*.C可以代表的文件是()

A、AXCD.C

B、AXCD.D

C、ABX.C

D、RX.C

E、XX1234.C

23.若有int x;float y;指出下面结果为整型数的表达式()

A、(int)(x+y)

B、(int)x+y

C、'a'+x

D、x+(int)y

E、x*y

24.若所用变量已正确定义,下列for循环语句中语法正确的有()

A、for(x=0;i=0;i<=10;i++)

x++;

B、for(x=0,i=0,i<=10,i++)

x++;

C、for(x=0,i=0;i<=10;i++)

x++;

D、i=0;x=0;

for(i<=10;i++)

x++

E、i=0;x=0;

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

x++

25.若有定义及赋值:()

int y,*p,*p1;

p=&y;p1=p;*p1=4;

则可以输出变量y的地址的语句是

A、printf("%un",y);

B、printf("%un",p);

C、printf("%un",*p);

D、printf("%un",&y);

E、printf("%un",*p1);

26.若有定义及赋值:()

int a[10]={0,1,2,3,4,5,6,7,8,9},*p;

p=a;

则引用a中值为5的元素的表达式是

A、a[5]

B、a[4]

C、*(a+5)

D、p[5]

E、*(p+4)

27.若有定义及赋值:()

int a[6][6],*p;

p=*a;

则下列各式中表示地址的表达式是

A、a[1]

B、a[1]+1

C、a[3][3]

D、&a[1][3]

E、p[0][0]

28.若有定义及赋值:()

int x[5][6],*p;

p=*x;

则不能正确引用数组元素x[0][2]的值的表达式是

A、x[0][2]

B、p[0][2]

C、x[0]+2

D、*x+2

E、*(*x+2)

29.下面各式正确的是()

A、struct 1_num

{long num;struct 1_num*next;}num1,*p1;

p1=&num1;

B、struct animal

{char name [30],float weight,}rabbits;

C、struct star

{int bh,char name [20],}my_star;

my_star.name="moon";

D、struct {char x[20];char y[30];int u;}x1,y;

E、struct food

{int code;char name [30];struct food *p;};

struct food *tail;

30.设有int y,u=0,x=15,下列各项中能使y值为0的是()

A、y=x∧x;

B、y=x∣u;

C、y=x>>4;

D、y=x&u;

E、y=~u;

第二部分非选择题

三、填空题(本大题共10小题,每小题1分,共10分)

31.写出查看A盘TC子目录下扩展名为C的所有文件的目录操作命令C:>____________。

32.组成C程序的基本单位是____________。

33.putchar()函数的功能是____________。

34.当s=7时,执行以下程序段后x=____________。

if((s>0)&&(s<=10))

if((s>=3)&&(s<=6))x=2;

else if((s>1)||(s>8))x=3;

else x=1;

else x=0;

35.设i和x都是int型,则for循环语句最多执行次数为____________。

for(i=0,x=0;I<=9&&x!=876;i++)scanf("%d",&x);

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

main()

{int a[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;

for(i=0;i<4;i++)p[i]=&a[i*3];

printf("%dn",p[3][2]);}

37.定义变量可以在函数内部,也可以在函数外部,在函数内部定义的变量称为____________。

38.若有定义int x=3,*p;则使p指向变量x的赋值语句为____________。

39.共用体的所有成员共享同一段存储空间,它的各个成员的数据类型可以是____________。

40.设有FILE*fp;则关闭fp所联系文件的C语句是____________。

四、简答题(本大题共4小题,第41、42每小题2分,第43、44每小题3分,共10分)

41.简述在Turbo C 2.0集成开发环境下完成一个C程序的全过程。

42.写出下列程序段所对应的数学式子。

if(x!=0)

if(x>0)y=1;

else y=-1;

else y=0;

43.定义char *string="I am a boy";

和定义char *string;

string="I am a boy";

等价吗?为什么?

44.简述C对ASCII码文件或二进制文件的操作步骤。

五、阅读分析题(本大题共10小题,每小题2分,共20分)

45.阅读下列程序,写出运作结果

main()

{int a=100,b=-1;

printf("a=%d,%xn",a,a);

printf("b=%x,%un",b,b);}

46.下面是判断一个学生考试成绩及格与否的程序(成绩A,或B,或C者为及格;成绩为D者不及格):

main()

{char mark=''A'';

switch(mark)

{case''A'':

case''B'':

case''C'':printf(">=60n");

case''D'':printf("<60n");

default:printf("Errorn");}}

该程序执行后会产生什么错误?请分析并予以更正。

第47题,第48题,第49题请参阅下面程序,并回答相关问题

main()

{int u,v,a,b,t,r;

u=24;v=16;

if(u>v){t=u;u=v;v=t;}

a=u;b=v;

while((r=%ba)!=0)

{b=a;a=r;}

printf("a=%dn",a);

}

47.程序的输出结果是多少?

48.该程序完成什么功能?

49.若将while循环替换为do-while循环,请写出相应的程序段。

第50题,第51题,第52题请参阅下面程序,并回答相关问题。

long fac(int n)

{if(n>0)return n*fac(n-1);

else return 1L;

}

main( )

{int i,m;

long s=0;

scanf("%d",&m);

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

s=s+fac(i);;

printf("%1dn",s);

}

50.该程序的功能是什么?fac函数是一个什么函数?

51.若fac函数的返回值定义为int型,合适吗?

52.如果求(1!)!+(2!)!+(3!)!+…+(m!)!,程序如何修改?

第53题、第54题请参阅下面程序,并回答相关问题。

struct food

{int amount;

struct food*next;

}*head=NULL;

void create(int each_amt)

{struct food * p;

p=(struct food*)malloc(sizeof(struct food));

p→amount=head_amt;

p→next=head;

head=p;

}

53.语句p=(struct food *)malloc(sizeof(struct food));

和p→amount=each_amt;是功能是什么?

54.语句p→next=head;head=p;的功能是什么?

六、程序设计题(本大题共2小题,第55题8分,第56题12分,共20分)

55.对任意一个3行3列的二维整型数组,编程实现:

(1)从键盘对数组元素赋初值。

(2)查找每一列中元素值最大的元素并输出其值及行下标和列下标。

(假设数组中各元素值都不相同)

56.编写字符串拷贝函数将指针str2指向的字符串复制到由指针str1所指的字符串中。请在主函数中调用字符串拷贝函数并输出str1指向的字符串。

(不得用C中的strcpy标准库函数)

计算机基础与程序设计试卷参考答案

一、单项选择题(本大题共20小题,每小题1分,共20分)

1.B

2.A

3.B

4.B

5.D

6.C

7.B

8.D

9.A

10.B

11.C

12.C

13.B

14.D

15.C

16.A

17.D

18.C

19.C

20.A

二、多项选择题(本大题共10小题,每小题2分,共20分)

21.BCDE

22.ADE

23.ACD

24.CE

25.BD

26.ACD

27.ABD

28.CD

29.ADE

30.ACD

三、填空题(本大题共10小题,每小题1分,共10分)

31.DIR A:TC*.C

32.函数

33.向终端输出一个字符

34.3

35.10次

36.12

37.局部变量

38.p=&x

39.不相同的

40.fclose(fp)

四、简答题(本大题共4小题,第41、42题每题2分;第43、44题每题3分,共10分)

41.[参考答案]

(1)利用编辑功能生成C源程序。

(2)利用编译功能生成相应的目标程序。

(3)利用连接功能生成可执行程序。

(4)运行可执行程序。

42. [参考答案]

y=-1(x<0)

y=0(x=0)

y=1(x>0)

43. [参考答案]

(1)等价。(1分)

(2)因为string是字符型指针变量。(1分)

(3)无论哪种赋值方式都只是将字符串的首地址赋给了string,而不是将整个字符串赋给了string。(1分)

44[参考答案]

(1)按规定的格式打开文件。(1分)

(2)对打开的文件进行读/写操作。(1分)

(3)关闭已打开的文件。(1分)

五、阅读分析题(本大题共10小题,每小题2分,共20分)

45. [参考答案]

a=100,64(1分)

b=ffff,65535(1分)

46. [参考答案]

(1)该程序有逻辑错误。当mark为''A''(或''B''或''C'')时,三条printf语句全部要执行一次。(1分)

(2)要得到正确的结果,应做下面修改:(1分)

case''C':printf(">=60n");break;

case''D'':printf("<60n");break;

47. [参考答案]

a=8(2分)

48. [参考答案]

该程序用于求u和v的最大公约数。(2分)

49. [参考答案]

while语句可以改为:(2分)

r=b%a;

do

{

if(f= =0)break;

b=a;a=r;

}while((r=b%a)!=0);

50. [参考答案]

51. [参考答案]

不合适。会产生整数溢出。

即使定义为long型,输入的m值也不宜过大,否则仍会产生溢出。(2分)

52. [参考答案]

只要将s=s+fac(i)改为:

s=s+fac(fac(i))即可。(2分)

53. [参考答案]

(1)前一句用于创建一个新结点,并使指针P指向新结点。(1分)

(2)后一句用于接受调用程序的实参,并将其值赋给新结点的成员amount。(1分)

54. [参考答案]

(1)前一句用于将新结点与原head指向的结点串接在一起。(1分)

(2)后一句用于使head指向新加入的结点P。(1分)

六、程序设计题(本大题共2小题,第55题8分,第56题12分,共20分)

55. [参考答案]

参考程序如下:

#include

void main(void)

{

int i,j,im,jm,x[3][3],max;

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

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

scanf("%d",&x[i][j]);

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

{

max=x[0][j];im=0;jm=j;

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

if(max {

max=x[i][j];

im=i;

jm=j;

}

printf("i=%d j=%d max=%dn",i,j,max);

}

}

56. [参考答案]

参考程序如下:

#include

void strcpy(char *,char * );

void main(void)

{

char *str1,*str2="abcdef";

strcpy(str1,str2);

printf("%s",str1);

}

void strcpy(char *s1,char *s2)

{

int i=0;

while((s1[i]=s2[i])!='''')

i++;

}

一、单选题(共60小题,每题1分,共60分)

1. 执行下列程序中的输出语句后,x的值是______。(知识点3.10)

main()

{int x ;

printf(“%d\n”,(x=5*6,x*2,x+20));}

A)30 B)60 C)50 D)80

2. 下列程序的输出结果是_______。(知识点3.8)

main()

{int x=1,y=0,z;

z=(x<=0)&&(y- ->=0);

printf(“%d %d% d%\n”,z,x,y) ;}

A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -1

3. 在C语言中,下列选项属于合法的长整型常数的是_______。(知识点3.3)

A)0L B)1234567 C)0.0234567 D)3.14159e3

4. 下列选项中属于不正确的赋值语句的是_____。 (知识点3.6)

A)t++;B)n1=(n2=(n3=0)); C)k=i= =j; D)a=b,c=1;

5. 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)

则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________。 (知识点4.2)

A) scanf(“%d %d”,&a,&b);

x=getchar();y=getchar();

B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y);

C) scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);

D) scanf(“%d%d %c %c”, &a, &b,&x,&y);

6. 下列转义字符不正确的是_______。(知识点3. 5)

A)’\\’B)’\’C)’\053’ D)’\0’

7. 下列选项可作为C语言赋值语句的是_______。(知识点4.2)

A)x=3,y=5 B)a=b=6 C)i- -; D)y=int(x);

8. 当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_______。(知识点5.2)

A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c); D)a=c=b;

9. 有以下程序:

main()

{ unsigned int a ;

int b=-1;

a=b;

printf(“%u”,a);}

该程序运行后的输出结果是_______。(知识点4.5)

A)-1B)65535 C)32767 D)-32768

10. 若x、b、m、n均为int型变量,执行下面语句后b的值为_______。(知识点3.10)

m=20;n=6;

x=(- -m= =n++)?- -m:++n;

b=m++;

A)11 B)6 C)19D)18

11. 有以下程序:

main()

{ int a=111,b=222;

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

}

该程序运行后的输出结果是_______。(知识点4.5)

A)错误信息 B)111 C)222D)111,222

12. 以下程序的输出结果是_______。(知识点4.5)

main()

{ int a=2,c=5

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

A) a=%2,b=%5 B) a=2,b=5C) a=%%%d,b=%%%d D) a=%%d,b=%%d

13. 对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式是_______。(知识点3.8)

A)f=(f*100+0.5)/100.0B)f=(f*100+0.5)/100

C)f=(int)(f*100+0.5)/100.0 D)f=(f/100+0.5)*100

14. 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行(m=a>b)&&(n=c>d) 后m,n的值为______。(知识点5.2)

A) 2,2 B) 2,0C) 0,2D) 0,0

15. 语句printf(“%d\n”,strlen(“asd\n\x12\1\\”));的输出结果是______。(知识点7.3)

A) 9 B) 11 C) 7D) 8

16. 有以下程序:

main( )

{

int y=1234;

printf(“y=%6d”,y);

printf(“y=%+06d\n”,y);

}

该程序的运行结果是______。(知识点4.5)

A) y= 1234y=001234 B) y= 1234y=+01234

C) y=1234y=+01234D) y= 1234y=1234

17. 语句:printf(“%d”, !9);的输出结果是______。(知识点5.2)

A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9

18. 已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值的选项是______。(知识点5.3)

if(x<y)z=x;x=y ;y=z;

A) x=4,y=5,z=6 B) x=4,y=6,z=6

C) x=4,y=5,z=5 D) x=5,y=6,z=4

19. 下列选项中属于正确的switch语句的是______。(知识点5.4)

A)switch(1.0) B)swicth(1)

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

case 2.0 :printf(“B\n”); } case 2 :printf(“B\n”);}

C)switch((int)(1.0+2.5))D)switch(“a”)

{ case 1 :printf(“A\n”); { case “a” :printf(“A\n”);

case 1+2 :printf(“B\n”);} case “b” :printf(“B\n”);}

20. 若k为int型变量,以下语句段执行后的输出结果是______。(知识点5.3)

k=-3;

if(k<=0) printf(“####”)

else printf(“****”)

A) #### B) **** C) ####**** D) 有语法错误 ,不能执行

21. 当a=2,b=3,c=4,d=5时, 执行下面一段程序后x的值为_____。(知识点5.3)

if(a>b)

if(c<d)x=1 ;

else

if(a<c)

if(b>d)x=2 ;

else x=3 ;

else x=4 ;

else x=5 ;

A)2 B)3 C)4D)5

22. 下列程序的运行结果是________。(知识点6.3)

main()

{ int y=10;

do { y- - ;} while(- -y);

printf(“%d\n”,y- -);}

A)-1B)1 C)8 D)0

23. 下列程序的运行结果是________。(知识点6.5)

# include <stdio.h>

main()

{

int i ;

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

{ if(i %2)printf(“*”);

else continue ;

printf(“#”);

}

printf(“$\n”);

}

A)*#*#$ B)#*#*#*$ C)*#*#*#$D)***#$

24. 若x是int型变量,且有下面的程序片段: (知识点6.5)

for(x=5;x<8;x++)

printf((x%2)?(“**%d”):(“##%d\n”),x);

该程序片段的输出结果是 _______。

A)**5##6 B)##5 C)##5**6##7D)**5##6**7

**7**6##7

25. 有以下程序:

main()

{int a=1,b=0;

switch(a)

{ case 1:switch(b)

{ case 0:printf(“****”);break ;

case 1:printf(“####”);break ; }

case 2: printf(“$$$$”);break ; }

该程序的输出结果是________。(知识点5.4)

A)**** B)****$$$$C)****####$$$$ D) ####$$$$

26. 下列程序段的输出结果是_______。(知识点6.4)

int x=3;

do {printf(“%3d”,x-=2);}

while(!(--x));

A)1B)3 0C)1 -2D)死循环

27. 有以下程序,其中x、y为整型变量;

for(x=0,y=0;(x<=1)&&(y= 1);x++,y--);

printf(“x=%d,y=%d”,x,y);

该程序的输出结果是_____。(知识点6.5)

A)x=2,y=0B) x=1,y=0C) x=1,y=1D) x=0,y=0

28. 有以下程序段:

int n=0,p;

do { scanf(“%d”,&p);n++;} while(p!=12345&&n<3);

此处do-while循环的结束条件是_____。(知识点6.4)

A)p的值不等于12345并且n的值大于3

B)p的值等于12345并且n的值大于等于3

C)p的值不等于12345或者n的值小于3

D)p的值等于12345或n的值大于等于3

29. 在下述程序中,if (i>j) 语句共执行的次数是_____。(知识点6.5)

main()

{ int i=0,j=10,k=2,s=0;

for(;;)

{ i+= k ;

if(i>j)

{ printf(“%d”,s);

break ;

}

s+=i ;

}

}

A)4 B)7 C)5D)6

30. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。

main()

{ int n,k;float score,ave;

ave=0.0;

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

{ for(k=1;k<=4;k++)

{ scanf(“%f”,&score);

ave+=score/4 ;}

printf(“NO%d:%f\n”,n,ave);}

}

造成程序计算结果错误的语句行是_____。(知识点6.6)

A)ave=0.0;B)for(n=1;n<=10;n++)

C)ave+=score/4 ; D)printf(“NO%d:%f\n”,n,ave);

31. 若有以下定义:char s[10]={‘a’,’b’,’c’,’0’,’\0’,’2’,’\x32’,’\0’};执行语句printf(“%d”,strlen(s));的结果是_____。(知识点7.3)

A)3 B)4 C)8D)10

32. 设有数组定义:char array[ ]=“abcdef”;则数组array所占的空间为_____。(知识点7.3)

A)4个字节 B)5个字节 C)6个字节 D)7个字节

33. 有以下程序:

main()

{ char str[ ][10]={“China”,“Beijing”},*p=str;

printf(“%s\n”,p+10);}

该程序运行后的输出结果是_____。(知识点10.4)

A)China B)Beijing C)ng D)ing

34. 阅读下面程序,该程序段的功能是_____。(知识点7.1)

#include <stdio.h>

main()

{ int c[ ]={23,1,56,234,7,0,34},i,j,t;

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

{ t=c[i];j=i-1;

while(j>=0&&t>c[j]) { c[j+1]=c[j];j- - ;}

c[j+1]=t;}

for(i=0;i<7;i++)printf(“%d ”,c[i] );

putchar(’\n’);

}

A)对数组元素的升序排列B)对数组元素的降序排列

C)对数组元素的倒序排列D)对数组元素的随机排列

35. 下列程序的输出结果是_____。(知识点7.2)

main()

{ int n[3][3],i,j;

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

for(j=0;j<3;j++)n[i][j]=i+j;

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

for(j=0;j<2;j++)n[i+1][j+1]+= n[i][j];

printf(“%d \n”,n[i][j]);

}

A)14 B)0 C)6D)值不确定

36. 下列函数调用语句中含有______个参数。(知识点8.3)

func((f1,f2),(f2,f3,f4),f5)

A)3 B)4 C)5D)6

37. 下列程序的运行结果是_______。(知识点7.3)

#include <string.h>

main()

{ char *p1,*p2,ch[20]=“ABCDEFabcdef”;

p1=“1234”;p2=“abcd”;

strcpy(ch+1,p2+1);strcpy(ch+3,p1+3);

pintf(“%s\n”,ch);}

A)Abc4EFabcdeB)Abc4EFC)AbcdEFD)Abc4

38. 下列程序的运行结果是_______。(知识点8.6)

# include <stdio.h>

int f(int a)

{ switch (a)

{ case 0:return 0;

case 1:case 2:return 1;

}

return(f(a-2)+f(a-3));

}

main()

{ int b;

b=f(10);

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

}

A) 12 B)10 C)9D)8

39. 有以下程序:

fun(int n)

{ if(n= =1|| n= =2)return 2;

return s=n-fun(n-2);}

main()

{printf(“%d\n”,fun(7));}

该程序运行后的输出结果是_____。(知识点8.6)

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

40. 下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:

void sort(int a[ ],int n)

{ int i,j,t;

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

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

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

sort(&aa[3],5);

for(i=0;i<10;i++)printf(“%d,”,aa[i]);

printf(“\n”);

}

该程序运行后的输出结果是_____。(知识点8.4)

A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,

C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3,

41. 下列程序的运行结果是_____。(知识点8.3)

main()

{ int a=3,y;

y=fn(a,a++);

printf(“%d”,y);}

int fn(x,c)

{ int b;

if(x<c)b=1;

else if(x= =c)b=0;

else b=-1 ;

return(b);

}

A)3 B)-1 C)1 D)0

42. 下列程序的运行结果是_____。(知识点7.3)

main()

{ char arr[2][4];

strcpy(arr,“you”);strcpy(arr[1],“me”);

printf(“%s\n” ,arr);}

A)you me B)you C)meD)arr

43. 下列程序的输出结果是_____。(知识点8.8)

int f()

{ static int i=0;

int s=1;

s+=i;i++;

return s;}

main()

{ int i , a=0;

for(i=0;i<5;i++)a+=f();

printf(“%d\n”,a);}

A)20 B)24 C)25D)15

44. 程序中对fun函数有如下说明:

void *fun();

此说明的含义是_____。(知识点10.6)

A) fun函数无返回值

B) fun函数的返回值可以是任意的数据类型

C) fun函数的返回值是无值型的指针类型

D) 指针fun指向一个函数,该函数无返回值

45. 设有下列定义:static int x,*p=&x,*q;

scanf(“%d,%d”,p,q);

若输入3,4,则x的值为_____。(知识点8.8)

A)3 B)4 C)0D)无法确定

46. 设有以下程序:

int fun(char *s)

{ int n=0;

while(*s){ n++;s++ ;}

return n ;}

main()

{char y[ ]=“this_is_an_example。”;

printf(“%d\n”,fun(&y[6]));

}

该程序的输出结果是_____。(知识点:10.4)

A)12B)13 C)14 D)16

47. 下列程序的功能是_____。(知识点:10.4)

int fun(char *a)

{ char *b=a;

while(*b)b++;

{return b-a ;}

}

A) 比较两个字符串的大小 B)字符串的复制

C) 计算字符串的长度 D) 字符串的连接

48. 下列程序的输出结果是_______。(知识点10.2)

main()

{

int k=3,m=5,n=7

int *pk=&k,*pm=&m,*p

*(p=&n)=*pk*(*pm)

printf("%d\n",n)

}

A)5B)7 C)15 D)21

49. 下列程序的执行结果是_______。(知识点10.3)

main()

{ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;

printf(“%d”,*--p);}

A)非法 B)a[4]的地址 C)5 D)4

50. 以下函数返回a所指的数组中最小值所在的下标值:

fun(int *a, int n)

{ int i , j=0 , p

p=j ;

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

if(a[i]<a[p]) _______ ;

return(p);}

在下划线处应填入_______。(知识点10.2)

A)i=p B)a[p]=a[i] C)p=j D)p=i

51. 下列程序的运行结果是_______。(知识点10.2)

void fun(int *a,int *b)

{ int *k;

k=a;a=b;b=k;}

main()

{ int a=3,b=6,*x=&a,*y=&b;

fun(x,y);

printf(“%d %d”,a,b);

}

A)6 3 B)3 6 C)编译出错 D)0 0

52. 有如下程序:

#define f(x)x*x

main()

{ int i ;

i=f(4+4)/(2+2);

printf(“%d\n”,i);}

该程序执行后的输出结果是_______。(知识点9.1)

A)28 B)21 C)16 D)4

53. 下列程序的输出结果是_______。(知识点11.4)

struct tt;

{ int n1;char n2;float n3;

union uu{int u1[2];char u2[2];}su;

};

main()

{printf(“%d\n”,sizeof(struct tt));}

A)11 B)12 C)7 D)9

54. 下列程序的输出结果是_______。(知识点11.6)

struct LH

{ int n;struct LH *m;}p[4];

main()

{ int i;

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

{p[i].n=i;p[i].m=&p[i+1];}

p[i].m=p;

printf(“%d,%d\n”,(p[1].m)->n,p[3].m->n);

}

A)1,2 B)1,3 C)2,0 D)程序出错

55. 下列程序的输出结果是_______。(知识点11.6)

struct st

{ int x;int *y;}*p;

int dt[4]={10,20,30,40};

struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};

main()

{ p=aa;

printf(“%d ”,++p->x);

printf(“%d ”,(++p)->x);

printf(“%d ”,++(*p->y));}

A)10 20 20 B)50 60 21C)51 60 21 D)60 70 31

56. 字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结果是_______。(知识点11.8)

#include <stdio.h>

main()

{ union

{ int i[4];

long k;

char c[6];

}a,*s=&a ;

s->i[0]=0x39;

s->i[1]=0x38;

printf(“%c\n”,s->c[0]);

}

A)5 B)3C)6 D)9

57. 下列程序的运行结果是_______。(知识点12.2)

main()

{ unsigned c1=0xff,c2=0x00;

c1=c2|c1>>2;c2=c1^0236;

printf(“%x,%x\n”,c1,c2);

}

A)0x3f,0XA1B)3f,A1 C)ffff,61 D)3f,a1

58. 若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的排列次序正确的是_______。(知识点3.8)

A)sizeof,&= , <<, ^B)sizeof,<<, ^,&=

C)^,<<,sizeof, &= D)<<,^,&=,sizeof

59. 有以下程序:

#include <stdio.h>

void fun(char *fname,char *st)

{ FILE *myf;int i;

myf=fopen(fname,“w”);

for(i=0;i<strlen(st);i++)fputc(st[i],myf);

fclose(myf);

}

main()

{ fun(“test.t”,“new world”);fun(“test.t”,“hello,”);}

执行该程序后,文件test.t中的内容是_______。(知识点13.4)

A)hello,B)new worldhello, C)new world D)hello,rld

60. 有以下程序:

#include <stdio.h>

main()

{ FILE *fp;int i=20,j=30,k,n;

fp=fopen(“d1.dat”,“w”);

fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);

fclose(fp);

fp=fopen(“d1.dat”,“r”);

fscanf(fp,“%d%d”,&k,&n);printf(“%d %d\n”,k,n);

fclose(fp);}

该程序运行后的输出结果是_______。(知识点13.4)

A)20 30 B)20 50 C)30 50 D)30 20

C语言

第二章

一.bai选择题du

1.B 2.C 3.D 4.B 5.B 6.A 7.B 8.A 9.D 10.C C

11.B C 12.B 13.A 14.D B A 15.C

二.填空题

1.3,1

2.2

3.4

4.-264

5.n=1

三.简答题

1.字符zhi常量dao和字符串常量有何区别?

答:字符串常量和字符常量是不同的量。它们之间主要有以下区别:

(1)字符常量由单引号括起来的一个字符,字符串常量由双引号括起来字符序列。

(2)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量,但是可以用一个字符数组来存放一个字符串常量。在数组一章内予以介绍。

(3)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符"2.简述转义字符的作用并举例加以说明。" (ASCII码为0)。这是字符串结束的标志。

使用转义符“\”与一些特殊字符构成转义字符。用以表示非图形字符,如退格、换行等,也可以表示成字符型常量。转义字符主要用来表示那些用一般字符不便于表示的控制字符。例如’\n’就是一个转义字符,用来表示“回车换行”。

3.简述数据类型转换规则并举例加以说明。

数据类型转换遵循如下规则:

a)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

b)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。

c)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

d)char型和short型参与运算时,必须先转换成int型。

e)在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

第三章

思考与习题

一、单选题 1.C2.D3.B4.B5.C

6.C7.B8.A9.D10.B

11.D12.C13.A14.D

二、填空题

答案:

1.顺序结构、选择结构、循环结构

2.scanf( )、printf( )

3.1

4.2

5.1

6.1

2

3

7.s=254

8.8

三、简答题

答案:

1.结构化程序设计的基本思想是:任何程序都可以通过顺序结构、选择结构、循环结构表示。复杂程序是经过这三种基本结构反复嵌套使用而构成的。结构化程序的优点是程序模块结构清楚,层次分明,易于读写。

2.关系运算是通过C语言提供的6种关系运算符对两个值的大小等关系进行比较。

逻辑运算既通过三种逻辑运算符对逻辑量进行与、或、非的运算即逻辑运算。

条件运算是通过条件运算符“?:”构造的条件表达式:表达式1 ? 表达式2 :表达式3,根据表达式1的值判断条件表达式的最终计算结果是取表达式2的值还是取表达式3的值。

3.不是,虽然空语句是什么也不执行的语句,但是在程序中空语句可用来构成循环结构中的空循环体。

4.如果某个量的值不为0时,则在逻辑运算中被判别为真;否则,如果其值为0时,被判别为假。

5.条件表达式和条件语句都可以根据给定的条件进入不同的分支执行语句。条件表达式语句简练,如果选择结构比较简单,可以采用条件表达式来实现。而通过条件语句,以及语句的嵌套,可以实现更复杂的选择结构。

四、设计题目

答案:

1.

#include "stdio.h"

void main()

{

int x=0

for(x=0x<=10x++)

printf("square(%d)=%d\n",x,x*x)

}

2.

# include "stdio.h"

void main()

{

int x, y, z, max, min

printf("Please input three integer number:")

scanf("%d %d %d", &x, &y, &z)

min = max = x

if(x==y &&y==z)

printf("x = y = z, max=min=%d\n", max)

Els

{

if (y>max)

max = y

if (z>max)

max = z

if (y<min)

min = y

if (z<min)

min = z

printf("max=%d, min=%d\n", max, min)

}

}

3.

# include "stdio.h"

void main()

{

char c, s[50]="", i=0

c=getchar()

while(c!='\n')

{

if(c<'0'|| c>'9')

{

s[i]=c

i++

}

c=getchar()

}

printf("%s\n", s)

}

4.

# include "stdio.h"

void main()

void main()

{

int i,j

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

{

for(j=1j<=i&&j<=9j++)

printf("%d*%d=%d\t",i,j,i*j)

printf("\n")

}

}

5.

# include "stdio.h"

void main()

{

int x, i=1

int n=88

printf("please input a number.\n")

scanf("%d",&x)

while(i<10)

{

if(x!=n)

{

if(x >n)

printf("%d>n! Try again!\n", x)

else

printf("%d<n! Try again!\n", x)

scanf("%d",&x)

i++

}

else

{

printf("You are right, the number is %d\n",n)

break

}

printf("You are right, the number is %d\n",n)

break

}

}

if(i==10)

printf("You have tried 10 times. Game over!\n")

}

6.

#include "stdio.h"

void main()

{

int i=1

float j ,sum

sum=1.0

do

{

j=1.0/(i*(i+1))

sum=sum+j

i=i+1

}

while(j>=0.001||i<=20)

printf("sum=%f\n",sum)

}

7.

#include "stdio.h"

void main()

{

int k

float sum=0

for(k=1k<=100k++)

sum=sum+k

for(k=1k<=50k++)

sum=sum+k*k

for(k=1k<=10k++)

sum=sum+1.0/k

printf("sum=%f\n",sum)

}

8.

#include "stdio.h"

void main()

{

int k

int m,n,t

for(k=100k<=999k++)

{m=k/100

n=k/10%10

t=k%10

if(m*m*m+n*n*n+t*t*t==k)

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

}

}

9.

#include "stdio.h"

void main()

{

int k

int m,n,t

for(k=1k<=3k++)

{

m=k*2-1

n=3-k

for(t=1t<=nt++)

printf(" ")

for(t=1t<=mt++)

printf("*")

printf("\n")

}

}