| 
                      
                       一、单选题(共计60题) 
                        
                          - (1)在下述程序中,if (i>j)  语句共执行的次数是( )。C
 
                         
                                
main()  
                                  
{ int  i=0,j=14,k=2,s=0; 
            
for(;;)  
             
{ i+= k ; 
              
 if(i>j)  
               
{ printf(“%d”,s); 
                
 break ; 
              
} 
             
 s+=i ; 
            
} 
                                  
} 
                               A、6 
                               B、9 
                               C、7 
                             D、12 
                          
                        
                          - (2)若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是( )。C
 
                         
                             A、"ab+" 
                               B、"rb+" 
                               C、"wb+" 
                               D、"ab" 
                          
                        
                          - (3)下列程序的输出结果是( )。C
 
                         
                                
struct  student  
                                  
{ int a,  b, c; };  
                                  
main()  
                                  
        
{ struct  student stu[2]={{2,3,4},{5,6,7}}; int t; 
          
   t=stu[0].a+stu[1].b%stu[0].c; 
          
   printf("%d \n",t); } 
                               A、0 
                               B、1 
                               C、4 
                               D、5 
                          
                        
                          - (4)对于浮点型变量f,能实现对f中的值在小数点后第四位进行四舍五入的表达式是( )。C
 
                         
                             A、f=(f*1000+0.5)/1000.0 
                               B、f=(f*1000+0.5)/1000 
                               C、f=(int)(f*1000+0.5)/1000.0 
                               D、f=(f/1000+0.5)*1000 
                        
                          - (5)现已定义整型变量int i=1; 执行循环语句“while(i++<5);”后,i的值为( )。C
 
                         
                             A、1 
                               B、5 
                               C、6 
                               D、以上三个答案均不正确  
                          
                        
                          - (6)下列程序的输出结果是( )。C
 
                         
                                
struct LH 
                                  
{ int n;struct  LH *m;}p[4]; 
                                  
main()  
                                  
{ int i; 
                                  
for(i=0;i<2;i++)  
           
{p[i].n=i;p[i].m=&p[i+1];} 
                                  
p[i].m=p; 
                                  
printf(“%d,%d\n”,(p[1].m)->n,p[2].m->n); 
                                  
} 
                               A、0,1 
                               B、0,2 
                               C、0,0 
                               D、程序出错  
                          
                        
                          - (7)下列程序的运行结果是( )。B
 
                         
                                
#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(9); 
                                  
printf(“%d\n”,b); 
                                  
} 
                               A、10 
                               B、7 
                               C、8 
                               D、9 
                          
                        
                          - (8)以下程序的输出结果是( )。A
 
                         
                                
int f(int b[],int m,int n)  
                                  
{int  i,s=1; 
          
 for(i=m;i<n;i++)  
          
 {b[i]=b[i-1]+b[i+1]; 
          
  s+=b[i]; } 
          
  return s; } 
                                  
main()  
                                  
{int  x,a[]={1,2,3,4,5,6,7,8,9,10}; 
          
 x=f(a,3,5); 
          
 printf("%d\n",x); } 
                               A、23 
                               B、26 
                               C、42 
                               D、35 
                          
                        
                          - (9)以下程序运行后,输出结果是( )。C
 
                         
                                
main()  
                                  
        
{ char  ch[3][4]={"123","456","78"},*p[3];int i; 
          
   for(i=0;i<3;i++)  p[i]=ch[i]; 
          
   for(i=0;i<3;i++)  printf("%s",p[i]); 
                                  
} 
                               A、123456780 
                               B、123 456 780 
                               C、12345678 
                               D、147 
                          
                        
                          - (10)桌上有白球和黑球共5个,a、b、c、d、e分别表示这5个球的颜色,取值为0、1分别代表白球、黑球。则以下能表示a是黑球,其余至少有两个白球的表达式是( )。C
 
                         
                             A、!a&&(b+c+d+e)==2 
                               B、a&&(b+c+d+e)>2 
                               C、a&&(b+c+d+e)<=2 
                               D、!a&&(b+c+d+e)==3 
                          
                        
                          - (11)下列程序的输出结果是( )。B
 
                         
                                   
#include "stdio.h" 
          
   int f(int n)  
          
   {   static int k, s; 
          
      n--; 
          
      for(k=n; k>0; k--)  
         
           s += k;   
          
      return s; 
          
   } 
          
   void main( )  
          
   {  int  k; 
          
      k=f(2); 
         
       printf("(%d, %d)", k, f(k)); 
          
   } 
                               A、(3, 3)  
                               B、(1, 1)  
                               C、(3, 6)  
                               D、(6, 12)  
                          
                        
                          - (12)若有定义:int a,b;char x,y;并有以下输入数据: 12  13 AaBb(回车) 
 
                         
                        则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是( )。D 
                                  
     A、scanf(“%d”,&a); 
          
   scanf(“%d”,&b); 
          
   x=getchar();y=getchar(); 
                               B、scanf(“%d%d  %c  %c”, &a, &b,&x,&y); 
                               C、scanf(“%d %d  %c  %c”,  &a,&b,&x,&x,&y,&y); 
                               D、scanf(“%d %d %c%c%c%c”,&a,&b,&x,&x,&y,&y); 
                          
                        
                          - (13)以下对结构体成员的运算结果是( )。D
 
                         
                                
#include  <stdio.h> 
                                  
main(){ 
                                  
struct st 
          
     {int x; 
          
      int y; 
          
     }cnum[2]={1,3,2,7}; 
          
     printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x); 
                                  
} 
                               A、0 
                               B、1 
                               C、3 
                               D、6 
                          
                        
                          - (14)函数f定义如下,执行语句“m=f(5);”后,m的值应为( )。B
 
                         
                                
    int f(int k)                          
             
{  if(k==0||k==1) return 1;             
                
else return f(k-1)+f(k-2); 
              
} 
                               A、3 
                               B、8 
                               C、5 
                               D、13 
                          
                        
                          - (15)若有以下定义:char s[10]={’a’,’b’,’c’,’0’, ’2’,’\x32’  ,’\0’,’\123’};执行语句printf(“%d”,strlen(s));的结果是( )。B
 
                         
                             A、3 
                               B、6 
                               C、8 
                               D、9 
                        
                          - (16)若i为整型变量,则以下循环执行的次数是( )。C
 
                         
                                
for(i=0;i<=5;i++)   
                                  
printf("%d",i++); 
                               A、5次  
                               B、2次  
                               C、3次  
                               D、6次  
                          
                        
                          - (17)执行以下程序段后的输出结果是( )。C
 
                         
                                
   int x = 3; 
          
   int m, n; 
          
   n = (++x) + (++x); 
          
   m = (x--) + (x--); 
          
   printf("%d  %d\n", m, n); 
                               A、10 6 
                               B、9 9 
                               C、10 10 
                               D、10 8 
                          
                        
                          - (18)设有定义:int a[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为( )。B
 
                         
                             A、2 
                               B、3 
                               C、4 
                               D、以上都不对  
                          
                        
                          - (19)以下关于循环的程序的输出结果是( )。C
 
                         
                                
#include  "stdio.h" 
                                  
void main()  
                                  
{ 
             
 int k=4,n=0; 
             
 for(;n<k;)  
             
 { 
                   
n++; 
                   
if(n%3!=0) continue; 
                  
 k--; 
              
 } 
              
 printf("%d %d",k,n); 
                                  
} 
                               A、1 1 
                               B、2 2 
                               C、3 3 
                               D、4 4 
                          
                        
                          - (20)下列关于字符串操作的输出结果是( )。D
 
                         
                                
#include  "stdio.h" 
                                  
#include  "string.h" 
                                  
void main()  
                                  
{ 
              
char  p1[20]="abcd",p2[20]="ABCD"; 
              
char str[50]="xyz"; 
              
strcpy(str+2,strcat(p1+2,p2+1)); 
             
 printf("%s\n",str); 
                                 
 } 
                               A、xyabcAB 
                               B、abcABz 
                               C、Ababcz 
                               D、xycdBCD 
                          
                        
                          - (21)下列选项中属于正确的switch语句的是( )。C
 
                         
                             A、swicth(’a’)                                
      { case   ‘a’:printf(“A\n”);                    
        case   ‘b’:printf(“B\n”);   }                  
                               B、switch(1.0)  
      { case 1.0 :printf(“A\n”); 
        case 2.0 :printf(“B\n”);} 
                               C、switch((int)(x+2.5))                      
      { case 1 :printf(“A\n”);                     
        case 1+2 :printf(“B\n”);} 
                               D、switch(“a”); 
       { case “a” :printf(“A\n”); 
         case “b” :printf(“B\n”);} 
                          
                        
                          - (22)以下程序的运行结果为( )。A
 
                         
                                
#include  "stdio.h" 
                                  
void main(){ 
                                  
int  y=2,a=1; 
                                  
while(y--!=-1){ 
                                  
do{ 
                                  
a*=y;a++; 
                                  
}while(y--);} 
                                  
printf("%d,%d\n",a,y);} 
                               A、1,-2 
                               B、2,1 
                               C、1,0 
                               D、2,-1 
                          
                        
                          - (23)C语言的输入与输出操作是由( )完成的。C
 
                         
                             A、输入语句  
                               B、输出语句  
                               C、输入与输出函数  
                               D、输入与输出语句  
                          
                        
                          - (24)若有以下程序段 
 
                         
                                
… … 
                                  
int a[  ]={4,0,2,3,1},i,j,t; 
                                  
for(i=1;i<5;i++)  
                                  
{t=a[i];j=i-1; 
          
 while(j>=0&&t>a[j])  
          
 {a[j+1]=a[j];j--;} 
          
  a[j+1]=t;} 
          
… … 
                          则该程序段的功能是( )。B 
                               A、对数组a进行插入排序(升序)  
                               B、对数组a进行插入排序(降序)  
                               C、对数组a进行选择排序(升序)  
                               D、对数组a进行选择排序(降序) 
                           
                        
                          - (25)执行下列程序中的输出语句后,x的值是( )。A
 
                         
                                
main()  
                                  
{int x ; 
          
 printf(“%d\n”,(x=4*5,x*2,x+20));} 
                               A、20 
                               B、40 
                               C、60 
                               D、80 
                          
                        
                          - (26)下列程序段的输出结果是( )。B
 
                         
                                
int c[  ]={1, 7, 12}; 
                                  
int  *k=c+1; 
                                  
printf("%d",*k++); 
                               A、2 
                               B、7 
                               C、8 
                               D、12 
                          
                        
                          - (27)下列程序的运行结果是( )。D
 
                         
                                
main()  
                                  
{int  a=4,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、4 
                               B、-1 
                               C、1 
                               D、0 
                          
                        
                          - (28)有如下程序:int x=-20; printf("%d\n",~x);,其输出结果将是( )。A
 
                         
                             A、19 
                               B、20 
                               C、21 
                               D、-1 
                          
                        
                          - (29)对于类型相同的指针变量,不能进行的运算是( )。A
 
                         
                             A、+ 
                               B、- 
                               C、= 
                               D、== 
                          
                        
                          - (30)已知: 
 
                         
                                
union  u_type 
                                  
{ int i; 
          
 char ch; 
          
 float a; 
                                  
}temp; 
                                  
现在windows环境下,执行"temp.i=266;printf("%d",temp.ch)"的结果是( )。C 
                               A、266 
                               B、256 
                               C、10 
                               D、1 
                          
                        
                          - (31)以下程序的运行结果是( )。B
 
                         
                                
#include  "stdio.h" 
                                  
main()  
                                  
{  
          
  int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; 
          
  int *p=a+5,*q=NULL; 
          
  q=p+5; 
          
  printf("%d %d\n",*p,*q); 
                                  
} 
                               A、运行后报错  
                               B、6 11 
                               C、6 12 
                               D、5 5 
                          
                        
                          - (32)以下程序的输出结果是(  )。C
 
                         
                                 
main()  
           
{int a=0,b=1,c=0,d=20; 
           
if (a) d=d-10; 
           
else if (!b)  
           
 if (!c) d=15; 
           
 else d=25; 
           
printf("d=%d\n",d); 
           
} 
                               A、d=10 
                               B、d=15 
                               C、d=20 
                               D、d=25 
                          
                        
                          - (33)下面四组字符串中,都可以用作C语言程序标识符的是( )。A
 
                         
                             A、   print 
         _maf 
         mx_2d 
         aMb6 
                               B、   I\am 
         scanf 
         mx_ 
         MB 
                               C、   sign 
         3mf 
         a.f 
         A&B 
                               D、   if 
         ty_pe 
         x1# 
         5XY 
                          
                        
                          - (34)下列程序的输出结果是( )。A
 
                         
                                 
int f()  
           
{ static int i=0; 
            
 int s=1; 
             
s+=i;i++; 
             
return s;} 
           
main()  
           
{ int i , a=0; 
            
for(i=0;i<6;i++)a+=f(); 
            
printf(“%d\n”,a);} 
                               A、21 
                               B、24 
                               C、25 
                               D、15 
                          
                        
                          - (35)设有定义:#define STR "12345";,则以下叙述正确的是( )。C
 
                         
                             A、宏名STR代替的是数值常量12345 
                               B、宏定义以分号结束,编译时会产生错误信息  
                               C、宏名STR代替的是字符串"12345" 
                               D、宏名STR代替的是字符串常量"12345" 
                          
                        
                          - (36)以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为( )。D
 
                         
                            #include "stdio.h" 
      #include "string.h" 
      func (char str [ ])  
        { int num =0;  
           while (*(str +num )!=’\0’)num ++;  
           return(num );  
        }  
      main()  
      { char str [10],*p=str ;  
         gets(p); printf("%d\n",func(p));  
       } 
                               A、8 
                               B、7 
                               C、6 
                               D、5 
                          
                        
                          - (37)下列程序的输出结果是( )。C
 
                         
                                
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->y)); 
           printf(“%d ”,(++p)->x); 
           
 printf(“%d ”,++p->x);} 
                               A、20 20 10 
                               B、21 60 50 
                               C、11 60 61 
                               D、31 70 60 
                          
                        
                          - (38)以下函数的功能是( )。C
 
                         
                                
char *fun(char *str1,char*str2)  
                                  
{  
           
 while((*str1)&&(*str2++=*str1++));  
            
return str2;  
                                 
 } 
                               A、求字符串的长度  
                               B、比较两个字符串的大小  
                               C、将字符串str1复制到字符串str2中  
                               D、将字符串str1接续到字符串str2中  
                        
                          - (39)以下程序的输出结果是( )。B
 
                         
                                
#include  <stdio.h> 
                                  
void func(char **m)  
                                  
{ 
            
 ++*m; 
            
 printf("%s\n",*m); 
                                  
} 
                                  
void main()  
                                  
{  
             
static char  *a[]={"first","second","three"}; 
             
char **n;  
             
n=a; 
             
func(n); 
                                  
} 
                               A、first 
                               B、irst 
                               C、second 
                               D、其他  
                          
                        
                          - (40)以下语句的输出结果为( )。 B
 
                         
                                
for(k=0;k<5;++k)  
                                  
{ if(k==3) continue; 
                                  
printf("%d",k); 
                                  
} 
                               A、012 
                               B、0124 
                               C、01234 
                               D、没有输出结果  
                          
                        
                          - (41)下面的程序对输入的每一个数字出现的次数进行计数,下划线处应填入的正确语句为( )。A
 
                         
                                
#include  "stdio.h" 
                                  
main()  
                                  
{int  i,ch, n[10]; 
           
 for(i=0;i<10;++i) n[i]=0; 
            
 while((ch=getchar())!=‘\n’)  
             
if(ch>=‘0’ && ch<=‘9’)  
            
 ________; 
             
for(i=0;i<10;++i)  
            
 printf("数字%d出现的次数是:%d\n",i,n[i]); 
                                 
 } 
                               A、n[ch-‘0’]++ 
                               B、n[ch]++ 
                               C、i++ 
                               D、n[i]++ 
                          
                        
                          - (42)以下程序的输出结果是( )。D
 
                         
                                
#include  "stdio.h" 
                                  
int *fun()  
                                  
{ 
           
 int a[4],k; 
           
 for(k=0;k<4;k++)a[k]=k; 
                  
 return(a); 
                                  
} 
                                  
void main()  
                                  
{  
           
 int *p,j; 
           
 p=NULL; 
           
 p=fun(); 
           
 for(j=0;j<4;j++){printf("%d\n",*p);p++;} 
                                  
} 
                               A、0000 
                               B、0123 
                               C、1111 
                               D、输出不确定值 
                           
                        
                          - (43)若有如下结构体定义,下列scanf用法不正确的是( )。D
 
                         
                                
struct  pupil 
                                  
{        
 
             
 char name[20]; 
              
int age; 
              
int  sex; 
                                  
}pup[5],*p; 
                                  
p=pup; 
                               A、scanf("%s",pup[0].name); 
                               B、scanf("%d",&pup[0].age); 
                               C、scanf("%d",&(p->sex)); 
                               D、scanf("%d",p->age); 
                          
                        
                          - (44)与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是( )。A
 
                         
                              A、if (x>0)y=1;  
       else if(x<0)y=-1;  
       else y=0; 
                               B、if(x)  
       if(x>0)y=1;  
       else if(x<0)y=-1; 
                               C、y=-1  
       if(x)  
       if(x>0)y=1;  
       else if(x==0)y=0;  
       else y=-1; 
                               D、y=0;  
       if(x>=0)  
       if(x>0)y=1; 
       else y=-1; 
                          
                        
                          - (45)下列描述中不正确的是( )。D
 
                         
                             A、字符型数组中可能存放字符串  
                               B、可以对字符型数组进行整体输入、输出  
                               C、可以对整型数组进行整体输入、输出  
                               D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值  
                          
                        
                          - (46)下面程序运行后,关于a、b、c的值应输出为( )。A
 
                         
                                #include  "stdio.h" 
                                  
main()  
                                  
{ 
             
 int a=1, b=2, c=2,t; 
             
 while (a<b<c){t=a;a=b;b=t;c--;} 
             
 printf("%d,%d,%d",a,b,c); 
                                 
 } 
                               A、1,2,0 
                               B、2,1,0 
                               C、1,2,1 
                           D、2,1,1 
                          
                        
                          - (47)在16位 PC机环境下,下列程序的输出结果是( )。C
 
                         
                                struct tt 
                                  { int  n1;char n2;float n3; 
           union uu{int u1[3];char u2[3];}su; 
                                  }; 
                                  main()  
                                  {printf(“%d\n”,sizeof(struct tt));} 
                               A、11 
                               B、12 
                               C、13 
                               D、9 
                          
                        
                          - (48)若有如下程序: 
 
                         
                                void s(char *m,int n)  
                                  { 
              *m=*m+3;n=n+3; 
                                  printf("%c,%c,",*m,n); 
                                  } 
                                  void main()  
                                  { 
              char p=’b’,q=’B’; 
                                  s(&q,p); 
                                  printf("%c,%c\n",p,q); 
                                  } 
                                  则程序运行后的输出结果是( )。A 
                               A、E,e,b,E 
                               B、e,E,b,F 
                               C、E,e,e,E 
                               D、e,E,b,E 
                          
                        
                          - (49)以下程序的输出结果是( )。A
 
                         
                                #include  <stdio.h> 
                                  int main()  
                                  { 
              char str[100]="ABCDEFG", *p=str; 
              int i; 
              for(i = 0; *p != ’\0’; p++,i++); 
              printf("%d\n",i); 
              return 0; 
                                  } 
                               A、7 
                               B、8 
                               C、99 
                               D、100 
                          
                        
                          - (50)某C编译系统规定,int型数组占2个字节,则定义以下语句后,sizeof(aa)=( )。D
 
                         
                                struct  {long num; 
                                  char  name[20]; 
                                  union  {float x; 
                                  short y; 
                                  }xy; 
                                  }aa; 
                               A、32 
                               B、26 
                               C、30 
                               D、28 
                          
                        
                          - (51)语句:printf(“%d”,!0);的输出结果是( )。A
 
                         
                             A、1 
                               B、0 
                               C、有语法错误 ,不能执行  
                               D、!0 
                          
                        
                          - (52)函数f定义如下,执行语句“sum=f(4)+f(2);”后,sum的值应为( )。C
 
                         
                               int f(int m)                       
        {   static int i=0; int s=0;             
           for(;i<=m;i++) s+=i; return s; 
         } 
                               A、13 
                               B、16 
                               C、10 
                               D、8 
                          
                        
                          - (53)fwrite函数的一般调用格式是( )。D
 
                         
                             A、fwrite(buffer,count,size,fp); 
                               B、fwrite(fp,count,size,buffer); 
                               C、fwrite(fp,size,count,buffer); 
                               D、fwrite(buffer,size,count,fp); 
                          
                        
                          - (54)有以下程序段 
 
                         
                                main()  
                                  { int  i=1,sum=0,n; 
             scanf("%d",&n); 
                                  do 
                                  {  i+=2;   
                                  sum+=i ; 
                                  }while(i!=n); 
                                  printf("%d",sum); 
                                  } 
                          若使程序的输出值为15,则应该从键盘输入的n的值是( )。D 
                               A、1 
                               B、3 
                               C、5 
                               D、7 
                          
                        
                          - (55)下列选项可作为C语言赋值语句的是( )。A
 
                         
                             A、a=1;b=2; 
                               B、a=b=6 
                               C、i--  
                               D、y=int(x); 
                          
                        
                          - (56)已知有以下的说明, 
 
                         
                                int  a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( )。B 
                               A、5 
                               B、0 
                               C、4 
                               D、7 
                          
                        
                          - (57)已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出结果是( )。A
 
                         
                                man=0; 
                                  switch(man)  
                                  { case 0:  printf("People\n");break; 
            case 1: printf("Man\n");break; 
            case 2: printf("Woman\n");break; 
            default: printf("Error\n");break; 
                                  } 
                               A、People 
                               B、Man 
                               C、Woman 
                               D、Error 
                          
                        
                          - (58)以下能正确计算1×2×3×……×10的程序段是( )。C
 
                         
                             A、do   {i = 1;s = 1;               
             s = s * i;                          
             i + +;                             
             } while (i <= 10);   
                               B、do   {i = 1;s = 0; 
             s = s * i; 
             i + +; 
             } while (i <= 10); 
                               C、i = 1;s = 1;                      
       do   {s = s * i;                       
            i + +;                                
            } while (i <= 10); 
                               D、i = 1;s = 0; 
       do   {s = s * i; 
            i + +; 
            } while (i <= 10); 
                          
                        
                          - (59)以下程序的运行结果是( )。A
 
                         
                                void main()  
                                  { 
            int a=4; char ch=’a’; 
            printf( "%d\n",(a&2)&&(ch>’A’)); 
                                  } 
                               A、0 
                               B、1 
                               C、2 
                               D、3 
                          
                        
                          - (60)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,下列语句正确的是( )。B
 
                         
                             A、p=2*(int*)malloc(sizeof(int)); 
                               B、p=(int*)malloc(2*sizeof(int)); 
                               C、p=(int*)malloc(2*2); 
                               D、p=(int*)malloc(2,sizeof(int)); 
                          
                        二、多选题(共计20题)  
                          
                        
                          - (1)以下叙述中正确的有( )。BC
 
                         
                             A、在程序的一行上可以出现多个有效的预处理命令行  
                               B、宏定义不是C语句,不必在行末加分号  
                               C、宏替换不占用运行时间,只占用编译时间  
                               D、在以下定义中C R是称为“宏名”的标识符  #define    C   R   045 
                          
                        
                          - (2)要求函数的功能是在一维数组a中查找x值。若找到,则返回所在的下标值;否则,返回0。设数据放在数组元素的a[1]到a[n]中。在以下给出的函数中,不能正确执行此功能的有( )。ABD
 
                         
                             A、funa(int *a, int n, int x)  
      {  
        *a = x; 
        while(a[n] != x) n--; 
        return n; 
      } 
                               B、funb(int *a, int n, int x)  
      {   
        int k; 
        for(k = 1; k <= n; k++)  
        if(a[k] == x) return k; 
         return 0; 
      } 
                               C、func(int a[], int n, int x)  
      {  
        int *k; 
        a[0] = x; k = a+n; 
        while(*k != x) k--; 
        return k - n; 
      } 
                               D、fund(int a[], int n, int x)  
      {  
        int k = 0; 
        do  
        {k++; 
        }while((k < n+1)&&(a[k]!=x)); 
        if((k < n+1)&&a[k] == x)) return k; 
        else return 0; 
      } 
                          
                        
                          - (3)下面说法正确的有( )。ABCD
 
                         
                             A、共用体变量的地址和它各成员的地址都是同一地址  
                               B、共用体内的成员可以是结构变量,反之亦然  
                               C、在任一时刻,共用体变量的各成员只有一个有效  
                               D、函数不可以返回一个共用体变量  
                          
                        
                          - (4)如有两个字符数组a、b,则以下输入语句正确的有( )。BCD
 
                         
                             A、gets(a,b); 
                               B、scanf("%s%s",a,b); 
                               C、for(i=0;(a[i]=getchar())!=’\n’;i++); 
       for(i=0;(b[i]=getchar())!=’\n’;i++); 
                               D、gets(a);gets(b); 
                          
                        
                          - (5)当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有( )。(假设k>0)ACD
 
                         
                             A、k%2 
                               B、k%2==0 
                               C、(k%2)!=0 
                               D、k%2==1 
                          
                        
                          - (6)设有以下语句 
 
                         
                                struct  st{ 
              int n; 
              struct st *next; 
              }; 
                          static  struct st a[3]={5,&a[1],6,&a[2],7,},*p=&a[0]; 
                          若要使printf("%d\n",____)输出值为6,则下划线处表达式可以为( )。BCD 
                               A、p->n++ 
                               B、++p->n 
                               C、(++p)->n 
                               D、p->next->n 
                          
                        
                          - (7)下列说法不正确的有( )。BCD
 
                         
                             A、带参数的宏定义中的参数是没有类型的  
                               B、宏展开将占用程序的运行时间  
                               C、宏定义命令是C语言中的一种特殊语句  
                               D、使用#include命令包含的头文件必须以".h"为后缀  
                          
                        
                          - (8)下列有关函数调用的说法正确的有( )。BCD
 
                         
                             A、若用值传递方式,则形式参数不予分配内存  
                               B、实际参数和形式参数不可以同名  
                               C、主调函数和被调用函数可以不在同一个文件中  
                           D、函数间传送数据可以使用外部全局变量  
                        
                      
                        - (9)若变量已正确定义,以下能正确计算1*2*3*4*5的程序段有( )。CD
 
                       
                           A、      i=1;s=1;                          
       do                                     
       { s=s*i;i++;}                              
       while(i<5); 
                             B、      i=0;s=0; 
       do 
        { i++; s=s*i;}  
       while(i<5); 
                             C、      i=1;s=1;                          
       do                                     
       {  s=s*i;i++;}                              
       while(i<6); 
                             D、      i=0;s=1; 
       do 
       { i++; s=s*i;}  
       while(i<5); 
                        
                      
                        - (10)设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i;
 
                       
                      要求依次输出x数组中6个元素中的值,下列选项中能完成此操作的语句有( )。ABC 
                             A、for(i=0;i<6;i++)printf(“%2d”,*(p++)); 
                             B、for(i=0;i<6;i++)printf(“%2d”,*(p+i)); 
                             C、for(i=0;i<6;i++)printf(“%2d”,*p++); 
                             D、for(i=0;i<6;i++)printf(“%2d”,(*p)++); 
                        
                      
                        - (11)整型变量x=1,y=3,经下列( )计算后,x的值等于6。ABD
 
                       
                           A、x=(x=1+2,x*2)  
                             B、x=y>2?6:5 
                             C、x=9-(y--)-(y--)  
                             D、x=y*4.8/2-1 
                        
                      
                        - (12)下列关于指针定义的描述正确的有( )。ABCD
 
                       
                           A、指针变量是一种变量,该变量是用来存放某个变量的地址值的  
                             B、指针变量的类型与它所指向的变量类型一致  
                             C、指针变量的命名规则与标识符相同  
                             D、在定义指针时,”*”号表示指针变量的指向  
                        
                      
                        - (13)以下对结构体变量stu1中成员age的引用正确的有( )。ACD
 
                       
                           struct  student 
                             {int age; 
       int num; 
                             }stu1,*p; 
       p=&stu1; 
                             A、stu1.age 
                             B、student.age 
                             C、p->age 
                             D、(*p).age 
                        
                      
                        - (14)设有结构体类型: 
 
                       
                                  typedef  struct str{ 
              int no;             
              char  name[20]; 
                                }STR; 
                                另有变量定义:STR a[20], x; 
                                如希望实现向与文件指针变量fp关联的文件输出一个结构信息,则以下语句正确的有( )。ABC 
                             A、fwrite(a, sizeof(STR), 1, fp); 
                             B、fwrite(&a[2], sizeof(STR), 1, fp); 
                             C、fwrite(&x, sizeof(STR), 1, fp); 
                             D、fwrite(x, sizeof(STR), 1, fp); 
                        
                      
                        - (15)t为int类型,进入下面循环之前,t的值为0: 
 
                       
                              for(;t=1;)  
          { ……….} 
                                则下列叙述不正确的有( )。AC 
                             A、循环控制表达式的值为0 
                             B、循环控制表达式的值为1 
                             C、循环控制表达式不合法  
                             D、循环有可能是个无限循环  
                        
                      
                        - (16)下列叙述不正确的有( )。AB
 
                       
                           A、函数可以嵌套定义,但不能嵌套调用  
                             B、函数可以嵌套调用,也可以嵌套定义  
                             C、函数不可以嵌套定义,但可以递归调用  
                             D、函数可以嵌套调用,但不能嵌套定义  
                        
                      
                        - (17)关于数组与字符串,下列选项中属于不合法的定义有( )。ABC
 
                       
                           A、char s="string"; 
                             B、int a[5]={0,1,2,3,4,5}; 
                             C、char s[5]="string"; 
                             D、char a[]={0,1,2,3,4,5}; 
                        
                      
                        - (18)若有定义: char  *str[]={"one","two","three"},**p=str; 
 
                       
                      则下列选项中可以表示出字符’t’的表达有( )。AD 
                             A、*str[2] 
                             B、*str+2 
                             C、*(p+1)  
                             D、**++p 
                        
                      
                        - (19)若有以下调用语句,则正确的fun函数的首部包括( )。ABC
 
                       
                              main()  
                                { …  
            int a[50],n;  
            …  
            fun(n, &a[9]);  
            …  
                                } 
                             A、void fun(int m, int x[])  
                             B、void fun(int s, int h[41])  
                             C、void fun(int p, int *s)  
                             D、void fun(int n, int a)  
                        
                      
                        - (20)已知有定义: 
 
                       
                                      struct{ 
              int no; 
              char name[20]; 
                                }a,b,*c; 
                                则以下语句合法的有( )。CD 
                             A、a=b; 
                             B、a=&b; 
                             C、c=&b; 
                             D、*c=b 
   |