加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言程序设计复习题

(2016-06-02 07:33:27)
标签:

教育

分类: 公共课

第一部分:基础部分

1、一个C语言的源程序中,(  A  ) 。

(A)必须有一个主函数        (B)可以有多个主函数

(C)必须有主函数和其他函数  (D)可以没有主函数

2、下列数据中,为字符串常量的是(  B  )。

(A)‘A’    (B)“house”    (C)How do you do.  (D)’$abc’

3、若有定义:int a=8,b=5,c;,执行语句c=a/b十0.4;后,c的值为(  B  ) 。

(A)1.4    (B)1    (C)2.0    (D)2

4、设有int x=11;则表达式(x++*l/3)的值为( A   )。

(A)3    (B)4    (C)11    (D)12

5、执行x=5>1+2&&2||2*4<4-!0后,x的值为( C   )。

(A)-l    (B)O    (C)1    (D)5

6、以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子:(x)/(y×z)的c语言表达式是( A   )。

(A)x/y*z    (B)x*(1/(y*z))  (C) x/y*1/z      (D)x/y/z

7、设有以下说明语句

struct ex

{int x;float y;  char  z;}example;

则下面的叙述不正确的是(  B  )。

(A)struct是结构体类型的关键字 (B)example是结构体类型名

(C)x,y,z都是结构体成员名 (D)struct ex是结构体类型

8、假定w、x、y、z、m均为int型变量;有如下程序段:

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

m=(w

则该程序段执行后,m的值是( D   )。

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

9、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是( B   ) 。

  (A)  地址传递                                       (B)  单向值传递

(C)  由实参传给形参,再由形参传回实参               (D)  传递方式由用户指定

10、以下定义语句中,错误的是 (  D  )。

(A)int  a[]={1,2};      (B) char *a[3];

(C)char  s[10]="text";   (D) int n=5,a[n];

11、下列程厅执行后的输出结果是( A   )。

 main()

 {  char  arr[2][4]; strcpy(arr,"you");strcpy(arr[1],"me");

   arr[0][3]='&';

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

  }

(A)you&me    (B)you    (C) me   (D)err

12、标有的语句的执行次数是(  C  )。

  int  y,i;

  for(i=O;i<20;i++)

  { if(i%2==0)

    continue;

    y+=i;    

   }

  (A)  20    (B)  19    (C)  10    (D)  9

13、若用数组名作为函数调用的实参,传递给形参的是( A   )。

  (A)  数组的首地址              (B)  数组第一个元素的值

  (C)  数组中全部元素的值        (D)  数组元素的个数

14、下列语句执行后的结果是( A   )。

   y=5;p=&y;x=*p++;

  (A)  x=5,y=5    (B)  x=5,y=6     (C)  x=6,y=5    (D)  x=6,y=6

15、执行下面的语句后,表达式*(p[0]+1)+**(q+2)的值为 (  D  )。

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

  (A)  8      (B)  7      (C)  6      (D)  5

16、经过下面的语句后

  int i,a[10],*p;

  定义后,下列语句中合法的是 ( C   )。

 

  (A)  p=100:    (B)  p=a[5];     (C)  p=a+2;    (D)  p=&(i+2);

17、若有以下说明和语句,则对pup中sex域的正确引用方式是(  D  )。

  struct pupil

{char name[20];

   int  sex;

  }pup,*p;

p=&pup;

(A)p.pup.sex         (B)p->pup.sex   (C)(*p).pup.sex      (D)(*p).sex

18、若已定义了如下的共用体类型变量x,则x所占用的内存字节数为(  C  ) 。

union  data

{ int  i;

  char  ch;

  double  f;

 }x;

(A)  7    (B)  11    (C)8   (D) 10

19、若有下面的说明和定义:

struct  test

{ int  m1;char m2;float m3;

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

  }  myaa;

则sizeof(struct test)的值是 (   A )。

  (A)  12    (B)  16    (C)  14    (D)9

20、若要打开:A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是( B   ) 。

    (A)fopen("A:\\user\\abc.txt","r")     (B)  fopen("A:\\user\\abc.txt","r+")

    (C)fopen("A:\\user\\abc.txt","rb")    (D)  fopen("A:\\userl\\abc.txt","w")

21. 以下正确的C语言自定义标识符是__A____。

A. _1a B. 2a_

C. do D. a.12

22. 在C语言中,错误的常数表示是__D_____。

A. 0L B.-0x6aL

C. '6' D. 1.234E3.5

23. 设int a, x=2; 执行语句a=x>0?3*x:x=10;后,变量x的值是__B_____。

A. 1 B. 2

C. 6 D. 10

24.设有以下程序段:

int x=2,y=2,z=0,a;

a=++x||++y&&z++;

printf("%d,%d,%d\n",x,y,z);

执行后输出的结果是____C_____。

A. 2, 2, 0 B. 3, 3,1

C. 3, 2, 0 D. 3, 2, 1

25. 在C语言中,字符串"\\TOP\t\65\""的长度是___B____。

A. 5 B.7

C. 8 D. 12

26. 设float x,由键盘输入:12.45, 能正确读入数据的输入语句是___A______。

A. scanf("_",&x) B. scanf("]",&x);

C. scanf("%f",x); D. scanf("%s",&x);

27.逗号表达式a=2*6,a*3,a+5的值是___B______。

A. 12 B. 17

C.36 D. 41

28. C语言程序中,整型常量的书写形式不包括__A_______。

A. 二进制 B. 八进制

C. 十进制              D. 十六进制

29. 在C语言中,下列运算符中结合性属于自右向左的是___B______。

   A. &&     B. -

   C.<<   D. ->

30. 设int x;,则与计算︱x︱等价的表达式是_____B____。

   A. x>0?-x:x    B. x>0?x:-x

   C. x<0?x:-x   D. x<0?-x:-x

31. 执行下面的程序段后,k的值是___B____。

      int k=1,n=325;

      do { k*=n;n/=10;}while(n);

A. 3   B. 30

C. 523 D. 325

32. 表达式的值为0的是____C_____。

   A. 5/5%5   B. 5>2

   C. !4 D. 0x7&&7

33. 设int a=11, b=2;执行下述程序段后,变量a和b的值分别是___B____。

    do

    { a/=b++;

    }while(a>b);

    A. 1,3 B. 1,4

    C. 2,3 D. 2,4

34. 在C语言中,下列错误的说法是__C_____。

    A. 函数可以递归调用

    B. 不允许在函数中再定义函数

    C. 递归程序不可能用非递归算法实现

    D. 对于continue语句,可以通过改变程序的结构而不使用它

35.int a[2][3]={{1},{2,3}};,则a[1][0]的值是____C_____。

    A.0 B. 1

    C. 2 D. 3

36. 以下对二维数组a的正确说明是__C_______。.

    A. int a[3][]; B. float a[][4];

    C. double a[3][4];           D. float a(3)(4);

37.设char s[10]= "abcd",t[]="12345";,则s和t在内存中分配的字节数分别是__D_____。

A.6和5 B. 6和6

C. 10和5 D. 10和6

38. switch(表达式)语句中的“表达式”,允许的类型是___C______。

    A.float, int     B.float, int, char

    C. int, char     D. char, double

39. 在C语言中,形参的隐含存储类别是___A______。

    A. auto B. static

    C. extern D. register

40. 下列属于文件包含的命令是_____C____。

    A. #define N 25 B. #endif

    C. #include "stdio.h" D. #else

41. 设int i,j;

for(i=5;i;i--)

     for(j=0;j<4;j++) {…}

则循环体执行次数是___C_____。

A. 5 B.4

   C. 20 D.无限次

42若有以下定义和语句:

     char  strl[]="string", str2[5];

  则用以复制字符串的正确方法是___B____。

A. strcpy(str2,"Hello");

B. strcpy(strl,"Hello");

C. str2=str1;

D. str1="Hello";

43.正确的变量定义是_A_______。

A. unsigned long d=1000;

B. float m1=m2=10.0;

C. char c1='A',c2=A;

D. double x=0.618,x=3.14;

44.下面程序的输出结果是_C______。

   #include

void main()

{ int s,k;

      for(s=1,k=2;k<5;k++)

    s+=k;

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

}

A. 1 B. 9

    C. 10 D. 15

45.下列描述中不正确的是__C_____。

A. 字符型数组中可以存放字符串

B. 可以对字符型数组进行整体输入、输出

C. 可以对实型数组进行整体输入、输出

D. 不能在赋值语句中通过赋值运算符=对字符型数组进行整体赋值

 

第二部分:简单程序

1、以下程序的运行情况是( D   )  

   main()

  {int i=1,sum=0;

   while(i<10)

     sum=sum+1;

    i++;

   printf("i=%d,sum=%d",i,sum);

  }

  (A)  i=10,sum=9    (B) i=9,sum=9     (C)  i=2,sum=l     (D) 运行出现错误

2、若输入B,以下程序的运行结果为( C   )  

main()

{ char grade;   scanf("%c",&grade);

  switch(grade)

    {case    'A':printf(">=85");

     case    'B':

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

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

default:printf("error");}

}

   (A)>=85    (B)>=60    (C)>=60<60error    (D) error

3.有如下程序    main()

  {  int x=23;

     do

      {  printf("%d",x--);}while(!x);

     }

该程序的执行结果是( B   ) 。

(A)321      (B)23      (C)不输出任何内容       (D)陷入死循环

4.有如下程序

int func(int a,int b)

{  return  (a+b);}

main()

{int  x=2,y=5,z=8,r;

 r=func(func(x,y),z);  printf("%d\n",r);

 }

该程序的输出结果是 ( D   )  

  (A)  12       (B)  13        (C)14        (D)15

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

main()

{ int a,b;

  for(a=1,b=1;a<=100;a++)

   { if(b>=10)  break;

     if(b%3==1)

      { b+=3;continue;}

    }

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

}

(A)101       (B) 6        (C)5        (D)4

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

   int a,b;

   void  fun()

    {  a=100;b=200;}

  main()

  { int a=5,b=7;

    fun();

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

   }

   (A)  100200    (B)57    (C)200100      (D)75

7.下面的程序执行后,文件test.t中的内容是 (  A  )   

#include  

void fun(char *fname,char *st)

{ FILE *myf; int i;

myf=fopen(fname,"w");

for(i=0;i

fclose(myf);

}

main()

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

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

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

#include   

main(){

   static char  s[30]="abcdefg";

   static char t[]="abcd";

   int i,j;

   i=0;

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

      i++;

   j=0;  

   whi1e(t[j]!='\0')

{ s[i+j]=t[j];

      j++;   }

   s[i+j]='\0';

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

  }

(A)  abcdabcdefg      (B)abcdefg      (C)abcd      (D)abcdefgabcd

9.有如下程序

    main()

   {  char  ch[2][5]={"6937","8254"},*p[2];

      int    i, j, s=0;

      for(i=0;i<2;i++)    p[i]=ch[i];

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

        for(j=0;p[i][j]>'\0';j+=2)

            s=10*s+p[i][j]-'0';

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

    }

    该程序的输出结果是( C   )  

    (A)69825       (B)63825     (C)6385      (D)693825

10.若已建立如下图所示的单向链表结构

在该链表中,指针p,s分别指向图中所示结点,则不能将s所指的结点插入到链表末尾仍构成单向链表的语句组是(  A  ) 。

(A) p=p->next;s->next=p;p->next=s;

(B) p=p->next;s->next=p->next;p->next=s;

(C) s->next=NULL;p=p->next;p->next=s

(D) p=(*p).next;(*s).next=(*p).next; (*p).next =s;

11.请选择正确的运行结果填入( A   )中。

include  

int x,y;

num()

{

 int a=15,b=10;

 int x,y;

 y=a-b;

 y=a+b;

 return;

}

main()

{ int  a=7,b=5;

  x=a+b;

  y=a-b;

  num();   printf("%d,%d\n",x,y);

}

(A)  12,2      (B)  5,25         (C)2,12      (D)不确定

12.以下程序的输出结果是(  D  ) 。

  #define  M(x,y,z)  x*y+z

  main()

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

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

(A)19     (B)17       (C)15      (D)12

13、以下程序的输出结果是:__B___

main( )

{  int i=10,j=10;

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

}

A、21,10 B、20,10 C、21,9 D、20,9

14、 以下程序的输出结果是:____B______

main( )

{  int  m=5;

if  (m++>5)

printf(“%d\n”,m);

else

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

}

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

15、 当a=1, b=3, c=5, d=4时,执行下面一段程序后,x的值为__B__

if  (a

if(c

x=1;

else  if(a

if(b

x=2;

else

x=3;

else

x=6;

else x=7;

A、1 B、2 C、3 D、6

16、以下程序企图把从终端输入的字符输出到名为abc.txt的文件中,直到从终端读入字符#号时结束输入和输出操作,但程序有错。出错的原因是____A___

#include  

main( )

{ FILE  *fout;

  char  ch;

fout=fopen( ‘abc.txt’,’w’);

ch=fgetc(stdin);

while(ch!=’#’)

{fputc(ch,fout);

  ch=fgetc(stdin);

}

fclose(fout);

}

A、函数fopen调用形式有误 B、输入文件没有关闭

C、函数fgetc调用形式有误 D、文件指针stdin没有定义

17、 有以下程序,执行后输出结果是__C____

main()

{union  {unsigned int n;

unsigned char c;

}ul;

ul.c=’A’;

printf(“%c\n”,ul.n);

}

A、产生语法错 B、随机值 C、A D、65

18、 有以下程序,执行后输出结果是__C___

main()

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

int  i,k=2;

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

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

}

A、4  5  6 B、2  5  8 C、3  6  9 D、7  8  9

19、 以下程序运行后,输出结果是__C_____

int func(int a,  int b)

{ static int  m=0,i=2;

i+=m+1;

m=i+a+b;

return(m);

}

main()

{ int  k=4,m=1,n;

n=func(k, m);

  printf(“%d,  ”, n);

n=func(k, m);

  printf(“%d ”, n);

}

A、8,  15 B、8,  16 C、8,  17 D、8,  8

20、 在执行以程序时,如果从键盘上输入:ABCdef,则输出结果为:_B___

#include  

main( )

{ char  ch;

while((ch=getchar())!=’\n’)

{  if(ch>=’A’&&ch<=’Z’)

ch=ch+32;

else  if(ch>=’a’ && ch<=’z’)

ch=ch-32;

printf(“%c”,ch);

}

printf(“\n”);

   }

A、ABCdef  B、abcDEF  C、abc D、DEF

21、 有以下程序,执行后输出结果是__B__

int  *f(int  *x,  int *y)

{ if(*x<*y)

return x;

else

return  y;

}

main( )

{ int a=7,b=8,*p,*q,*r;

p=&a;

q=&b;

r=f(p,q);

printf(“%d,%d,%d\n”,*p,*q,*r);

}

A、7, 8, 8 B、7, 8, 7 C、8, 7, 7 D、8, 7, 8

22、 下面程序的输出结果是__D___

fun(char *s, int p1, int p2)

{ char  c;

while (p1

{ c=s[p1];

s[p1]=s[p2];

s[p2]=c;

p1++;p2--;

}

}

main( )

{  char a[ ]=”ABCDEFG”, k, *p;

fun(a, 0, 2);

fun(a, 4, 6);

printf(“%s\n”,a);

}

A、ABCDEFG  B、DEFGABC  C、GFEDCBA  D、CBADGFE

23、 以下程序的运行结果是__D__

#include  

long  func(int  x)

{ long p;

if(x==0||x==1)

return (2);

p=x*func(x-1);

return (p);

}

main( )

{

printf(“%d \n”,func(4));

}

A、8 B、12 C、24 D、48

24、 下面的程序运行后,全局量t.x和t.s的正确结果为___C_______

struct  tree

{ int  x;

char  *s;

}t;

func(struct  tree  t)

{   t.x=10;

t.s=”computer”;

return(0);

}

main()

{  t.x=1;

   t.s=”minicomputer”;

func(t);

printf(“%d, %s ”, t.x, t.s);

}

 

A、10, computer  B、1, computer  C、1, minicomputer  D、10, minicomputer

 

 

 

 

第三部分:填空

1:

    有一函数,实参传来一个字符串,统计此字符串中字母、数字、空各和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

int  letter,digit,space,others;      

main()  

{int count(char _____(1)_ str[]____);

 char text[80];

 printf("\nlnput string:\n");

 ____(2)__ gets(text)或scanf(“%s”,text) _;

 printf("string:");

 puts(text);

 letter=O;

 digit=O;

 space=O;

 others=O;

 _____(3)___ count(text)__;

  printf("letter:%d,digit:%d,space:%d,other:%d\n",letter,digit,

       space,others);  }

 

 int count(char str[])

  {int i;

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

   if((____(4)__ str[i]__>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

     letter++;    else if(str[i]>='0'&&str[i]<='9')

     digit++;

   else if(str[i]=='  ')

      space++;

   else

     ____(5)_ others++___;

   }

 

2:

    把下列程序补充完整,实现两个字符串的比较,即自己写个strcmp函数,函数原型

为:int strcmp(char  *p1,char  *p2)

设p1指向字符串s1,p2指向字符串s2。要求:当s1=s2时,返回值为0。当sl<>s2时,返回它们两者的第一个不同的字符的ASCII码差值(如“BOY”与“BAD”,第二个字母不同,“O”与“A”之差为79-65=14);如果s1>s2,则输出正值;如果sl

main()

{ int m;

  char  ___(6)__ str1[20]__,str2[20],*p1,*p2;

  printf("Input two string:\n");

  scanf("%s",strl);

  scanf("%s",___(7)____ str2__);

  p1=&strl[0];

  p2=_____(8)__ &str2[0]___;

  m=strcmp(p1,p2);

  printf("result:%d,\n",m);

 }

strcmp(char  ___(9)__ *p1___,char *p2)

 

{ int i;

____(10)___ i=0___;

while(*(pl+i)==*(p2+i))

     if(*(p1+i++)=='\0')  return(0);

  return(*(pl+i)-*(p2+i));

}

 3、  下列程序是求1+1/2+1/4+……+1/50的值。

#include  “stdio.h”

main( )

{  int  i=2;

float  sum=1;

while (___(1)___ i<=50__)

{ sum=sum+1.0/i;

  _____(2)__ i+=2或i=i+2_____;

}

printf(“sum=%f”, sum);

}

4  下列函数用于统计一行字符中的单词个数,单词之间用空格分隔。

word_num(char  str[ ])

{

int  i, num=0, word=0;

for(i=0; str[i]!=____(3)_ ‘\0’__; i++)

if(____(4)__ str[i]____==’  ‘)

   word=0;

else  if(word==0)

{ word=1;

  ______(5)__ num++____;

}

return(num);

}

5  以下函数的功能是删除字符串s中的所有数字字符。

void  dele (char *s)

{ int  n=0,i;

for(i=0; s[i]; i++)

if(____(6)__ !(s[i]>='0'&&s[i]<='9')___)

s[n++]=s[i];

s[n]=____(7)__ '\0'___;

}

6  以下程序的功能是:从键盘输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。

main( )

  {   float  x[1000],   sum = 0.0,  ave,  a ;

      int  n=0,  i;

printf(“Enter  mark:\n”);

scanf(“%f”,&a);

while(a>=0.0 && n<1000)

         {  

             sum =____(8)__ sum+a __; 

x[n]=___(9)__ a ___;

n++;

             scanf(" % f ", &a);

       }

      ave= sum / n ;

printf(“Output: \n”);

printf(“ave=%f\n”,ave);

for(i=0; i

if_____(10)__ (x[i]____

      printf("% f\n”,x[i]);

  }

  6. 一个C语言程序的执行起点是___主函数________

 7. 设int x=3,y=5; 则执行printf("%d\n",x&&y);后输出__1___。

  8.定出公式对应的C语言表达式_1.0/2*(x+sqrt(x+y)/(5*x))_____

 9. 若函数调用语句为f(a,b,f(a+b,a-b,b));,则函数f的参数个数是___3____。

  10. 设int a=2;,则执行a+=a*=15;后,变量a的值是____60___。

  11. 设double y[4][5];,则数组y中元素的个数是___20____。

  12. 设int x=7,y=3,则表达式x%y+x/y的值是_____3___。

  13. 设char s[ ]={"E_mail"};,则执行printf("%d\n",strlen(s));后输出的值是__6___。

 14. 当执行下面程序段后,变量i的值是______5______。

   int  a,b,c,d,i,j,k;

   a=10; b=c=d=5; i=j=k=0;

   for( ; a>b; ++b)  i++;

     while(a>++c)  j++;

     do  k++; while(a>d++);

 

 35.设int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}};则表达式a[1][2]+a[2][3]的值是___15_____。

 

  第四部分:判断

1.对于int n=3;执行n+=n-=n*n;后n的值是9。(  × )

2.在C语言中,定义int a=b=c=5;是错的,而int a,b,c; a=b=c=5;是正确的.( √ )

3若有定义int a=3,b=4,c=5; 则a+b>c&&b==c的值为1。( ×  )

4 int x=3,y=2; 则表达式(y++==--x)?y++:x++的值为3。( √ )

5在C语言中,不同类型的数据不可以在一起进行算术运算。(× )

6由于计算机的计算精度很高,所以在C语言中程序计算1.0/3*3的结果肯定等于1。(× )

7当一个C语言表达式中同时含有字符型、整型、单精度和双精度类型数据参加运算时,按照"由低到高"的原则,所有的数据都必须先转换为双精度类型数据后方能参加运算。(× ) 

8. C语言与其他高级语言一样,对于所有的同级运算符均遵循左结合原则。( × )

9. 如果被定义函数的返回值类型是整型或字符型,使用前可以不必进行说明。( √     

10若x为整型变量、j为实型变量,当执行语句:x=(int)j;后,j也变为整型变量。( ×  

11赋值运算符优先于条件运算符.(   ×  )

12“!”的优先级可以比“/”高。(  √ )

13两个char 型数据相加,其结果为char型。(×  )

14若有定义int a; float b=2.1; 则a=int(b+3)是合法的赋值表达式。( ×)

15若有int a=4,b=0;则表达式a&&!b的值为0。( √  )

16C语言程序中,任何英语单词均可以作标识符。(×  )

17在C语言的源程序中,注释使用越多,编译之后的可执行程序的执行效率越低。(  × )

18当主程序执行完毕时,亦即程序执行完毕。 (  √ )

19C程序有且仅有一个main()函数。  ( √  )

20C语言中不区分大小写英文字母。   ( ×  )

21用C语言编写的程序是一种需要经过编译和连接才能运行的程序。( √   

22格式字符%md中的m不能为负。( ×   )

23实际上,可以用顺序、分支、循环三种结构构造任何算法。( √)

24在C语言中,任何一个表达式的最后加上一个分号就构成一个合法的语句。( √)

25下面程序执行结果是32768。(  ×)

main( ) 

   {int a,b;

    printf("%d\n",b=(a=32767,a+1));}

26continue 语句可以用于switch结构中。(×  )

27break语句只能用于循环语句中。( × )

28do......while循环语句至少要执行一次循环体。√

29语句for(; ; ) {循环体} 和 while(1) {循环体}是等价的。(   √    

30在C语言中,for语句既可以用于计数类型循环又可以用于条件类型循环。( √)

31在if...else语句中,else总是和它上面最近且未曾配对的if配对。( √    

32在if(<表达式>) <语句序列1>  else<语句序列2>中的语句序列1和语句序列2可以为复合语句。(  √   

33C语言在判断一个量是否为真时,以非0值代表“真”,以0值代表“假”。(   √ )

34C语言预编译命令#include与#include"myfile.h"的功能是完全一样的。(× )

35宏定义不是C语句,不必在行末加分号。( √ )

36C语言的编译系统对宏命令的处理是在对源程序中其他成份正式编译之前进行的。(  √     

37若有宏定义:#define M(x,y,z)  x*y+z,则宏引用M(2+3,4+5,6+7)通过宏展开后的表达式应为(2+3)*(4+5)+6+7。×

38在函数定义中,形参变量有时也可以是全局变量。(  ×    )

39在C程序中,函数调用可以作为函数的形参。×

40在C程序中,函数调用可以作为函数的实参。√

41在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是指针类型。×

42对任一变量一旦被指定为某一确定类型后,该变量在程序运行时所占存储空间的多少和所能参加的运算类型便已确定了。(√ )

43C语言程序必须包含库函数。( × )

44如果被定义函数的返回值是整型,可以不必进行说明。( √ )

45一个计算机系统中的寄存器数目有限,不能定义任意多个寄存器变量。( √ )

46return语句可以带有表达式也可以不带。( √ )

47若某自定义函数中无return语句,则该函数一定没有返回值。×

48在C语言中,变量的初始化都是在编译阶段完成的。×

49在同一源文件中,全局变量与局部变量同名,在局部变量作用范围内,全局变量的值等于局部变量的值。×

50C语言中,任意两个函数间不能嵌套定义,但可以互相调用。( × )

51在函数的定义中,若函数没有参数,则可以省略函数名后的括号。×

52函数返回值的数据类型取决于return语句中表达式的数据类型。×

53函数返回值的数据类型取决于主调函数传递过来的实参的数据类型。×

54函数返回值的数据类型取决于函数定义时为函数指定的数据类型。√

55在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。√

56C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是整个数组。×

57C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首元素值。×

58C程序中,函数调用时用数组名作为函数的实参,则传递给形参的是数组的首地址值。√

59求n!既可以用递归的方式,也可以用递推的方式。 ( √ )

60在C语言中,所有函数之间都可以相互调用。×

 

  第五部分、程序分析题

 1、写出下面程序的运行结果。

#include

void main()

{

  int x=15;

  while(x<20)

  {  x++;

     if(x/3!=0) {x++;break;}

     else continue;

  }

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

}

17

2、写出下面程序的运行结果。

#include

void inv (int x[ ], int n)

{int t,i,j;

   for (i=0; i

     {j=n-1-i;

      t=x[i]; x[i]=x[j]; x[j]=t;}

}

void main()

{int i,a[5]={3,7,9,11,0};

 inv(a,5);

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

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

 printf("\n");

}

0   11  9   7   3

3写出下面程序的运行结果。(程序运行时,输入一个整数5

#include

void main()

{

  int a,b[10],c,i=0;

  printf("输入一个整数\n");

  scanf("%d",&a);

  while(a!=0)

  {  c=a%2;

     a=a/2;

 b[i]=c;

     i++;

  }

  for(;i>0;i--) printf("%d", b[i-1]);

}

101

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

#include

void main()

{

  int a,b,i;

  a=b=0;

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

  {  a+=i;

     b+=i+1;

  }

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

  printf("b=%d\n", b-11);

}

a=30

   B=25

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

#include

int a=100;

s()

{  static int a =20;

   a++;

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

}

void main()

{

  int i;

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

  {  a++;

     printf("%d",a);

     s();

  }

}

10121

   10222

   10323

 

0

阅读 收藏 喜欢 打印举报/Report
前一篇:考试通知
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有