您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C语言 >> 模拟题 >> 正文    
  全国计算机等级考试二级C语言之一维数组与指针1 【注册男护士专用博客】          

全国计算机等级考试二级C语言之一维数组与指针1

www.nanhushi.com     佚名   不详 

一、选择题
(1)有以下程序
 main()
 { int  a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;
   printf("%d\n", *p + *q);
 }
程序运行后的输出结果是
  A)16   
  B)10   
  C)8   
  D)6

(2)有以下程序
 main()
 { int  a[]={2,4,6,8,10}, y=0, x, *p;
   p=&a[1];
   for(x= 1; x<3; x++)  y += p[x];
   printf("%d\n",y);
 }
程序运行后的输出结果是
  A)10   
  B)11   
  C)14   
  D)15
(3)有以下程序
 void sort(int  a[], int  n)
 { int  i, j ,t;
   for (i=0; i<n-1; i++)
     for (j=i+1; j<n; j++)
       if (a[i]<a[j]){  t=a[i];  a[i]=a[j];  a[j]=t;  }
 }
 main()
 { int  aa[10]={1,2,3,4,5,6,7,8,9,10}, i;
   sort(aa+2,  5);
   for (i=0; i<10; i++) printf("%d,",aa[i]);
   printf("\n");
 }
程序运行后的输出结果是
  A)1,2,3,4,5,6,7,8,9,10,   B)1,2,7,6,3,4,5,8,9,10,
  C)1,2,7,6,5,4,3,8,9,10,   D)1,2,9,8,7,6,5,4,3,10,
(4)有以下程序
 void sum(int  a[])
 {  a[0] = a[-1]+a[1];  }
 main()
 { int  a[10]={1,2,3,4,5,6,7,8,9,10};
   sum(&a[2]);
   printf("%d\n", a[2]);
 }
程序运行后的输出结果是
  A)6   
  B)7   
  C)5   
  D)8
(5)有以下程序
 void swap1(int  c0[], int  c1[])
 { int  t ;
   t=c0[0];    c0[0]=c1[0];    c1[0]=t;
 }
 void swap2(int  *c0, int  *c1)
 { int  t;
   t=*c0;    *c0=*c1;    *c1=t;
 }
 main()
 { int  a[2]={3,5},  b[2]={3,5};
   swap1(a, a+1);    swap2(&b[0], &b[1]);
   printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);
 }
程序运行后的输出结果是
  A)3 5 5 3  
  B)5 3 3 5  
  C)3 5 3 5  
  D)5 3 5 3

(6)有以下程序
main()
{
   int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;
   while(i++<7)  if(p[i]%2)   j+=p[i];
   printf("%d\n",j);
}
程序运行后的输出结果是    
  A)42
  B)45
  C)56
  D)60

(7)有以下程序
void  f(int  *x,int  *y)
{     int  t;
    t=*x;*x=*y;*y=t;
}
main()
{   int  a[8]={1,2,3,4,5,6,7,8},i,*p,*q;
    p=a;q=&a[7];
    while(p<q)
   {
   f(p,q);
   p++;
   q--;
   }
   for(i=0;i<8;i++)
      printf("%d,",a[i]);
}
程序运行后的输出结果是                       
  A)8,2,3,4,5,6,7,1,
  B)5,6,7,8,1,2,3,4,
  C)1,2,3,4,5,6,7,8,
  D)8,7,6,5,4,3,2,1,



(8)以下叙述中错误的是    
  A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
  B)数组名代表的是数组所占存储区的首地址,其值不可改变
  C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
  D)可以通过赋初值的方式确定数组元素的个数

(9)有以下程序
#define  N  20
fun(int  a[],int  n,int m)
{   int i,j;
    for(i=m;i>=n;i--)
       a[i+1]=a[i];
}
main()
{
   int i,a[N]={1,2,3,4,5,6,7,8,9,10};
   fun(a,2,9);
   for(i=0;i<5;i++)
     printf("%d",a[i]);
}
程序运行后的输出结果是    
  A)10234
  B)12344
  C)12334
  D)12234

(10)有以下程序
prt(int  *m,int  n)
{
   int i;
   for(i=0;i<n;i++)
       m[i]++;
}
main()
{
   int a[]={1,2,3,4,5},i;
   prt(a,5);
   for(i=0;i<5;i++)
      printf("%d,",a[i]);
}
程序运行后的输出结果是:     
  A)1,2,3,4,5,
  B)2,3,4,5,6,
  C)3,4,5,6,7,
  D)2,3,4,5,1,

(11)有以下程序
main()
{   int  a[]={1,2,3,4,5,6,7,8,9,0},*p;
    for(p=a;p<a+10;p++)
      printf("%d,",*p);
}
程序运行后的输出结果是                
  A)1,2,3,4,5,6,7,8,9,0,
  B)2,3,4,5,6,7,8,9,10,1,
  C)0,1,2,3,4,5,6,7,8,9,
  D)1,1,1,1,1,1,1,1,1,,1,

(12) 有以下程序 
int f(int a)
{ return a%2; }
main()
{ int s[8]={1,3,5,2,4,6},i,d=0;
  for (i=0;f(s[i]);i++) d+=s[i];
  printf("%d\n",d);
}
程序运行后的输出结果是
  A) 9    
  B) 11    
  C) 19    
  D) 21 

(13) 设有定义语句
int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是
  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)++); 

(14) 有以下程序
#include <stdio.h>
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12,},*p=a+5,*q=NULL;
  *q=*(p+5);
   printf("%d %d\n",*p,*q);
}
程序运行后的输出结果是
  A) 运行后报错  
  B) 6 6     
  C) 6 11   
  D) 5 10 


(15) 已有定义:int i,a[10],*p;,则合法的赋值语句是
  A) p=100;    
  B) p=a[5];   
  C) p=a[2]+2;  
  D) p=a+2;

(16) 有以下程序
main()
{ int x[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
  for (j=2;j>=i;j--)
    if(x[j+1]>x[j]){  k=x[j];x[j]=x[j+1];x[j+1]=k;}
  for(i=0;i<3;i++)
    for(j=4;j<7-i;j++)
     if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
  for (i=0;i<3;i++)
    for(j=4;j<7-i;j++)
     if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k;}
  for (i=0;i<8;i++) printf("%d",x[i]);
  printf("\n");
}
程序运行后的输出结果是:
  A) 75310246   
  B) 01234567    
  C) 76310462   
  D) 13570246

(17) 有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是
  A) 5   
  B) 6   
  C) 8   
  D) 9

(18) 有以下程序
void swap1(int c[])
{ int t;
  t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{  int t;
   t=c0;c0=c1;c1=t;
}
main( )
{ int a[2]={3,5},b[2]={3,5};
  swap1(A) ;  swap2(b[0],b[1]);
  printf(“%d  %d  %d  %d\n”,a[0],a[1],b[0],b[1]);
}
其输出结果是
  A) 5 3 5 3   
  B)  5 3 3 5  
  C) 3 5 3 5   
  D) 3 5 5 3

(19)  有以下程序
void sum(int *A) 
{ a[0]=a[1];}
main( )
{  int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
   for(i=2;i>=0;i--) &nb
   sp; sum(&aa[i]);
   printf(“%d\n”,aa[0]);
}
执行后的输出结果是
  A) 4     
  B) 3     
  C) 2     
  D) 1

(20) 有以下程序
void sort(int a[],int n)
{  int i,j,t;
   for(i=0;i<n-1;i+=2)
      for(j=i+2;j<n;j+=2)
          if(a[i]<a[j])  {  t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
  sort(aa,10);
  for(i=0;i<10;i++)    printf(“%d”,aa[i]);
  printf(“\n”);
}
其输出结果是
  A) 1,2,3,4,5,6,7,8,9,10,     
  B) 10,9,8,7,6,5,4,3,2,1,
  C) 9,2,7,4,5,6,3,8,1,10,    
  D) 1,10,3,8,5,6,7,4,9,2,

(21) 以下能正确定义一维数组的选项是
  A) int   num [];              B) #define  N 100
                                        Int  num [N];
  C) int  num[0..100];           D) int  N=100;
    int   num[N];

(22) 有以下程序
main()
{ int p[7]={11,13,14,15,16,17,18},i=0,k=0;
 while(i<7&&p[i]%2){k=k+p[i];i++;}
 printf("%d\n",k);
}
执行后输出结果是
  A) 58 
  B) 56 
  C) 45 
  D) 24


(23) 有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
 s=x+3
 printf("%d\n",s[2]);
}
执行后输出结果是
  A) 随机值   
  B) 0   
  C) 5   
  D) 6

(24) 以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。
#define  N 10
void   arrin(int x[N])
{ int i=0;
 while(i<N)
  scanf("%d",      );
}
在下划线处应填入的是
  A) x+i   
  B)&x[i+1]  
  C)x+(i++)  
  D)&x[++i]

(25) 以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序
void sort(int a[],int n)
{ int  i,j,t;
for(i=0;i<n-1;i++
for(j=i+1,j<n;j++)
if(a[i]<a[j])  {t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=o;i<10;i++)  print(“%d,”,aa[i]);
printf(‘\n”);
}
程序运行后的输出结果是
  A)1,2,3,4,5,6,7,8,9,10      
  B) 10,9,8,7,6,5,4,3,2,1,
  C) 1,2,3,8,7.6.5.4.9,10      
  D) 1,2,10,9,8,7,6,5,4,3

(26) 以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。
void reverse(int  a[ ],int n)
{ int  i,t;
for(i=0;i<n/2;i++)
{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{ int  b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;
  reverse(b,8);
  for(i=6;i<10;i++) s+=b[i];
  printf(“%d\n”,s);
}
程序运行后的输出结果是
  A) 22      
  B) 10   
  C) 34   
  D) 30

(27) 以下程序调用findmax函数返回数组中的最大值
findmax(int  *a,int  n)
{ int   *p,*s;
for(p=a,s=a;  p-a<n;  p++)
if (             )  s=p;
return(*s);
}
main()
{ int  x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
在下划线处应填入的是
  A) p>s         
  B) *p>*s       
  C) a[p]>a[s]    
  D) p-a>p-s

(28) 若有定义:int  aa[ 8];。则以下表达式中不能代表数组元aa[1]的地址的是
  A) &aa[0]+1    
  B) &aa[1]       
  C) &aa[0]++   
  D) aa+1

(29) 以下程序的输出结果是
f(int  b[],int  m,int  n)
{ int  i,s=0;
for(i=m;i<n;i=i+2)  s=s+b[i];
return  s;
}
main()
{int  x,a[]={1,2,3,4,5,6,7,8,9};
x=f(a,3,7);
printf("%d\n",x);
}
  A) 10        
  B) 18        
  C) 8         
  D) 15



(30) 假定int类型变量占用两个字节,其有定义:int  x[10]={0,2,4};,则数组x在内存中所占字节数是
  A) 3      
  B) 6         
  C) 10       
  D) 20

(31) 以下程序的输出结果是
main()
{   int   i, a[10];
for(i=9;i>=0;i--)  a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
  A) 258      
  B) 741   
  C) 852          
  D) 369

(32) 下列程序的输出结果是
  A) 非法           
  B)a[4]的地址       
  C)5              
  D)3
   main() 
   {   char  a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
      printf(“%d”,*--p);
   }

(33) 下面程序的输出结果是
  A) 0       
  B) 1           
  C) 10        
  D) 9
  main()
  {  int  a[ ]={1,2,3,4,5,6,7,8,9,0,},*p;
     p=a;
     printf(“%d\n”,*p+9);
  }

(34) 当调用函数时,实参是一个数组名,则向函数传送的是
  A) 数组的长度               
  B) 数组的首地址
  C) 数组每一个元素的地址             
  D) 数组每个元素中的值

(35) 以下程序的输出结果是
  A) 20      
  B) 21    
  C) 22    
  D)23
main()
{  int  i,  k,  a[10],  p[3];
   k=5;
   for (i=0;i<10;i++)   a[i ]=i;
   for (i=0;i<3;i++)    p[i ]=a[i *(i+1)];
   for (i=0;i<3;i++)    k+=p[i] *2;
   printf(“%d\n”,k);
}

(36) 以下函数返回a所指数组中最小的值所在的下标值
fun(int   *a,  int  n)
{   int   i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a[i]<a[p])__________;
return(p);
}
在下划线处应填入的是
  A) i=p             
  B) a[p]=a[i]       
  C) p=j            
  D) p=i

(37) 有如下说明
int  a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是
  A) *P+9            
  B) *(P+8)          
  C) *P+=9          
  D) P+8

(38) 有如下程序
main0
{   int  n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++)  n[i]=n[i]+1;
printf(“%d\n”,n[k]);
}
该程序的输出结果是
  A) 不确定的值      
  B) 2               
  C) 1              
  D) 0


(39) 执行下面的程序段后,变量k中的值为
  A) 不定值     
  B) 33               
  C) 30            
  D) 10
     int  k=3, s[2];
     s[0]=k;  k=s[1]*10;

(40) 若已定义:
     int a[ ]={0,1,2,3,4,5,6,7,8,9], *p=a,i;
     其中 0≤i≤9, 则对a数组元素不正确的引用上
  A) a[p-a]     
  B) *(&a[i])         
  C) p[i]          
  D) a[10]

(41) 下列程序执行后的输出结果是
  A) 6
  B) 7                
  C) 8             
  D) 9
       void func(int *a,int b[])
       { b[0]=*a+6; }
       main()
       { int a,b[5];
         a=0;       b[0]=3;
         func(&a,b);  printf("%d \n,b[0]);
       }

(42) 若有以下调用语句,则不正确的fun函数的首部是
  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)
        main()
        {   …
            int a[50],n;
            …
            fun(n, &a[9]);
            …
        }

(43) 以下程序的输出结果是
  A)6
  B) 6789      
  C) ’6’      
  D) 789
     main(  )
     {    char  a[10]={’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,0},*p;
             int  i;
             i=8;
             p=a+I;
             printf("%s\n",p-3);
     }

(44) 以下程序的运行结果是
  A) 运行后报错   
  B) 6  6     
  C) 6  12       
  D) 5  5
     #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);
     }

(45) 下面程序把数组元素中的最大值放入a[0]中。则在if 语句中的条件表达式应该是
  A) p>a     
  B) *p>a[0]    
  C) *p>*a[0]     
  D) *p[0]> *a[0]
    main(  )
    {       int   a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,I;
            for(i=o;i<10;i++,p++)
                  if(________) *a=*p;
            printf("%d",*a);
    }

(46) 以下程序运行后,输出结果是
  A) 10000         
  B) 10010          
  C) 00110          
  D) 10100
        main()
        {  int    y=18,i=0,j,a[8];
           do
           {  a[i]=y%2; i++
              y=y/2;
         }  while(y>=1)
         for(j=i-1;j>=0;j--) printf("%d",a[j];
         printf("\n");
         }

(47) 设有如下定义:
int arr[]={6,7,8,9,10};
int * ptr;
则下列程序段的输出结果为
ptr=arr;
* (ptr+2)+=2;
printf ("%d,%d\n",*ptr,*(ptr+2));
  A) 8,10           
  B) 6,8             
  C) 7,9              
  D) 6,10


(48) 以下程序的输出结果是
main()
{  int   i,k,a[10],p[3]:
K=5;
for (i=0;i<10;i++)  a[i]=i;
for (i=0;i<3;i++)  p[i]=a[i*(i+1)];
for (i=0;i<3;i++)  k+=p[i]*2;
printf("%d\n",k);
}
  A) 20           
  B) 21              
  C) 22             
  D)23

(49) 若有以下定义和语句:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则不能表示a数组元素的表达式是
  A) *p           
  B) a[10]        
  C) *a         
  D) a[p-a]

(50) 若有以下的定义:
int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a;
则值为3的表式是
  A) p+=2, *(p++)    
  B) p+=2,*++p      
  C) p+=3, *kp++   
  D) p+=2,++*p

(51) 若有以下说明:
        int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
        则数值为6的表达式是
  A) *p+6          
  B) *(p+6)        
  C) *p+=5             
  D) p+5

(52) 下面程序输出数组中的最大值,由s指针指向该元素.
main()
{ int a[10]={6,7,2,9,1,10,5,8,4,3,},*p,*s;
flr(p=a, s=a; p-a<10; p++)
if(---?---)s=p;
printf("The max:%d",*s):
}
则在if语句中的判断表达式应该是
  A) p>s            
  B) *p>*s         
  C) a[p]>a[s]       
  D) p-a>p-s

(53) 要求函数的功能是在一维数组中查找值;若找到则返回所在的下标值,否则返回0;数列放在到中。不能正确执行的函数是
  A)funa(int *a,int n,int x )            B)funb(int *a,int n,int x)
    { *a=x;                                  {int k;
     while(a[n]!=x)n--;                     for(k=1;k<=n;k++)
     return n;                                if(a[k]==x)return k;
     }                                          return 0; }
  C)func(int a[],int n,int x )              D) fund(int a[],int n,int x )
    { int *k;                                 { int k=0;
     a[0]=x;k=a+n;                             do
     while(*k!=x) k--;                         k++;
     return k-n;                               while((k<n+1)&&(a[k]!=x));
     }                                          if(a[k]==x)return k; else return 0; }

(54) 下列程序的输出结果是
main( )
{ int a[5]={2,4,6,8,10},*P,* *k;
p=a;       k=&p;
printf("%d",*(p++));       printf("%d\n",* *k);     }
  A) 4  4       
  B) 2  2         
  C) 2  4        
  D) 4  6



(55) 阅读下列程序:
main( )
{ int n[3],i,j,k;
for(i=0;i〈3;i++〉   n[i]=0;
k=2;
for (i=0;i〈k;i++〉
for (j=0;j〈k;j++〉   n[j]=n[i]+1;
printf("%d\n",n[1]);     }
下述程序运行后输出结果是
  A) 2          
  B) 1           
  C) 0           
  D) 3

(56) 执行以下程序后,y的值是
main ( )
{ int a[]={2,4,6,8,10};
int y=1,x,*p;
p=&a[1];
for(x=0;x<3;x++)  y + = * (p + x);
printf("%d\n",y);     }
  A) 17         
  B) 18            
  C) 19          
  D) 20

(57) 下面程序的输出是
  A) 3             
  B) 4            
  C) 1             
  D) 2
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d\n",*(p+2));}

(58) 请读程序:
#include<stdio.h>
f(in b[], int n)
{ int i, r;
r=1;
for(i=0; i<=n; i++) r=r*b[i];
return r;
}
main()
{ int x, a[]={ 2,3,4,5,6,7,8,9};
x=f(a, 3);
printf("%d\n",x);
}
上面程序的输出结果是
  A) 720           
  B) 120            
  C) 24             
  D) 6

(59) 请选出以下程序的输出结果
#include<stdio.h>
fun(s, n1, n2)
int *s, n1, n2;
{   int i, j, t;
i=n1; j=n2;
while(i<j)
{ t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;
i++; j--;
}
}
main()
{   int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a;
fun(p,0,3); fun(p,4,9); fun(p,0,9);
for(i=0; i<10; i++) printf("%d", *(a+i));
printf("\n");
}
  A) 0 9 8 7 6 5 4 3 2 1         
  B) 4 3 2 1 0 9 8 7 6 5
  C) 5 6 7 8 9 0 1 2 3 4         
  D) 0 9 8 7 6 5 1 2 3 4

(60) 以下程序调用findmax函数求数组中值最大的元素在数组中的下标,请选择填空。
# include <stdio.h>
findmax ( s , t , k )
int  *s , t , *k;
{  int p;  for(p=0,*k=p;p<t;p + + )
           if ( s[p] > s[*k] )_________; }
main()
{  int  a[10] , i , k ;
   for ( i=0 ; i<10 ; i + + )  scanf("%d",&a[i]);
   findmax ( a,10,&k );
   printf  ( "%d,%d\n" , k , a[k] );  }
  A) k=p      
  B) *k=p-s     
  C) k=p-s     
  D) *k=p



二、填空题:

(1) 以下程序运行后的输出结果是 【1】  。 
main()
{ int p[7]={11,13,14,15,16,17,18};
  int i=0,j=0;
  while(i<7 && p[i]%2==1) j+=p[i++];
  printf("%d\n",j);
}

(2) 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。
main()
{ int i,a[20],sum,count;
   sum=count=0;
   for(i=0;i<20;i++)  scanf("%d", 【2】  );  
   fro(i=0;i<20;i++)
   { if(a>0)
     { count++;
       sum+=  【3】  ;  
     }
  }
  printf("sum=%d,count=%d\n",sum,count);

(3) 以下程序运行后的输出结果是 【4】  
main()
{  int   i, n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{   n[i]=n[i-1]*2+1;
printf(“%d”,n[i]);
}
}

(4) 若已定义:int   a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。
fun( int  a[ ])
{   int   i;
for(i=1; i<=10; i++)  【5】=i;      
for(i=0; i<5; i++)  【6】=a[i];       
}

(5) 以下程序的输出结果是 【7】 。
main()
{  int  arr[ ]={30,25,20,15,10,5},  *p=arr;
   p++;
   printf(“%d\n”,*(p+3));
}

(6) 若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 [8] 。
int   w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

(7) 以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空。
    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+  【9】   ;     x[n]=  【10】  ;       
              n++;           scanf("%f",&a);
         }
      ave=  【11】   ; 
      printf("Output:\n");
      printf("ave=%f\n",ave);
  for (I=0;I<n;I++)
      if   【12】   printf (“%f\n”,x[I]);       
     }



(8) 下面程序输出的结果是  【13】   
     #define   MAX    3
     int   a  [MAX];
     main()
     {  fun1(  );   fun2( a );   printf("\n");}
     fun1( )
     {  int  k, t=0;
        for (k=0;  k<MAX; K++,t++) a[k]=t+t;
     }
     fun2(int  b[])
     { int   k;
         for(k=0; k<NAX;  k++) printf("%d", *(b+K));
     }

(9) 以下程序输出的是  【14】     
     main(  )
     {  int  a[10]={19,23,44,17,37,28,49,36},  *p;
        p=a;
        printf("%d\n",(p+=3)[3]);
     }

(10) 以下fun函数的功能是:累加数组元数中的值.n为数组中元素的个数, 累加的和值放入x所指的存储单元中,请填空.
     fun(int b[ ],int n, int  *x)
     {  int   k, r=0;
        for(k=0;k<n;k++) r=  【15】     
         【16】  =r;        

(11) 若有以下定义和语句,则使指针p指向值为36的数组元素的表达式是【17】 。
int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;

(12) 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。
fun(int x,int b[])
{ int k=0,r;
do
{ r=x% 【18】;   
b[k++]=r;
x/=【19】; } while(x); }  

(13) 下面程序通过函数average计算数组中各元素的平均值,请填空.
float average(int * pa,int n)
{ int i;
float avg=0.0;
for(i=0;i<n;i++) avg=avg+【20】; 
avg=【21】;  
return avg;   }
main()
{ int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5); printf("mean=%f\n",mean);}

(14) 下面程序的输出是 【22】 。
main()
{ int a[]={ 2,4,6}, *prt=&a[0], x=8,y,z;
for(y=0; y<3; y++)
z=(*(prt+y)<x)? *(ptr+y):x;
printf("%d\n", z);}

(15) 下面程序的输出是 【23】 。
main()
{ int arr[10],i,k=0;
for( i=0; i<10; i++)
arr[i]=i;
for( i=1; i<4; i++)
k+=arr[i]=i;
printf( ’%d\n", k);}



(16) 下面的findmax函数返回数组s中最大元素的下标,数组中元素的个数由t传入,请填空。
findmax( int s[], int t)
{ int k, p;
for( p=0, k=p; p<t; p++)
if( s[p]>s[k]) 【24】 。  
return k;
 }

(17) 以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。
          #include <stdio.h>
          #include <ctype.h>
          main( )
          { int num[26],i; char c;
              for(i=0; i<26; i++) num[i]=0;
              while(   【25】   !=’#’)    /*统计从终端输入的大写字母个数*/   
                   if( isupper(c))  num[c-65]+=1;
              for(i=0; i<26; i++)       /*输出大写字母和该字母的个数*/
              if(num[i]) printf("%c:%d\n,i  【26】  , num[i]);   
          }

(18) 以下程序求a数组中的所有素数的和,函数isprime用来判断自变量是否为素数。素数是只能被1和本身整除且大于1的自然数。  
#include <stdio.h>
main()
{ int i,a[10],*p=a,sum=0;
  printf("Enter 10 num:\n");
 for(i=0;i<10;i + + ) scanf("%d",&a[i]);
 for(i=0;i<10;i + + )
  if(isprime(*(p+ 【27】 )) = = 1){ printf("%d",*(a+i)); sum+=*(a+i); } 
printf("\nThe sum=%d\n",sum); }
isprime(x)
int x;
{ int i; for(i=2;i<=x/2;i + + )
  if(x%i = = 0) return (0);  【28】 ; }
 
答案:

一、选择题

01) B  02) C  03) C  04) A  05) D 
06) B  07) D  08) C  09) C  10) B
11) A   12) A   13) D   14) A   15) D 
16) A   17) D   18) B   19) A   20) C
21) B   22) D   23) B   24) C   25) C 
26) A   27) B   28) C   29) A   30) D
31) C   32) C   33) C   34) B   35) B 
36) D   37) B   38) D   39) A   40) D
41) A   42) C   43) B   44) A   45) B 
46) B   47) D   48) B   49) B   50) A
51) C   52) B   53) C   54) C   55) D 
56) C   57) A   58) B   59) C   60) D
二、填空题

(1) 24

(2) &a[i]

(3) a[i]

(4)  1 3 7 15

(5) a[i-1]

(6) a[9-i]

(7) 10

(8) p[5]

(9) =a

(10) a

(11) sum/n

(12)  x[i]<ave

(13) 024

(14) 49

(15) r+b[k]或b[k]或*(b+k)+r

(16) *x

(17) p=p+7

(18) 2

(19) 2

(20) *(pa+i) 或 pa[i]

(21) avg/n 或avg/(float)n 或 avg/(double)n

(22) 6

(23) 12

(24) k=p

(25) (c=getchar())

(26) +65   或  +’A’

(27) I

(28) return 1

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目