zoukankan      html  css  js  c++  java
  • C++ 基础学习笔记(2)函数(测试题)

    一、选择题

    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);

    }

  • 相关阅读:
    C 习题
    gcc
    几何视角看线性方程组解的情况
    JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式)
    为什么重写了equals(),还要重写hashCode()?
    关于ArrayList的越界问题?
    通过实例聊聊Java中的多态
    java异常处理实例分析
    Java: Integer用==比较时127相等128不相等的原因
    Java并发编程:Lock
  • 原文地址:https://www.cnblogs.com/carbs/p/2430302.html
Copyright © 2011-2022 走看看