C/C++测试题
函 数
一、选择题
1、 以下函数调用语句中的实参个数为(   D )。
    excc((vl,v2),(v3,v4,v5),v6);
    (A)3    (B)4    (C)5    (D)6
 
2、 在C/C++程序中,(   A )。 (A)函数的定义可以嵌套,但函数的调用不可以嵌套
(B)函数的定义不可以嵌套,但函数的调用可以嵌套
(C)函数的定义和函数的调用均不可以嵌套
(D)函数的定义和函数的调用均可以嵌套
 
3、 若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是(   D )。
(A)函数调用可以作为独立的语句存在 (B)函数调用可以作为一个函数的实参
(C)函数调用可以出现在表达式中      (D)函数调用可以作为一个函数的形参
 
4、 若有以下调用语句,则不正确的fun0函数的首部是( B   )。 void 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)
 
5、 以下函数的功能是( C   )。
    fun(char *p2, char *pl)
    {
       while((*p2=*pl)!=’\0’)
         {p1++;p2++;}
    }
    (A)将pl所指字符串复制到p2所指内存空间
    (B)将pl所指字符串的地址赋给指针p2
    (C)对pl和p2两个指针所指字符串进行比较
    (D)检查pl和p2两个指针所指字符串中是否有'\0'
 
二、读程序分析程序的运行结果
6、 以下程序的输出结果是( B    )。
      float fun(int x,int y)
        { return (x+y); }
      int main()
      {
          int a=2,b=5,c=8;
          printf("%3.0f\n" ,fun((int)fun(a+c,b),a-c));
      }
    (A)编译出错    (B)9    (C) 21    (D)9.0
 
7、 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序,程序运行后的输出结果是(      C    )。
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;}
}
int main()
{
   int a[10]={1,2,3,4,5,6,7,8,9,10},i;
   sort(&a[3],5);
       for(i=0;i<10;i++)
         printf("%d,",a[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)8,7,6,5,4,3,2,1,9,10
 
四、读程序回答问题
8、 以下程序段的输出结果是(       4321    )。
int si(int *s1,int y)
{
    static int i1=3;
    y=s1[i1];
    i1--;
    return(y);
}
 
int main()
{
       int s[ ]={1,2,3,4},i,x=0;
       for(i=0;i<4;i++)
       {
              x=si(s,x);
              printf("%d",x);
       }
       printf("\n");
}
 
9、 下列程序的执行结果是(    5 10 17 32 15 38      )。
void fun(int *s, int n1, int n2)
{
   int i=n1,j=n2;
   while(i<j)
   {
          *(s+i)+=*(s+j); *(s+j)+=*(s+i);
          i++;j--;
   }
}
int main()
{
       int a[6]={1,2,3,4,5,6},i,*p=a;
    fun(p,0,3);
    fun(p,1,4);
    fun(p,3,5);
    for(i=0;i<6;i++)
    printf("%d ",*(a+i));
    printf("\n");
}
 
10、 已知函数isaplha(ch)的功能是判断自变量ch是否是字母;若是,该函数返回数值1,否则返回0。下面程序的输出是(      Itis )。
#include <ctype.h>
void fun4(char str[])
{
       int i,j;
    for(i=0,j=0;str[i];i++)
              if(isalpha(str[i]))str[j++]=str[i];
        str[j]='\0';
}
int main()
{
       char ss[80]="lt is!";
    fun4(ss);
    printf("%s\n",ss);
}
 
11、 下面程序的输出结果是( 12 )。
unsigned fun6(unsigned num)
{
       unsigned k=1;
       do {
              k*=num%10;
              num/=10;
       }while(num);
    return(k);
}
int main()
{
       unsigned n=26;
       printf("%d\n",fun6(n));
}
 
12、下面程序的输出结果是(      9   )。
 long fun5(int n)
 {
    long s;
    if((n==1)||(n==2))
              s=2;
    else
              s=n+fun5(n-1);
    return(s);
}
int main()
{
       long x;
    x=fun5(4);
    printf("%ld\n",x);
}
 
 
13、下面的程序完成的功能是( 将一维数组按升序排列       )。
   #define SIZE 5
void func (int data [SIZE]);
int main()
{
       int i,buf[SIZE];
     printf("please input %d numbers: ", SIZE);
     for(i=0;i<SIZE;i++)
               scanf("%d",&buf[i]);
    func(buf);
    for(i=0;i<SIZE;i++)
         printf("%5d",buf[i]);
}
void func (int data [SIZE])
{
       int i,j,d;
       for(i=0;i<SIZE-1;i++)
              for(j=0;j<SIZE-i-1;j++)
                     if(data[j]>data[j+1])
                     {
                            d=data[j];
                            data[j]=data[j+1];
                            data[j+1]=d;
                     }
}
 
14、 以下程序的输出结果是( i=5     )。
int s(char *s)
{
       char *p=s;
    while(*p) p++;
    return(p-s);
}
int main()
{
    char *a="abded";
    int i;
    i=s(a);
    printf("i=%d",i);
}
 
15、 下列程序的输出结果是( 7 1  )。
void ast(int x,int y,int *cp, int *dp)
{
    *cp=x+y;
    *dp=x-y;
}
int main()
{
    int a,b,c,d;
    a=4;b=3;
    ast(a,b,&c,&d);
    printf("%d %d\n",c,d);
}
 
16、 下面程序的输出结果是(   7  )。
int fun(int x)
{
    int p;
    if(x==0||x==1) return(3);
    p=x-fun(x-2);
    return p;
}
int main()
{ 
       printf("%d\n",fun(9));
}
 
 
五、程序填空题
17、 下列程序统计有不及格(小于60分)成绩的人数,并输出有不及格成绩的学生的各门成绩。学生人数SIZE,每人记录4门考试成绩。指针型函数search()的形参为指向含有4个元素的一维数组的指针。函数检查某学生成绩,若有不及格,返回指向该生第一门成绩的指针,否则指向下一学生第一门成绩的指针。请填空,完善程序。
#define SIZE 40
 int * search(int (*pr)[4])
 {
     int i, *pc;
        pc=   *(pr+1)    ;     
        for(i=0;i<4;i++)   
     if(   *(*pr+1)  <60)
      { pc=*pr;break; }
     return(pc);
 }
int main()
 {
    int i,j,m=0,*p,score[SIZE][4];
    for(i=0;i<SIZE;i++)
    {
              printf("\ni=%d:",i);
              for (j=0;j<4;j++)
                     scanf("%d",&score[i][j]);
       }
       for (i=0;i<SIZE;i++)
       {
        p=search(score+i);
              if(    p==*(score+i)     ) 
   {
                     m++;
            printf("No.%d score:", i);
                     for (j=0;j<4;j++)
                printf("%4d", *(p+j)   ); 
       printf("\n");
              }
   }
   printf("m=%d",m);
}
 
18、 下面程序能将Hello!反向打印出来,请填空。
void print_hello (char *string)
{
   char *str= string  ;        
   if (*str==    NULL ) return;   
   while(*str) str++;
       --str ;                
   printf("%C",*str);    
      *str=   NULL;          
 print_hello ( string );         
}
int main()
{
 char str[]="Hello!"; 
print_hello(str); 
}
 
19、 下面程序的功能是比较两个字符串是否相等,若相等则返回1,否则返回0,请填空。
int comp(char s[],char t[])
{
    int i=0;
       while(   *(s+i)==*(t+i)  && *(s+i)!=’\0’   ) 
        i++;
    return((*(s+i)==’\0’&&*(s+i)==’\0’)?1:0   ); 
}
int main()
{
       char sl[20],s2[20];
    int i;
    printf("\n Please input stringl string2:");
    scanf("%s%s", sl,s2);
    i=comp(sl,s2);
    printf("%d",i);
}
 
20、 下面程序通过函数average0计算数组中各元素的平均值,请填空。
float average (int *pa, int n)
{
       int i;
       float avg=0.0;
       for(i=0;i<n;i++)
              avg=avg+ *(pa+i)   ;         
       avg=   avg/n    ;              
       return avg;
}
int main()
{
       int a[5]={2,4,6,8,10};
       float mean;
       mean=average (a,5);
    printf("mean=%f\n",mean);
}
 
21、 以下程序实现将3个数中的大数输出在前,小数输出在后。
void swap(int *p1, int *p2)
{
       int *t;
          t=(int*)malloc(sizeof(int)) ;               
       *t=*p1;*p1=*p2;*p2=*t;
}
 
void chang (int *ql, int *q2, int *q3)
{
              if (*ql>*q2)swap(ql,q2);
        if (*ql>*q3)swap(ql,q3);
        if (*q2>*q3)swap(q2,q3);
}
int main()
{
       int a=6, b=4, c=2;
    chang (     &a,&b,&c    );         
       printf("%d,%d,%d\n",a,b,c);
}
	posted on 2011-05-31 21:55 
DoubleW 阅读(1933) 
评论(2)  编辑 收藏 引用