计算机基础与程序设计试题

 

20067计算机基础与程序设计试题

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

1.存储量1MB等于(   )

A.23字节          B.210字节       C.220字节        D.230字节

2.下面数据中最小数是(   )

A.(0.1100)2      B.(0.64)8                  C.(0.8125)10          D.(0.D)16

3.Turbo C 2.0中,寻求在线帮助可按键(   )

A.F1         B.F5                C.F9              D.F10

4.设有 int a =3, b=-4, c=0;表达式((a>b)?a:b)&&c<0的值是(   )

A.-4          B.0                 C.1            D.3

5.若有下列程序段,欲使a=2b=3,对应正确的数据输入方法是(   )

(其中表示换行)

int a, b;     scanf(a=%d, b=%d,&a,&b);

A.2                                                  B.a=2  b=3

  3

C.a=2, b=3                                       D.2,3

6.下面程序段的输出结果是(   )

main( )

{   int s, p;

s=p=5;

p=--s;

p++;++p;

printf(%d/n,p);

}

A.5               B.6               C.7                 D.8

7.关于if语句下面叙述正确的是(   )

A.只有当if语句中表达式的值等于1时,才执行if的内嵌语句

B.只有当if语句中表达式的值为假时,才执行if的内嵌语句

C.只有当if语句中表达式的值等于0时,才执行if的内嵌语句

D.只要if语句中表达式的值非0时,就执行if的内嵌语句

8.若执行下面程序时,从键盘输入数据34,则程序的输出结果是(   )

main( )

{    int a,b,s;

scanf(%d, &a,&b);

s=a;

if(a  s=b

s=s*s;

printf(%d,s);

}

A.9              B.12             C.16                 D.25

9.int x=0; while(x= =0); 的循环次数是(   )

10.下面程序段的输出结果是(   )

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

{for (j=1;j<3;j++)

   printf(%d , i+j);
 printf(
/n);}

A.2  3  3  4                                          B.2  3  4

C.2  3                                                    D.2

  3  4                                                        3  4

11.下面程序的输出结果是(   )

mian (  )

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

i=2;

printf(%d″,a[i++]);

}

12.下面程序的输出结果是(   )

main(  )

{  int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

   int i,j,k=0;

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

k=k+a[i][0];

   printf(%d/n″,k);

}

13.以下正确的函数定义形式是(   )

A. double fun(int x, int y)                           B. double fun(int x; int y)

C. double fun(int x, int y);                          D. double fun(int x, y);

14.关于变量以下不正确的说法是(   )

A.在不同函数中可以使用相同名字的变量

B.形式参数是全局变量

C.在函数内定义的变量只在本函数范围内有效

D.在函数内的复合语句中定义的变量是局部变量

15.设有语句int a[4][10],*p=*a;则下列表达式中不是地址表达式的是(   )

A.&a[1][2]          B.a[3]              C.*(p+1*10+2)      D.p+1*10+2

16.下面关于结构体类型变量定义不正确的是(   )

A. struct score                                          B. struct

   {                                                            {

int math;                                                 int math;

int Chinese;                                             int Chinese;

    }Li, Wang;                          }Li, Wang;

 

C. struct score                                          D. struct score

  {                                                             {

int math;                                                  int math;

int Chinese;                                              int Chinese;

   };                                                           };Li, Wang;

struct score Li, Wang;

17.下面各个运算符的优先级从左到右依次降低的是(   )

A.&  >>   |   ^                                    B.~   &  >>  |

C.>>   &  ^   |                                     D.~  >>  &  ^

18.设有说明:int u=1, v=2;表达式:u+v<<2的值是(   )

A.-1                 B.1            C.9            D.12

19.下面程序段中,能完成的功能是(   )

FILE *fp;

char ch;

fp=fopen(file1, rb+);

ch=fgetc(fp);

A.建立文件指针fp与文件file1的联系      B.file1文件中读一个字符

C.file1文件中写一个字符                     D.打开名为file1的二进制文件

20.在格式:fread(stu,size,n,fp);中,下面说法不正确的是(   )

A.stu是内存中存放数据的首地址             B.n表示读n

C.size是一个数据块的字节数                   D.fp表示文件指针

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

21.微机系统的主机包含的部件有(     

A.输入设备     B.存储器   C.输出设备    D.运算器     E.控制器

22.下面各选项中,能正确进行字符串操作的有(     

A. char s[ ]={a, b, c, d, e, /0};

B. char s[10];s=abcde;

C.char s[10];strcpy(s, abcde)

D.char s[10];getchar(s);

E.char s[10];gets(s);

23.若有以下定义和语句,则能正确表示数组a首元素地址的表达式有(     

double a[5],*p1

p1=a;

A.a           B.p1+1              C.*p1      D.&a[1]        E.p1

24.设有说明: int u=1, v=3, w=7;下面表达式的值为3的有(     

A.w>>1&v|u                                            B.u&v&w

C.u|v&w                                                  D.w&v<<1

E.v^w|u

25.C语言中,下面关于文件说法正确的有(     

A.按数据的组织形式,可分为文本文件和二进制文件

B.文件只能是ASCII码文件

C.文件能用fopen( )函数打开

D.文件只能是二进制文件

E.对打开的文件可以进行读或写操作

三、简答题(本大题共4小题,每小题4分,共16分)

26.简述C语言中标识符的命名规则并说明C语言中哪些名是用标识符来标识的?

27.变量有哪几种存储类别?指明它们存储数据的区域。

28.定义char*str=computer″;是将字符串″computer″赋值给变量str,这种说法对吗?为什么?

29.设有说明:

struct flower {char *part; char * color;} mum;

char*part_of_flower[3]={ ″花″,″茎″,″叶″}

char*seven_color[7]={ ″赤″,″橙″,″黄″,″绿″,″青″,″蓝″,″紫″}

试写出将mum的成员part定义为″花″、成员color定义为″黄″的C语句。

四、阅读分析题(本大题共6小题,每小题5分,共30分)

30.阅读下面程序,写出运行结果。

main( )

{  int a=789, x,y,z;

   x=a/100;

   y=a/10-10*x;

   z=a-10*y-100*x

printf(%d,%o,%x,%d, x,y,z,100*z+10*y+x);

}

31.阅读下面程序,并回答问题:

main( )

{  int a,b,x,y;

   scanf(%d,%d,&a,&b);

   x=a*a+b*b

   if(x>100)

   {y=x/100;printf(%d,y);}

   else printf(%d,a+b);}

1)若程序运行时,输入69,输出结果是什么?

2)说明程序的功能。

32.阅读下面程序,并回答问题:

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=b%a)!=0)

{b=a;a=r;}

   printf(a=%d/n,a);}

1)程序输出结果是什么?(2)该程序完成什么功能?(3)若将while循环替换为do-while循环,请写出相应的程序段。

33.阅读下面程序,写出运行结果。

int a=5, b=5;

chang1( )

{  int a=4;

   printf(a1=%d,b1=%d/n,a,b++);

}

chang2(int a, int b)

{  a++; b--;}

main( )

{  chang1( );a++,b++;chang2(a,b);

   printf(a2=%d,b2=%d/n,a,b);}

34.阅读下面程序,写出运行结果。

#include

#include

main( )

{  char p1,p2,srt[50]= abc, str1[50];

   p1=abc;p2=abc;

   puts(str);

   strcpy(str1,p1);

   p1=str1;

   printf(%s/n,strcat(p1,p2));

   strcpy(str+1,p1);

   printf(%s/n,str);}

35.设有说明语句int*p; 请分析下面语句的含义:

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

free(p);

五、程序设计题(本大题共2小题,每小题12分,共24分)

36.从键盘输入n*n个整型数(n20,组成nn列数组,打印出其上三角数组。

37.用循环语句编程打印下列图案,并以ASCII码的形式写到c盘根目录下的1x.dat文件中。(第一行的″$″在第20列)

      $

    $ $ $

  $ $ $ $ $

$ $ $ $ $ $ $

 


20064计算机基础与程序设计试题

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

1. CPU处理数据和指令的基本单位是字(Word),一个字的字长是(   )

A. 8bits                 B. 16bits         C. 32bits        D. CPU数据总线有关的bit位数

2. 与十进制1100等值的十六进制数是(   )

A. 44A                  B. 44C            C. 54A        D. 54C

3. 退出Turbo C 2.0返回系统,在主菜单File项中可选择(   )

A. Load          B. New               C. Save                    D. Quit

4. 设有int a=3, b=-4, c=5;表达式(a? a+b a-bb+4,a-=b+4)的值是(   )

A. –1             B. 0                   C. 3                       D. 7

5. 若有下列程序段,欲使a=2b=3,对应正确的数据输入方法是(   )

(其中表示换行)

  int a, b;

  scanf(a=%d  b=%d,&a, &b);

A. 2                                                        B. a=2 b=3

   3

C. a=2, b=3                                             D. 2,3

6. 下面程序段的输出结果是(   )

main()

{  int s, p;

   s=p=5;

   p=++s;

     p++; ++p;

     printf(%d/n,p);

   }

A. 5                                                                B. 6

C. 7                                                                D. 8

7. 下列if语句中,有语法错误的是(   )

A. if(x>y);

B. if(x=y)  x+y;

C. if(x!=y)  scanf(%d, &x)  else scanf(%d,&y)

D. if(x  {x++; y++;}

8. 下面程序段执行后的输出结果是(   )

int  i=-1;

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

else printf(%%%%/n);

A. ****                                                           B.%%%%

C. %%%%c                                                    D. ****c

9. 下面程序段的循环次数是(   )

int  k=2;

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

k--; printf(/n);

A. 0                  B. 1         C. 2                           D. 无限次

10. 下面程序段的输出结果是(   )

a=100;

while(a>120);

  a=a+1;

printf(%d,a);

A. 100            B. 101        C. 120                       D. 121

11. 下面程序执行后,i的值是(   )

main( )

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

   printf(%d,a[i++]);

}

A. 1                                                                B. 2

C. 3                                                                D. 4

12. 下面程序的输出结果是(   )

main( )

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

for(i=0;i<4;i+=2)   printf(%d, x[i][1]);

}

A. 5        1                                                      B. 5        2

C. 8        2                                                      D. 9        3

13. C程序中,若用基本数据类型所定义的变量调用函数,正确的说法是(   )

A. 由系统自动指定对应实参和形参是否共用存储单元

B. 对应实参和形参各占一个独立的存储单元

C. 对应实参和形参共用一个存储单元

D. 可以由用户指定对应实参和形参是否共用存储单元

14. 下面叙述中正确的是(   )

A. 不同函数中可以使用相同名字的变量

B. 形式参数是局部变量

C. 在一个函数内部定义的变量只能在本函数范围内有效

D. 在一个函数内部的复合语句中定义的变量在本函数范围内有效

15. 设有语句int  a[4][10],*p=*a;则下面表达式中属于地址表达式的是(   )

A. a[1][2]                                                               B. a[1]

C. *(p+1*10+2)                                               D. *(a[1]+2)

16. 下面定义不正确的是(   )

A. struct star                                                   B. struct star

  {                                                                    {

int  id                                                            int  id;

char  *name;                                                  char  *name;

  }  star1={1001, Moon};                          };  star1={1001, Moon};

C. struct                                                          D. struct  star

  {                                                                    {

int  id;                                                          int  id;

char  *name;                                                    char  *name;

  }  star1={123, Sun};                                  }  star1;

17. 下面各个位运算符的优先级从左到右依次升高的是(   )

A. | ^ & >>                                                      B. ^ >> & ~

C. << | ^ ~                                                       D. ~ | & >>

18. 设有说明:int u=1, v=14;表达式u+v>>2的值是(   )

A. 0                                                                B. 3

C. 5                                                                D. 7

19. 如果将文件指针fp指向文件末尾,正确的语句是(   )

A. feof(fp);            B. rewind(fp);    C. fseek(fp,0L,0);          D. fseek(fp,0L,2);

20. 下面程序段中,不能完成的功能是(   )

FILE *fp;

char ch =v;

fp=fopen(boy, rb+);

fputc(ch,fp);

A. 建立文件指针fp与文件boy的联系            B. boy文件中读取一个字符

C. boy文件中写一个字符                           D. 打开名为boy的二进制文件

二、多项选择题(本大题共5小题,每小题2分,共10)在每小题列出的五个备选项中有二至五个是符合题目要求的。

21. 总线是连接微机CPU、内存和外设之间传送信号的公共通道,微机的总线包括有

A. 电源线    B. 数据线    C. 地址线          D. 控制线   E. 网络线

22. 若定义 char c[11]; 可将字符串″I am a boy 赋给数组c,下面正确的选项有

A. c=I am a boy;                                       B. getchar(c);

C. gets(c);                                                       D. scanf(%s,c);

E. for(i=0;i<10;i++) scanf(%c,&c[i];c[10])=’/0’;

23. 若有如下定义和语句,则能正确表示数组a首元素地址的表达式有

int  a[10], *p;

p=a;

A. a[0]                                      B. a   C. p+1         D. p  E. *p

24. 设有说明:int  x=1, y=3; 下面表达式的值为2的有(     

A. y&~x    B. x^y    C. x|y     D. y|x>>1   E. x<<1|y>>2

25. C语言中,关于符号FILE下面说法正确的有(     

A. FILEC的关键字

B. FILE表示一种关于文件参数的结构体类型

C. FILE表示一种关于文件参数的结构体变量

D. FILE*可以用来说明文件指针

E. 文件指针指向的变量的数据类型是FILE

三、简答题(本大题共4小题,每小题4分,共16分)

26C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”?

27.什么是“直接递归调用”?什么是“间接递归调用”?

28.判断下面两程序段正确与否,并说明原因。

1char  str[12];  str=program;

2char *str;  str=program;

29.设有说明:

struct language {long spearer; char country[20];} chinese;

试写出对chinese的成员spearercountry分别赋值1250000000和”China”的C语句。

四、阅读分析题(本大题共6小题,每小题5分,共30分)

30.阅读下面程序,写出运行结果(已知AASCII码为65aASCII码为97)。

#include stdio. h

main( )

{  int k=100;char m;

m=k; putchar(m);

printf(,%d,%c,%o, k,m-32,m);

}

31.阅读下面程序,并回答问题:

main()

{  int x, y, z, c;

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

   if(x

   if(x

   if(x

   printf(%d, %d, %d, x, y, z);

}

1)若程序运行时,输入325,则输出结果是什么?

2)写出程序所实现的功能。

32.阅读下面程序,并回答问题:

main( )

{  int  m, n;

m=65;

n=14;

while(m!=n)

{  while(m>n)m-=n;

   while(n>m)n-=m;

}

printf(m=%d/n, m);

}

1)程序输出结果是多少?

2)外循环执行完一次时,mn的值分别是多少?

3)将while(n>m)n-=m;语句删除后,程序运行情况如何?

33.阅读下面程序,并回答问题:

gcd(int x, int y)

{  int  temp;

   while (y){temp=x%y; x=y; y=temp;}

   return x;

}

main()

{  int  a, b, y;

   scanf(%d, %d, &a, &b);

   y=gcd(a,b);

   printf(″最大公约数是:%d, y);

}

1gcd函数的返回值类型是什么?

2)若将return x写成return y会得到什么样的结果?

34.阅读下面程序,写出运行结果。

mian( )

{  char * str[ ]={Pascal, C Language, Dbase, Cobol};

   int k;

   for(k=0; k<4;k++)

   printf(%s/n, str[k]);}

35.阅读下面程序段,写出输出结果。

struct num

{  float f1;

   int j;

}u={5.6,8},*p=&u;

printf(%.2f,%d/n,u.f1, u.j);

printf(%.2f,%d/n, (*p).f1,p->j);

五、程序设计题(本大题共2小题,每小题12分,共24分)

36.若有nn列数组,试编写一程序,分别求出两条对角线元素之和。(从键盘输入n*n个整型数,n20

37.若在c:/tclt路径下有一个名为zz.dat的文本文件,它包括10个按升序排列的整数,且每两个数之间用逗号隔开,现要插入一个整数使该序列仍保持升序,并把新序列写入到c:/tclt路径下名为zzz.dat的文本文件中。

 


 2005年4月计算机基础与程序设计试题

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

1.与二进制数1011.01等值的十进制数是(   )

A.7.25                                                             B.11.05

C.11.25                                                           D.19.25

2.Unix是(   )

A.单用户、单任务的操作系统                         B.单用户、多任务的操作系统

C.多用户、单任务的操作系统                         D.多用户、多任务的操作系统

3.下面数据中最大的数是(   )

A.1010001.1012                                        B.(121.3)8

C.(97.6)10                                                               D.(51.5)16

4.断电后会使存储器失去信息的是(   )

A.CD-ROM                                                     B.RAM

C.ROM                                                           D.硬盘

5.一个二进制数位也称为一个(   )

A.word                                                           B.byte

C.KB                                                               D.bit

6.下面转义字符中,表示字符串结束的是(   )

A./ r                                                                B./ n

C./ 0                                                                      D./ f

7.Turbo C2.0中,若定义unsigned int a;则变量a在内存中分配的字节数是(   )

A.1                                                             B.2

C.4                                                             D.8

8.设有int x=2,y,z;执行z=y=x--;后,变量z的值是(   )

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

9.以十六进制形式输出整数的格式说明符是(   )

A.%u                                                              B.%ld

C.%x                                                              D.%o

10.下面合法的if语句是(   )

A.if(a=b)  c++;                                               B.if(a=  c++;

C.ifi(a< >b)  c++;                                           D.if(a=>b)  c++;

11.结束while(表达式)循环的条件是(   )

A.当表达式的值为0                                    B.当表达式的值不为0

C.当表达式的值为1                                    D.当表达式的值为非1

12.若有定义int a[3][5];则数组a在内存中占用的字节数是(   )

A.8                                                                 B.15

C.16                                                                      D.30

13.C语言中,当函数返回值的类型缺省时,表示该函数返回值的类型是(   )

A.char                                                             B.float

C.long                                                             D.int

14.若有说明:int *p,m=5,n;以下正确的程序段是(   )

A.p=&n;                                                          B.p=&n;

scanf(%d,n);                                           scanf(%d,*p);

C.scanf(%d,&n);                                      D.p=&n;

  P=n;                                                              *P=m;

15.变量的指针,其含义是指该变量的(   )

A.                                                                      B.地址

C.                                                                      D.一个标志

16.结构体是C提供的一种专门处理彼此相互有联系,数据类型(   )

A.不一致的多个数据的数据结构                            B.不一致的单个数据的数据结构

C.一致的多个数据的数据结构                         D.一致的单个数据的数据结构

17.下面列出的位运算符中,表示按位与操作的是(   )

A.~                              B.&                             C.^                              D.|

18.设有说明:int x=0x03,y=3;表达式x&~y的值是(   )

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

19.设有说明:int u=1,v=3,w=2;表达式(v>>1|u<<2&w的值是(   )

A.0                              B.1                              C.3                            D.5

20.设有说明:FILE *fpchar *filename=paper;

对于fp=fopen(filename,〃rb+);语句,下面说法正确的是(   )

A.打开名为filename的文件读写                      B.打开名为paper的文件读写

C.打开名为filename的文件只读                      D.打开名为paper的文件只读

二、多项选择题(本大题共5小题,每小题2分,共10)在每小题列出的五个备选项中有二至五个是符合题目要求的。

21.设有int a=3,b=-5;下面表达式值不等于1的有(     

A.a<0&&b<0                                                   B.a=fabs(b)-(a+1)

C.a                                                       D.(a,2,-5)= =(b,2,a)

E.! (a>0&&b<0)

22.若有定义int a[5];,则对a数组元素或地址的引用错误的有(     

A.&a[5]                                                          B.a[2]

C.a++                                                             D.*a

E.a[0]

23.若有定义及赋值:int  *p,a[4],i;p=a,则可以表示数组元素值的形式是(     

A.*(a+i)                                                          B.a+i

C.&a[i]                                                           D.a[i]

E.*(p+i)

24.设有说明:int u=1,v=3;下面表达式的值为3的是(     

A.v|u                                                               B.u&v

C.u ^ v|1                                                         D.v|u>>1

E.v&~u

25.设有关于结构体类型的定义:(     

  struct food

{

char name[20];

int kind;

}myfood*p;

 下面各个选项中语句都正确的是

A.p=&myfood;                                                B.p=&myfood;

  p->kind=5;                                                     strcpy(p->name,rice);

C.p=&myfood;                                                D.strcpy(myfood. name, pie);

p.kind=7;                                                       p=&myfood;

E.p=&myfood,p->kind=6;

  strcpy(myfood.name, apple pie);

三、简答题(本大题共4小题,每小题4分,共16分)

26.C语言的switch语句中,switch后面的“表达式”可以是哪些类型的表达式?

27.设有程序如下:

main( )

{

  char ch=A;

    while(ch<=E)

    {

    printf(%c, ch);

    ch++;

    }

 printf(/n);

  }

(1)    该程序的运行结果是什么?(2分)

(2)    如果要将给定程序的运行结果按相反的顺序输出,请写出相对应的程序。(2分)

28.什么是变量的作用域?什么是局部变量?什么是全局变量?

29.设从ASCII码文件〃DATA2. TXT〃中读取100个整型数据存放在数组array_y中。其说明语句为:

int array_y[100],j;

FILE *fp;

 请写出打开文件;用100次每次读一个整型数据的方法,将100个整型数据读入存放在数组array_y中;以及关闭文件的有关语句。

四、阅读分析题(本大题共6小题,每小题5分,共30分)

30.请阅读分析下面程序,然后写出运行结果。

      main( )

      {

         int x=8,y=-5;

printf(x= %d,y= % d / n,x,y);

x=x+y;y=x-y;x=x-y;

printf(x= %d,y= %d / n,x,y);

      }

31.请阅读分析下面程序,然后写出运行结果。

       main( )

       {

              int x=156,a,b,c;

              if(x>100)

              {

                     a=x/100;

                     x=x%100;

              }

              if(x>10)

              {

                     b=x/10;

                     c=x%10;

              }

              printf(%3d%3d%3d%3d,a, b, c, a*b*c);

       }

32.请阅读分析下面程序,然后写出运行结果。

       main( )

       {

              int k=4,i;

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

              {

                     switch(k)

                     {

                              case 4:

                                          printf(#);

                              case 3:

                                          printf(*);

                             default:

                                          printf(/n);

                                          break;

                             case 2:

                                          printf($);

                             case 1:

                                          printf(@);

                     }

                     k--;

              }

       }

33.请阅读分析下面程序,然后写出运行结果。

       f( )

       {

                     int a=3;

                     static int b=4;

                     a=a+1;

                     b=b+1;

                     printf(a= %d,b= %d/n,a,b);

       }

       main( )

       {

                     f( );

                     f( );

                     f( );

       }

34.请阅读分析下面程序,然后写出运行结果。

       main( )

       {

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

                p[0]=&a[0];

                p[1]=&a[3];

                p[2]=&a[6];

                p[3]=&a[9];

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

                {

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

                                   printf(%4d,p[i][j]);

                            printf(/ n);

                     }

       }

35.请阅读分析下面程序,然后写出运行结果。

       # include  stdio.h

       # include  string.h

       struct stu

       {

              char name[20];

              int chinese;

              int math;

              struct stu *next;

       };

       void main(void)

       {

              char *str[ ]={Zhang,Wang,Liu};

              int aver,x[3][3]={{80,75,85},{60,56,73},{90,83,76}};

              struct stu s;

              strcpy(s.name,str[1]);

              s.chinese=x[1][0];

              s.math=x[1][1];

              aver=s.chinese+s.math;

              printf(%s/t%d/t%d/t%6.2f/n,s.name,s.chinese,s.math.aver/2.0);

       }

五、程序设计题(本大题共2小题,每小题12分,共24分)

36.从键盘上输入10个整数,并将其存放在一数组中,求出该数组中所有大于零且为偶数的数的平均值。

37.从键盘上输入10个整数,用冒泡法将它们按从小到大的次序排列出来,并把排列的结果以ASCII码的形式写到c盘根目录下的文件zm1.dat中。

2004年7月计算机基础与程序设计试题

一、单项选择题。

1.(    )是用助记符来表示指令的符号语言。

A.机器语言           B.汇编语言   C.高级语言          D.语言处理程序

2.-123的原码是(    )

A.11111011            B.10000101       C.01111011                                D.0000101

3.下面四个选项中,均是合法整型常量的选项是(    )

A.160                    -0xffff                 011

B.-0xcdf                     01a                       0xe

C.-01                   986012             0668

D. -0x48a            2e5                       0x

4.叙述中不正确的是(    )

A.表达式a &=b等价于a=a & b                B.表达式a|=b等价于a=a|b

C.表达式a!=b等价于a=a!b                      D.表达式a=b等价于a=ab

5.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为1020AB,当从第一列开始输入数据时,正确的数据输入方式是(    )

:u表示空格。

int a1,a2;

char c1,c2;

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

A.10Au20B                        B.10uAu20uB

C.10uA20B                        D.10A20uB

6.以下printf语句的输出是(    )

printf(%%d\”%d%s,123,“123)

A.%123\”%d123                     B.%%d\”123123

C.%d123123                           D.上述语句语法有错

7.以下if语句语法正确的是(    )

A.if(x>0)printf(%f,x)                                 B.if(x>0){x=x+y;printf(%f,x);}

  else printf(%f,-x);                                 else printf(%f,-x);

C.if (x>0) {x=x+y;printf(%f,x);};               D.if(x>0){x=x+y;printf(%f,x)}

  else printf(%f,-x);                                 else printf(%f,-x);

8.若运行以下程序段时,从键盘输入2473(表示回车),则下面程序的运行结果是(    )

int c;

while ((c=getchar())!=’n’)

  switch(c-2)

    {case 0:

    case 1:putchar(c+4);

    case 2:putchar(c+4); break;

    case 3:putchar(c+3);

    default: putchar(c+2);break;

}

A.668977                     B.668966        C.66778777           D.6688766

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

int a=1,b=10;

do {b-=a;a++;}  while(b--<0);

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

A.a=3,b=11     B.a=2,b=8          C.a=1,b=-1               D.a=4,b=9

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

for(y=1;y<10;)  y=((x=3*y,x+1),x-1);

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

A.x=27,y=27                                     B.x=12,y=13

C.x=15,y=14                                     D.x=y=27

11.以下能对一维数组a进行正确初始化的语句式(    )

A.int a10=(0,0,0,0,0)                B.int a10={  }

C.int a ={0}                           D.int a10={10*1}

12.设变量定义为char s[]=hellonworldn″;则数组s中有(    )个元素。

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

13.以下正确的函数定义形式是(    )

A.float fun(int x,int y)                         B.float fun(int x;int y)

C.float fun(int x,int y);                        D.float fun(int x,y)

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

char *s=china;

printf(%s,%c,%cn,s,*s,s3);

A.c,c,n                  B.china,china,i     C.china,c,n          D.china,china,n

15.int *p1,*p2,i=1;p1=&i;p2=p1;表示(    )

A.i值赋给p2                  B.p1指向p2     C.p2指向i                    D.p2指向p1

16.说明一个结构体变量时系统分配给它的内存是(    )

A.各成员所需内存量的总和       B.结构体中第一个成员所需内存量

C.成员中占内存最大者所需的容量  D.结构体中最后一个成员所需内存量

17.以下对结构体变量stu中成员age的非法引用是(    )

struct student

{int age;

int num;

}stu,*p;

p=&stu;

A.stu.age               B.student.age         C.p->age        D.(*p).age

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

int a=3,b=10;

printf(%d,a<<2|b>>1);

A.1             B.5                  C.12                           D.13

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

# define MIN(x,y)  xy

int i=10,j=15,k;

k=10*MIN(i,j);

printf (%dn,k);

A.10                            B.15   C.100               D.150

20.下列语句中,将c定义为文件型指针的是(    )

A.FILE c;       B.FILE *c;          C.file c;            D.file *c;

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

1.______是规则的非空有穷集,具体地说,是解某一特定类型问题的一组规则。

2.按数据的组织形式,文件可分为____________

3.条件“2x<-10”的C语言表达式是______

4.以下程序段的运行结果是______

int x,y,z;

x=1;y=2;z=3;

x=y--<=xx+y!=z;

printf(%d,%d,x,y);

5.执行以下程序段后,v的值是______

# define WIDTH 80

# define LENGTH WIDTH+40

int v;

v=LENGTH*20;

6.下面程序段将输出computer,请填空。

int i,j;

char c[]=It’s a computer;

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

{ ______;

printf(%c,cj);

}

7.以下程序的运行结果是______

main()

{ increment();

increment();

increment();

}

increment()

{static int x=0;

x+=10;

printf (%5d,x);

}

8.下面程序段的运行结果是______

char *s1=AbcdEf,*s2=aB;

s1++;

t=(strcmp(s1,s2)>0);

printf(%dn,t);

9.以下程序段对输入的一个小写字母,将字母循环后移5个位置后输出。

如‘a’变成‘f,w’变成‘b’。

char c;

c=getchar();

if(c>=’a’&& c<=’u’) c=c+5;

else if(c>=’v’&& c<=’z’)______;

putchar(c);

10.下面程序段的运行结果是______

int x=7;

do

{printf(*)

x--;

}while(!(x%2));

三、阅读题(每小题4分,共16)

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

# include stdio.h

# define  N  3

void  main()

{ int j,k;

int f=1,s=0;

for(k=1;k<=N;k++)

{for(j=1;j

    f=f*k;

s=s+f;

printf(%d#    ,s);

}

}

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

int fun(int n)

{int t;

if((n==0)(n==1)) t=3;

else  t=n*fun(n-1);

return t;

}

void main()

  {printf(%dn,fun(4));}

3.写出以下程序的运行结果______

void main()

{ int x,y=1,z;

if(y!=0) x=5;

printf(%5d,x);

if(y==0)  x=4;

else  x=5;

printf(%5d,x);

x=1;

if(y<0)

    if(y>0) x=4;

    else  x=5;

printf(%5d,x);

}

4.写出以下程序的运行结果______

void main()

{ int a=1,b=2,c=3,*p;

p=&b;

pp(a,p,&b);

printf(%d  %d  %dn”,a,b,*p);

}

void pp(int a,int *b,int *p)

{ int c=4;

*p=*b+c;

a=*p-c;

printf(%d  %d  %d#,a,*b,*p)

}

四、程序填空题(每小题6分,共24)

1.下面程序的功能是检查一个二维数组是否对称,请填空。

(即:对所有ij都有ai][j=aj][i)

main()

{ int a4][4={1,2,3,4,2,2,65,6,3,5,3,7,4,6,7,4};

int i,j,found=0;

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

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

if(aj][i!=ai][j)

{______;break;}

if(found) printf(No);

else printf(Yes);

}

2.在平面直角坐标系中,输入10个点的坐标,输出其中距原点最近的点的距离。

# include math.h

main()

{int i;

float z,min;

scanf(%d,%d,&x,&y);

______;

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

{______;

z=sqrt(x*x+y*y);

if(z

}

printf(min=%fn,min);

}

3.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10

岁,其余学生一个比一个大2岁,求第5位学生的年龄。请填空。

# include

age(int n)

{ int c;

if(n==1)c=10;

else c=______;

return c;

}

main()

{ int n=5;

printf(age:%dn,______);

}

4.创建一个链表。

# include stdio.h

# include malloc.h

# define node struct list

struct list

{ int data;

struct list *next;

};

void main()

{ node *p,*head;

int num,i;

p=______;

p=head;

printf(please input 5 numbers==>n);

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

{scanf(%d,&num);

p->data=num;

p->next=(node*)malloc(sizeof(node));

if(i==4)p->next=NULL;

else ______;

}

p=head;

while(p!=NULL)

{printf(The value is==>%dn,p->data);

p=p->next;

}}

五、编程题(1小题8分,第2小题12分,共20)

1.输入mn(mn0)后,计算下列表达式的值并输出。

要求将计算阶乘的运算写成函数fact(n),函数返回值的类型为float

2.从键盘输入30个学生的数据,数据项为:学号、姓名、平均分。

要求:

(1)30个学生的数据写入文件“student.dat;(2)输出其中最高平均分。

    2004年4月计算机基础与程序设计试题

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

1.微机一般是16位机或32位机,它指的是机器的(      )。

A.速度          B.容量          C.系列号          D.字长

2.若当前路径为C盘TC子目录,仅将A盘根目录下的文件名第3个字符为P,扩展名为C的所有文件复制到C盘TC子目录下,一定成功的命令是(      )。

A.COPY  A:/*P*.C                  B.COPY  A:/??P*.C C:

C.COPY  A:/??P*.C                  D.COPY  ??P*.C C:/TC

3.在C程序中,main函数的位置是(      )。

A.必须作为第一个函数                  B.必须作为最后一个函数

C.可以放在任意位置                    D.必须放在它所调用的函数之后

4.设int a=3;下列哪一个表达式的值等于0(      )。

A.a&&(a>0)              B.!a||a              C.a%=a            D.a>=a

5.如果a=5,b=2,c=3,d=4,则表达式a>b? a:c>d? c:d的值是(      )。

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

6.在C程序中,设一表达式中包含有int, long, char和unsigned类型的变量和数据,这四种类型数据的转换规则是(      )。

A.int->unsigned->long->char                  B.char->int->long->unsigned

C.char->int->unsigned->long                  D.int->char->unsigned->long

7.设有说明:int a=11, b=10;执行表达式a%=b+(a&&b)后,a的值为(      )。

A.0             B.1                C.11              D.22

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

  main()

  {

  int x=1,y=2,z=3,s=0;

  if(y>x)

  if(y>z) s=1;

  else s=2;

  else s=3;

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

  }

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

9.设有说明:int x=1, y=2;执行条件表达式(x=y)? ++x:--x后,x的值为:(      )。

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

10.若k为整型变量,则下面while循环(      )。

   k=10;

   while(k==0)k=k-1

A.执行0次                   B.执行1次

C.执行10次                  D.执行无限次

11.关于for(;;);语句,下面说法正确的是(      )。

A.有语法错误                  B.循环一次也不执行

C.循环只执行一次              D.循环执行无限次

12.以下对一维数组a的正确定义是(      )。

A.int a(10);                     B.int n=10, a[n];

C.int n;                        D.#define SIZE 10

  scanf(”%d”, &n);              int a[SIZE];

  int a[n];

13.以下一维数组初始化语句中,正确的是(      )。

A.int a[5]={1,2};                  B.int a[5]={};

C.int a[5]={5*2}                   D.int a[]=(1,2,0,0,0);

14.若定义字符数组char s[5]=”BOOK”;则输出该串正确的函数调用是(      )。

A.puts(s[10]);                       B.puts(s);

C.printf(”%c”,s);                  D.printf(”%s”,&s);

15.下列定义不正确的是(      )。

A.#define PI 3.1415926               B.static char c;

C.int max(x,y);                      D.int *p[5];

  int x,y;

  {}

16.下列哪种数据不是存放在动态存储区中(      )。

A.局部自动变量                            B.局部静态变量

C.函数调用时的现场保护数据                D.函数形参变量

17.设有char s[]=”top”,*p=s;p[1]=‘a’;则下面说法不正确的是:(      )。

A.s[0]存放字符t                       B.s[1]存放字符0

C.s[1]存放字符a                       D.s[2]存放字符p

18.定义一个指向具有5个元素的一维整型数组的指针变量的正确定义为(      )。

A.int *p[5];            B.int *p;        C.int (*p)[5];        D.int *p[][5];

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

   #define SQR(x)((x)*(x))

   #include

   main()

   { float v=3.0;

   printf(”sqr=%. 2f/n”, SQR(v)+1);}

A.sqr=3.0             B.sqr=9.0             C.sqr=10       D.sqr=10.00

20.feof函数用来判断文件是否结束,如果文件没有结束,则返回值是(      )。

A.-1                  B.0                   C.1            D.EOF

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

在每小题列出的五个备选项中有二至五个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选、少选或未选均无分。

21.下面哪些软件属于操作系统范畴?(          )。

A.DOS                  B.Foxpro                  C.Turbo C

D.UNIX                 E.Windows

22.在下列各说法中,正确的说法有(          )。

A.与while结构相比,do…while结构至少要执行一次循环。

B.for结构和do…while结构类似,也是“先判断后执行”。

C.do…while结构是“先执行后判断”。

D.进入do…while循环的条件是:条件表达式为1。

E.退出while循环的条件是:条件表达式为1。

23.若有如下定义和赋值(          )。

int a=3, *p, *q;

p=&a; q=p;

则能够输出变量a的地址值的语句是:

A.printf(”%d/n”,p);         B.printf(”%d/n,*q”);      C.printf(”%d/n”,a);

D.printf(”%d/n”,*p);        E.printf(”%d/n”,q);

24.设有定义int x[4][5],*p;以及赋值p=*x;则非法的表示x数组元素的形式是(          )。

A.x[4][5]                  B.x[1]                  C.*(x[1]+2)

D.x[2][3]                  E.p[20]

25.表达式~0<<2的值可以是(          )。

A.-4                       B.-3                  C.0xfffc

D.0177774                  E.65531

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

请在每小题的空格中填上正确答案。错填、不填均无分。

26.用一字节表示十进制-7在机内的存储形式是___________。

27.C语言中的函数应由___________和函数体两部分组成。

28.在格式输出语句中,用于字符串输出的格式符是%___________。

29.设有int x=10;则执行while(x^x) ++x;后,x的值是___________。

30.设i,y,s均为int型变量,则执行下面for循环后,y的值为___________。

   for(i=0, y=0; i<4;){s=i*i;y=y+s;i++;}

31.设有int y[2][3]={5,4,6,7,8,9};则y[1][1]的值为___________。

32.定义在函数内部的变量和函数的形参都是___________变量。

33.若p为指针变量,则(*p)++表示先取指针p指向的对象再使对象的___________。

34.已知定义:union{long x;int y;}data;

   则变量data占用内存的字节数是___________。

35.字符串读函数fgets()的格式是fgets(str,n,fp);它的功能是从与fp有联系的文件中读___________个字符。

四、简答题(本大题共4小题,每小题3分,共12分)

36.简述字符常量与字符串常量的差异。

37.在C语言的if语句中,用作条件判断的“表达式”可以是什么类型的表达式?

38.用字符串指针变量处理字符串与用字符数组处理字符串有何不同?

36.简述fread函数的作用,其使用格式如下:

   fread(stu,size,n,fp);

   其中fp为文件指针,size为字节数,n为整数,stu为内存地址。

五、阅读分析题(本大题共7小题,每小题4分,共28分)

40.阅读下列程序并写出运行结果。

   #include ”stdio.h”

   #include ”string.h”

   main()

   { char str[]=”department”,*p=s;

     printf(”the length of srt is %d”,strlen(p));

     prinft(”/n%s”,p);

   }

41.阅读下列程序并写出运行结果。

   main()

   { int i=3, b;

     b=(i--)+(i--)+(i--);

     printf(”%d,%d/n”,b,i);

   }

42.阅读下列程序,并回答问题。

   main()

   {int s=0, k;

     for(k=4;k>=0;k--)

      { switch(k)

        { case 1:

          case 4: s++;break;

          case 0:

          case 2: break;

          case 3: s+=2;break;

        }

      }      printf(”s=%d/n”,s);   }

   试回答switch语句共执行多少次并写出运行结果。

43.阅读下列程序并写出运行结果。

   main()

   { int y[2][3]={5,4,6,7,8,9};

     int m[2],k,j;

     for (k=0;k<2;k++){

          m[k]=y[k][0];

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

              if(y[k][j]

     }     k=0;     printf(”%d/n”,m[k]);   }

44题、第45题请参阅下面程序,并回答相关问题:

  main()

  {int i,j,x=0;

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

    {x++;

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

    { if(j%2) continue;

      x++;}    x++;}   printf(”x=%d/n”,x);}

44.if(j%2) continue;语句的作用是什么?continue语句执行了多少次?

45.程序输出结果是多少?

46.设指向单向链表的头结点指针head是一个全局指针变量,且有如下程序:

   void display(  )

   { struct food *p=head;

     while (p!=NULL)

     { printf(”%s/n”, p->name);

       printf(”%d/n”, p->product);

       p=p->next;

     }

   }

设程序已经提供了关于food结构体的全部信息,试写出结构体food的定义。

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

47.对下面的3行3列的二维整型数组x:

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

   编程求每一行中元素的累加和并输出之。

48.从键盘输入一些字符,逐个把它们送到磁盘上并统计这些字符的个数,直到输入一个“#”为止。设磁盘ASCII码文件名为ab.txt。


 2003年4月计算机基础与程序设计试题

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

1.按冯·诺依曼的设计思想,计算机采用的数制是(      )

A.二进制      B.八进制      C.十进制      D.十六进制

2.若机器的当前系统提示符为A,欲将C盘TC子目录下文件名第二个字符为T,扩展名为C的所有文件删除,应采用的操作命令是(      )

A.DEL ?T*.C               B.DEL C:/TC/*T*.C

C.DEL /TC/? T*.C          D.DEL C:/TC/?T*.C

3.下面哪一个是合法的指数型实数(      )

A.E5       B.-1.0e-5     C.1.2e+5.1       D.e8

4.以下正确的C语言标识符是(      )

A.%d        B.a+b       C.-123        D.3D

5.设有int i;char c; float f;下面结果为整型的表达式是(      )

A.i+f       B.i*c       C.c+f       D.i+c+f

6.以下使i的运算结果为4的表达式是(      )

A.int i=0,j=0;(i=3,(j++)+i);

B.int i=1,j=0;j=i=(i=3)*2);

C.int i=0,j=1;(j==1)?(i=1):(i=3);

D.int i=1,j=1;i+=j+=2;

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

  main()

  { int a,b,c;

    a=(b=(c=3)*5)*2-3;

    printf(″%d,%d,%d/n″,a,b,c);

}

A.27,15,3       B.3,15,27      C.-1,15,3     D.15,27,3

8.对下述程序,正确的结论是(      )

#include

main()

{ int x,y;

  scanf(″%d,%d″,&x,&y);

  if(x>y)

    x=y;y=x;

  else

   x++;y++;

 prinft(″%d,%d″,x,y);

}

A.有语法错误,不能通过编译     B.若输入数据3和4,则输出4和5

C.若输入数据4和3,则输出3和4   D.若输入数据4和3,则输出4和4

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

main()

{ int a=10;

  a>10? a--;a++;

  a+=a;

  printf(″%d/n″,a);

}

A.-22        B.11       C.22       D.-11

10.在C语言中,由do-while语句构成的循环中结束循环的条件为(      )

A.1       B.true       C.0x10       D.0

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

main()

{ int i,x=0;

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

  x++;

  prinft(″x=%d″,x);

}

A.x=3       B.x=8        C.x=6        D.x=4

12.对下面程序段进行语法分析,正确的说法是(各行前的数字是附加的行号)

float a[3]={2.0};

int i;

scanf(″%f″,&a[1]);

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

printf(″%f/n″,a[0]);

A.没有错       B.第一行有错    C.第四行有错      D.第五行有错

13.下列程序的运行结果是(      )

main()

{ char ch[7]={″43ab21″};int i,s=0

  for (i=0;ch[i]>`0'&&ch[i]<=`9';i+=2)

           s=10*s+ch[i]-`0';

  printf(″%d/n″,s);

}

A.12ba34       B.4321       C.4       D.42

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

main()

{ char c[5];int i=0;

  c[]0=`a';c[1]=`b';

  c[2]=`/n';c[3]=`c';c[4]=`/0';

  for (;i<5;i++) printf(″%c″,c[i]);

}

A.a       B.a        C.ab        D.abc

  b         b          c

  c

15.下面关于main函数的说法中,不正确的是(      )

A.程序的执行从mian()函数开始    B.程序的执行在main()函数中结束

C.main()函数可以调用其它函数     D.其它函数可以调用main()函数

16.变量包括数据类型和存储类别两种属性,其中存储类别属性主要用来决定(      )

A.变量的存储长度          B.变量的作用范围

C.变量的生存期            D.变量的取值范围

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

void fun(int *p1,int *p2)

{ printf(″%d,%d/n″,*p1,*p2);

}

int x=11,y=19;

main()

{

 fun(&x,&y);

}

A.12,19       B.11,19     C.11,20      D.12,20

18.若有定义int *p[5];则其含义是(      )

A.p是一个数组,有5个元素,每个元素都是整型量

B.p是一个指针,指向含有5个整型数据的数组

C.p是一个数组,有5个元素,每个元素都是指向整型变量的指针

D.p是一个指针,指向一个整型数据

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

#define MIN(x,y)(x)<(y)?(x):(y)

#include

main()

{ int u=1,v=2,w=3,t;

  t=MIN(u+v,v+w);

  printf(″%d/n″,t);

}

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

20.随机定位函数的函数名是(      )

A.fopen         B.fgetc           C.seek        D.fseek

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

21.下面结构化N—S图为:

22.若所用变量已正确定义,以下各程序段执行后,变量x值一定等于10的有(      )

A.x=0;                B.x=0;i=0;            C.int i,x;

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

  x+=2                   { i++;x+=2;           x+=2;

                           if(i>5) break;

                         }

D.for(x=0,i=0;i<5;i++)  E.x=0;i=0;

      x+=2;              while(1)

                         { i++;x+=2

                           if(i==5) break

                         }

23.若有如下定义及赋值:

  int a[5]={1,2,3,4,5},*p;p=a;

则可以输出元素值为3的语句是

A.printf(″%d/n″,a+2);      B.printf(″%d/n″,p+2);

C.printf(″%d/n″,p[2]);     D.printf(″%d/n″,*(p+2));

E.printf(″%d/n″,a[3]);

24.设有:struct cjb

         {long bh;int xq;char xm[9];}x,*p;

下面各项中C语句全正确的是(      )

A.p=&x;                 B.x.bh=123;        C.p=&x;

  (*p).bh=12;              x.xm=″Wang″;     p->bh=123;

                                             p->xm=″Li″;

D.p=&x;                E.p=&x.bh;

  x.bh=123;              *p=123;

  printf(″%1d″p->bh);

25.设有int y,w=1,x=16;下列各项中能使y值为1的是(      )

A.y=(x∧x)|w;           B.y=x>>4;        C.y=x&15;

D.y=w|w;                E.y=x<<4;

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

26.用一字节表示十进制数-123的补码是_____________。

27.C语言程序从_____________开始执行。

28.在使用字符输入输出函数时,要求在程序的开头处写上的编译预处理命令是_____________。

29.执行下列程序段后,x的值为_____________。

x=100;a=10;b=20;0k1=5;0k2=0;

if(a

    if(b!=15)

     if(! 0k1)x=1;

     else if(0k2) x=10;

30.若所有变量都己正确定义,则程序段中for循环的循环次数为_____________。

a=2;b=10;

for(i=b;i<=a;i--,a++)printf(″%3d″,i);

31.下面程序的输出结果是_____________。

main(      )

{ int a[3][4]={2,4,5,8,6,3,7,1,4,9,0,6);

  int i=1,j=2;

  printf(″%d/n″,a[i][j]);

}

32.在函数外部定义的变量统称为全局变量,它们的作用域从_____________开始,直到本源文件或程序结束。

33.若指针变量p存放的是int型变量的地址1000,则p+n表示地址_____________。

34.设有:union reg

         {char al;char ah;int ax;}regs;

则共用体类型变量regs的首地址,整数变量ax的首地址,char型变量al,ah的首地址_____________。

35.设有FILE *fp;int ch;则用fgetc函数从fp所联系文件中读取一个字符并赋给变量ch的C语句是_____________。

四、简答题(本大题共4小题,每小题3分,共12分)

36.简述Turbo C 2.0系统中,在主菜单File下选用Quit命令的作用。

37.请用if…else if…结构写出下面函数所对应的C语句程序段。

38.定义char str[12]=″programming″;可以写成char str[12];str=″programming″;吗?为什么?

39.简述fgetc和fgets函数的作用。它们的使用格式如下:

fgetc(fp);/*fp为文件指针*/

fgets(str,n,fp);/*str为字符串首址,n为整型数,fp为文件指针*/

五、阅读分析题(本大题共7小题,每小题4分,共28分)

40.阅读下面程序,写出运行结果:

main()

{ int i=3,k;

  k=i+i+i;

  printf(″k=%d,i=%d″,k,i);

}

41.阅读下面程序,写出运行结果:

main()

{ int x,a=0,b=0;

  x=3;

  switch(x)

  { case1:a++;b++;

    case2:++a;++b;

    case3:a+=;b+=1;

    case4:a+=b;

  }

  printf(″a=%d,b=%d/n″,a,b);

}

42.阅读下面程序,写出程序运行结果:

main()

{ int j,k;

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

  { printf(″%2d″,j+1);

    for(k=0;k

    printf(″%2d″,(j+1)*(k+1));

  printf(″/n″);

 }

}

43.阅读下面程序,写出运行结果:

long sum(n)

int n;

{

 if(n==1) return 1;

 else return(n+sum(n-1));

}

main()

{

 printf(″y=%d/n″,sum(3));

}

44.阅读下面程序,写出运行结果:

int m=1;

void f()

{ int n=0;

  static int s=0;

  s++;n++;m++;

  printf(″%d,%d,%d/n″,m,n,s);}

main()

  {f();m=3;f();}

45.阅读下面程序,写出运行结果:

main{}

{ int a[5]={1,2,3,4,5},* p,s=0;

  p=a;p++;

  while(*p<=a[3])

 { s+=*p;

   printf(″%3d″,*p++);}

printf(″/n″);

printf(″s=%d″,s);}

46.阅读下面程序,并回答相关问题:

struct number

{ int num;

  struct number *next;

}*head=NULL;

void create()

{

  struct number *ptr;

  int x;

  scanf(″%d″,&x);

  while(x)

{

   ptr=(struct number *)malloc(sizeof(struct number);

  pty->num=x;ptr->next=head;head=ptr;

 scanf(″%d″,&x);

  }

}

请说明ptr=(struct number*)malloc(sizeof(strct number))的作用。

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

47.输入20个整数,计算正数的平均值以及负数的和,并输出结果(设正数的个数大于零)。

 

 

 

 

 

 

 

 

48.设有5×5浮点型数组y(5×5表示5行5列)。要求:

(1)  从键盘输入25个浮点数对数组y赋初值。

(2)查找该数组中数值最大的元素和其行、列下标。

(3)依次将数组y中的数据、最大值、最大值元素的行下标和列下标写到当前目录下的二进制文件abc.txt中。


 2002年4月计算机基础与程序设计试题

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

1.计算机能够自动按照人们的意图进行工作的最基本思想是(      )

A.采用逻辑部件                       B.存储程序和数据

C.控制代码                           D.总结结构

2.若要显示CTC子目录下名为EXAM.C的内容一定成功的命令是(      )

A.TYPE C/TC/EXAM                   B.TYPE EXAM.C

C.COPY CON C;/TC/EXAM.C              D.COPY C:/TC/EXAM.C CON

3.编辑程序的功能是(      )

A.修改并建立源程序                   B.将源程序翻译成目标程序

C.调试程序                           D.命令计算机执行指定的程序

4.int a=2,b;则执行b=a&&1;语句后,b的结果是(      )

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

5.逗号表达式(a=3*5,a*4),a+15的值是(      )

A.15            B.60                 C.30           D.75

6.C程序中,设一表达式中包含有int,long, unsignedchar类型的变量和数据,则表达式最后的运算结果类型是(      )

A.int           B.char               C.unsigned         D.long

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

  main (  )

    {int a=11,b=10,c=0;

     a/=b+(b&&c);

     printf(%d/na);}

A.0             B.1                  C.1.1             D.11

8.两次运行下面程序,如果从键盘上分别输入64,则程序的输出结果是(      )

  main (   )

  {int x;

     scanf(%d,&x);

     if(x++>5) printf(%d,x);

     else printf(%d/n,x-1);}

A.75           B.63              C.74             D.64

9.表达式y<3? -1.01的值的类型应是(      )

A.不确定         B.实型              C.整型             D.无符号整型

10.语句while(!e);中,条件!e等价于(      )

A.e=0           B.e!=0              C.e!=1             D.e=0

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

   main(   )

     {int i=1,sum=0;

       lop:sum=sum+i ;

       i=i+2;

       if(i<6)goto lop;

       printf (sum=%d/n,sum);}

A.suu=4          B.sum=9            C.sum=16           D.sum=25

12.若定义int x10;Turbo C编译系统为该数组分配(      )个字节存储单元。

A.10             B.11               C.20               D.21

13.以下对一维数组a中的所有元素进行正确初始化的是(      )

A.int a10==(0,0,0,0);           B.int a10={   };

C.int a  ={0};                  D.int a10={10*2};

14.若有定义:char c10;从键盘输入“LiFang”,则正确的函数引用是(      )

A.scanf(%c,&c10);           B.gets(c);

C.scanf(%s,&c);                 D.gets(c10);

15.若有如下函数定义:

   add(float x, float y)

     {……}

   则下列说法正确的是(      )

A.函数返回值类型不确定              B.函数返回值是float

C.函数返回值是int                 D.函数返回值是void

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

   fun(a,b)

     int a,b;

     {static c=1;

      if (c==1)

         a=b+c;

      else

         a=b-c

      c++;

      printf(a=%d,b=%d/n,a,b);}

      main(   )

     {int a=3, b=5;

        fun(a,b);

        fun(a+1,b-1);}

A.a=6,b=5          B.a=5,b=5         C.a=6,b=5          D.a=6,b=6

  a=5,b=5            a=4,b=4           a=2,b=4            a=5,b=3

17.若输入52后,下面程序的运行结果是(      )

   void swap(x1,x2)

   int *x1, *x2;

   {int *x;

    x=x1;x1=x2;x2=x;}

   main(   )

   {int a,b,*p1,*p2;

    scanf(%d,%d,&a,&b);

    p1=&a,p2=&b;

    if(a>b) swap(p1,p2);

    printf(%d,%d/n,*p1,*p2);}

A.5,2            B.5,5               C.2,5               D.2,2

18.若有定义int *x3,b10;则正确的赋值语句是(      )

A.x=b0;      B.x=b;              C.x0=b0;    D.x0=&b0;

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

   #define ADD(x) x+x

   void mian(   )

    {int a=2,b=1;

     prinft(%d/n,3*ADD(a+b));}

A.9              B.10               C.12                D.18

20.FILE *fp;char ch;ch=fgetc(fp);可以推知fgetc函数的原型可以是(      )

A.void fgetc(  );                   B.char fgetc(  )

C.char fgetc(int);                  D.int fgetc(FILE *fp);

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

21.下面哪些是组成MSDOS操作系统的模块(          )

A.COMMAND.COM             B.IO.SYS                 C.MSDOS.SYS

D.Turbo C                 E.BOOT

22.与十进制141等值的数是(          )

A.(10001101)2             B.(10001110)2            C.(215)8

D.(8D)16                  E.(8E)16

23.a=1,b=-3,c=0,下面表达式为0的是(          )

A.b>a&&a                B.a-3(c=0)             C.(c>a)>(b>5)

D.!a&&ba&&(c+1)         E.(1,2,5)==(1,3,3)

24.在下列各说法中,正确的说法有(          )

A.break语句只能用于循环语句

B.break语句只能用于switch语句和循环语句

C.break语句可用于switch语句

D.break语句可用于循环语句

E.break语句不能用于switch语句

25.若有如下定义及赋值(          )

   int x=9,*p,*p1;

     p=&x;p1=p;

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

A.printf(%d/n,x)                B.printf(%d/n,*p);

C.printf(%d/n,p1);              D.printf(%d/n,&x);

E.printf(%d/n,*p1);

26.有函数定义如下:(          )

   void ss(x)

    int *x;

   {……}

则主函数中引用函数ss的正确形式是

A.main( )                 B.main(  )               C.main(  )

  {int a5;               {int a5.*p=a;         {int a5;     

                                                    

    ss(a);                     ss(p);                    ss(a0);

     }                      }                      }

D.main(  )                E.main(  )

  {int a5],*p=a;         {int a5],*p=a;        

                          

    ss( p0);                 ss(*p);

      }                      }

27.若有定义int x4][5,(*p)5;及赋值p=x;则下列表示数组地址的形式中,地址值相等的是(          )

A.*(x+1)                  B.x+1                    C.x2

D.P+1                     E.*(p+1)

28.设有定义int a3][6,*p;则正确的指向数组元素的指针赋值是(          )

A.p=*a;                   B.p=a0;              C.p=a

D.p=a+1;                  E.p=*(a0+1);

29.有以下定义和语句:(          )

  struct stud {char name 10;

          int age;}

    struct stud s, *ps;

     ps=&s;

  则下面正确的语句是

A.s={Mary,30}          B.(*ps)->age=30        C.s.name=Mary;

D.scanf(%d,&ps->age);  E.strcpy(ps->name,Mary);

30.设有int a=123;a^0xff00可以使a(          )

A.低字节取反               B.高字节取反           C.低字节不变

D.高字节不变               E.高低字节都取反

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

31.设字长为八位,十进制—100在机内的存储形式是______

32.C语言程序由main( )函数开始执行,应在______函数中结束。

33.在格式输出语句中,用于带符号的十进制长整型输出的格式符是______

34.a=2,b=3,c=1时,执行以下程序段后,输出结果是______

   if(a>b)

     if(a>c)

       printf(%d/n,a);

     else

       printf  (%d/n,b);

     printf(end/n);

35.i,n,p均为int型变量,则执行以下程序段后,p的值为______

   p=1;n=4;

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

     p=p*i;

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

   main (  )

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

    for(i=0;i<=2;i++)  s=s+ai][i;

    printf (s=%d/n,s);}

37.所谓变量的______就是可引用变量的范围,通常取决于变量被定义的位置。

38.p1,p2为同类型的指针变量,若有p1==p2,则说明p1p2指向______

39.union std

   {int fjh;

    char  addr 30;

    }  wang;

   中,wang是具有″union std″共用体类型的______

40.字符串写函数fputs( )的格式是fputs(str,fp);它的功能是______

四、简答题(本大题共4小题,第4142题每小题2分,第4344题每小题3分,共10)

41.描述一个C程序开发过程的流程图。

42.将下列条件语句逻辑关系写得更清晰一些(必要时可把if嵌套的有关部分写成复合语句)

   if(a

   if(a

   if(a

   x=5;else x=6

43.定义char *str=program″;和定义char str[]=program;是等价的吗?为什么?

44.简述feof函数返回值的含义。

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

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

   main( )

    {unsigned a;

     int b=-1;

     a=b;

     printf(%u/n,a);

     printf(a=%x,a);}

46.阅读下列程序,并回答问题:

   main( )

    {int  x=1,y=0,a=0,b=0;

     switch(x)

      {case 1: switch(y)

      {case 0; a++;break;

       case 1: b++;break;}

      case 2:a++;b++;break;

      case 3:a++;b++;}

    printf(a=%d,b=%d/n,a,b);}

  请分析该程序的执行过程并写出运行结果。

474849题请参阅下面程序,并回答相关问题:

  #define N 8

  main( )

  {int a=1,b-1,i;

   for (i=1,i<=N/2;i++)

     {printf(%5d %5d,a,b);

      if(i%2==0) printf(/n);

      a=b+a;b=a+b;}}

47.printf(/n);语句执行多少次?

48.程序输出结果是什么?

49.若把if(i%2==0)print(/n);语句删除,程序输出效果与48题有何不同?

505152题请参阅下面程序,并回答相关问题。

  main( )

   {int num;

    scanf(%d,&num);

    if(prime(num))

       printf(%d is prime number,num);

   else

       printf(%d is not a prime number,num);}

   int prime(num)

     int num;

  {int flag =1,n;

    for(n=2;n

       if(num%n==0) flag=0;

    return (flag);}

50.prime 函数的功能是什么?

51.当输入23时,程序运行结果是什么?

52.flag变量的作用是什么?

5354题请参阅下面程序,并回答相关问题。

  struct node {int x;

             struct node * next;};

  void print(struct node * head)

  {struct node *p;

   p=head;

   while (p!=NULL)

   {printf(%d/n,p->x);

    p=p->next;

    }

  }

53.函数print完成的功能。

54.语句p=p->next;的作用。

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

55.26个英文字母按aAbBcCdD……zZ先小写后大写的顺序逐个打印出来。

56.编程实现将字符串str2连接到字符串str1的末尾并输出str1串。(不得使用C中的strcat标准库函数)

 


浙江省2003年7月计算机基础与程序设计试题

一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题1分,共20分)

1.计算机硬件系统中最核心的部件是(      )。

A.微处理器        B.主存储器        C.CD-ROM         D.输入/输出设备

2.下列四个数中,最小的一个数是(      )。

A.(51)16           B.(85)10           C.(123)8           D.(01010110)2

3.表示关系x<=y<=z的C语言表达式为(      )。

A.(x<=y)&&(y<=z)                  B.(x<=y)AND(y<=z)

C.(x<=y<=z)                       D.(x<=y)&(y<=z)

4.设整型变量m,n,a,b,c,d均为1,执行″(m=a>b)&&(n=c>d)″后,m,n的值为(      )。

A.0,0           B.0,1           C.1,0           D.1,1

5.执行下列语句时,输入(      ),则a和b的值都是10。

int a,b;

scanf(″a=%d,b=%d″,&a,&b);

A.10 10           B.10,10           C.a=10  b=10           D.a=10,b=10

6.已知字符a的ASCII值为97,则执行以下语句后输出(      )。

char ch=′a′;

int k=12;

printf(″%x,%o″,ch,ch,k);

printf(″K=%%d″,k);

A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为0或不定值

C.61,141,k=%d

D.61,141,k=%12

7.以下程序段输出结果是(      )。

int m=5;

if(m++>5)printf(″%d/n″,m);

else printf(″%d/n″,m--);

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

8.当键盘上输入hello#时,输出结果为(      )。

int v1=0,v2=0;

char ch;

while((ch=getchar(      ))!=′#′)

switch(ch)

{case  ′a′:

case  ′h′:

default:  v1++;

case ′o′:v2++;

}

printf(″%d,%d″,v1,v2);

A.3,1           B.5,5           C.4,5           D.4,1

9.设k为整型,以下do--while循环(      )。

k=10;

do

{k=k-1;

}while(k=1);

A.执行10次           B.执行1次           C.无限循环           D.一次也不执行

10.执行下列语句后,变量i的值是(      )。

int  i;

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

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

11.在C语言中,二维数组元素在内存中的存放顺序是(      )。

A.按行存放      B.按列存放       C.由用户自己定义         D.由编译器决定

12.若有下列定义和语句,则结果是(注:u代表空格)(      )。

char s[10];

s=″abcd″;

printf(″%s/n″,s);

A.输出abcd           B.输出a           C.输出abcduuuuu           D.编译不通过

13.C程序中,若对函数类型未加说明,则函数的隐含类型为(      )。

A.int           B.double           C.void           D.char

14.若用数组名作为函数调用的实参,传递给形参的是(      )。

A.数组首地址                     B.数组第一个元素的值

C.数组中全部元素的值             D.数组元素的个数

15.若p1、p2都是整型指针,p1已经指向变量x,要使p2也指向x,(      )是正确的。

A.p2=p1;           B.p2=**p1;           C.p2=&p1;           D.p2=*p1;

16.变量的指针,其含义是指该变量的(      )。

A.值           B.地址           C.名           D.一个标志

17.对于以下的变量定义,表达式(      )是不正确的。

struct node{

   int j,k;

}x,*p=&x;

A.p->k=2           B.(*p).k=2           C.x.k=2           D.x->k=2

18.执行下列语句后,变量z的值是(      )。

#define SQ(x)   x*x

#define DD(x,y) SQ(x)-SQ(y)

int z;

z=DD(2*3,2+3);

A.11           B.43           C.25           D.以上均不是

19.执行下列语句后,变量y值是(      )。

int y,a1=7,a2=1;

y=(a1<<1)&(a2<<2);

A.0           B.1           C.4           D.以上都错

20.打开文件名为file.dat的文件进行读操作的正确写法为(      )。

char fname[]=″file.dat″;

A.fopen(file.dat,″r″)              B.fopen(fnane,″w″)          

C.fopen(fname,″r″)               D.fopen(″fname″,″r″)

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

1.高级语言翻译成机器语言的翻译方式有_______和________。

2.下列程序段的输出结果是________。 

float a;

int b=5; 

a=5/2; 

b=b/2*a; 

printf(″%f,%f/n″,a,(float)b);

3.若k为int变量,则以下语句输出为________。

k=8567;

printf(″|%-6d|/n″,k);

4.以下if语句执行后,a、b、c中的值分别为________。

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

if(a>c)b=a;a=c;c=b;

5.下列程序段的输出是________。

main()

  {int k;

for(k=0;k<5;k++)

{if(!(k%2))printf(″*″);

else continue;

printf(″#″);

}

}

6.下面程序段的运行结果是________。

char ch[]={″6543ab21″};

int i,s=0;

for(i=0;ch[i]>=′0′&&ch[i]<=′9′;i+=2)

  s=10*s+ch[i]-′0′;

printf(″%d″,s);

7.对于以下递归函数f,计算f(3)的值________。

int f(int k)

{return (k<0?(k*=2):f(k-2)+k);}

8.下列程序段的输出结果是:________。

char*c[3]={″FIRST″,″SECOND″,″THIRD″};

printf(″%s″,*(c+1));

9.若有以下说明和语句,己知int和double类型分别占2和8个字节,则sizeof(st)的值为________。

struct st{char a[10];

union{int i;

double y;

};

}

10.写出下列程序段的输出结果________。

#defineF(x) x-2

#defineD(x) x*F(x)

printf(″%d,%d″,D(3),D(D(3)));

11.函数fseek(fp,30L,0)的功能是________。

三、阅读题(每小题3分,共15分)

1.阅读下列程序,当输入为:ab*AB%cd#CD$时,

写出程序运行的输出结果:________。

# include

void main()

{char c;

while((c=getchar())!=′$′)

{if(′A′<=c&&c<=′Z′)putchar(c);

else if(′a′<=c&&c<=′z′)putchar(c-32);

}

}

2.若输入3 1 2 3<回车>,则以下程序输出的结果是________。

# include

void main(  )

{  int i,j,n,a[10];

scanf(″%d″”,&n);

for(i=0;i

for(i=0;i

      for(j=0;j

        printf(″%3d″,a[(i+j)%n]);}

3.以下的C程序的输出结果是________。

# include

void main()

{char a[]={′*′,′*′,′*′,′*′,′*′};

int i,j,k;  for(i=0;i<5;i++)

{printf(″/n″);

for(j=0;j  printf(″%c″,′′);

for(k=0;k<5;k++)  printf(″%c″,a[k]);

}   }

4.下列程序输出的结果是________。

# include

char rech(char s[],int n)

{

  return s[n]+10;

}

void main()

{  char s[]=″ABCDEFGH″;

int i=0;

while(s[i])

{ putchar(rech(s,i));

i++;

}

putchar(′/n′);

}

5.以下程序的输出结果是________。

# include

int z;

void p(int*x,int y)

{  ++*x;

y--;

z=*x+y+z;

printf(″%d,%d,%d#″,*x,y,z);

}

void main()

{  int x=1,y=5,z=9;

p(&x,y);

printf(″%d,%d,%d#″,x,y,z);

}

四、程序填空题(每小题6分,共24分)

1.输入以-1结束的一批整数,输出其中的最大值。

例如:输入-3、-8、-10、-1后,输出:max=-3。

# include

void main()

{  int max,x;

scanf(″%d″,&x);

if(x!=-1)

  {max=x;

    while(      )

      {if(max

        ________;

      }

    printf(″max=%d/n″,max);

  }

}

2.函数sort使用交换排序法将一维整型数组a[10]中各元素按值从大到小排序。

void sort(________)

{  int  i,j,k,temp;

        for(i=0;i

            {k=i;

              for(j=i+1;j

                if(________)k=j;

            temp=a[k];a[k]=a[i]; a[i]=temp;

        }

    }

3.在函数f()中将一长整型的数逆序,并返回逆序后的数;

在主函数中输入该长整型数、并输出它逆序后的数。

________

{  int t;

long y=0;

while(________)

     {t=x%10;

y=y*10+t;

x=x/10;

}

    return y;

}

main()

    {long x,y;

scanf(″%ld″,&x);

y=f(x);

printf(″%ld″,y);

}

4.下面是统计链表head中结点个数的函数。

struct link

{char data;

struct link*next;

};

int fun(struct link*head)

{struct link*p;

int n=0;

p=head;

while(________)

{n++;

  ________;

}

return n;

}

五、编程题(共19分,第1小题7分,第2小题12分)

1.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

2.编一函数prime(int n),判断n是否素数,若是返回″1″,否则,返回″0″;

在主函数中,把3——100之间的所有孪生素数存入文件″file.dat″。

:孪生素数是指它们的差是2的二个素数.

    如:5,7;11,13是孪生素数

    1317不是

你可能感兴趣的:(计算机基础与程序设计试题)