posts - 12,  comments - 21,  trackbacks - 0

 

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)plp2两个指针所指字符串进行比较

    (D)检查plp2两个指针所指字符串中是否有'\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 阅读(1870) 评论(2)  编辑 收藏 引用

FeedBack:
# re: C++ 基础学习笔记(2)---函数(测试题)
2011-06-01 09:24 | lc7cl
2、 在C/C++程序中,( A )。 (A)函数的定义可以嵌套,但函数的调用不可以嵌套

可以吗???  回复  更多评论
  
# re: C++ 基础学习笔记(2)---函数(测试题)
2011-06-01 10:33 | DoubleW
函数的调用可以嵌套,即自调用函数,我们称为递归函数.如:
long fact(int n)
{
if(n==1)
return 1;

return fact(n-1)*n; //函数的自调用
}
上面的程序可以求出n!  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2011年5月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

常用链接

留言簿(3)

随笔档案(12)

文章档案(2)

最新随笔

搜索

  •  

积分与排名

  • 积分 - 28570
  • 排名 - 661

最新随笔

最新评论

阅读排行榜

评论排行榜