C/C++专项练习 (一)

1.若有一下程序
#include<stdio.h>
main(){
    int b=10,a=-11;
    a%=b%=4;
    printf("%d %d\n",a,B);
}


则程序的输出结果是?

  • 1 2
  • -1 2
  • -1 -2
  • 1 -2



答案  B

经典水题,注意从右往左计算


2.以下不能作为合法常量的是:

  • 1.234e04
  • 1.234e0.4
  • 1.234e+4
  • 1.234e0


    答案  B

    有2个小数点,明显是错的



    3.看以下代码:

    A *pa = new A[10];
    <pre name="code" class="cpp">delete pa;
     
    

    则类A的构造函数和析构函数分别执行了几次()

    • 1 1
    • 10 10
    • 1 10
    • 10 1

    答案  D

    A是自定义的类,所以析构时

    delete pa;
    是错误的,应该是

    delete[]  pa;



    4.Consider the following definition of a recursive function, power, that will perform exponentiation.

    int power(int b, int e) {
        if (e == 0)
            return 1;
        if (e %2 == 0)
            return power (b * b, e / 2);
        return b * power(b * b, e / 2);
    }

    Asymptotically (渐进地) in terms of the exponent e, the number of calls to power that occur as a result of the call power(b, e) is

    • logarithmic
    • linear
    • quadratic
    • exponential


    答案  A

    题目不是太懂,一看代码,稀里糊涂就选了D



    5.如下函数的f(1)的值为()

    int f(int n){
        static int i=1;
         if(n>=5)
             return n;
         n=n+i;
         i++;
         return f(n);
    }

    • 5
    • 6
    • 7
    • 8

    答案  C

    注意   static声明的变量只初始化一次



    6.下面两段代码中for循环分别执行了多少次?

    1>

    unsigned short i,j;
    for(i=0, j=2; i!=j; i+=5, j+=7)
    {}


    2>

    unsigned short i,j;
    for(i=3,j=7;i!=j;i+=3,j+=7)
    {}


    • 32767 16383
    • 32767 16363
    • 33787 16363
    • 33787 16383


    答案  A

    类似南辕北辙

    5*x%65536==(7*x+2)%65536; x=32767

    (3*x+3)%65536==(7*x+7)%65536;  x=16383



    7.在64位系统下,分别定义如下两个变量:char *p[10]; char(*p1)[10];请问,sizeof(p)和sizeof (p1)分别值为____。

    • 4,40
    • 80,8
    • 10,10
    • 8,80
    • 40,4
    • 4,4


    答案  B

    p是一个数组,一个指针数组,包含10个char型指针

    p1是一个指针,一个指向数组的指针



    8.

    已知集合A和B的元素分别用不含头结点的单链表存储,函数difference( )用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。

    链表结点的结构类型定义如下:
    struct node  
    {  
    int elem;  
    node* next;  
    };  
     
    void difference(node** LA , node* LB)  
    {  
    node *pa , *pb , *pre , *q;  
    pre = NULL;  
    1 //1   
    while(pa)  {  
    pb = LB;  
       while 2                  //2   
       pb = pb->next;  
       if 3                    //3   
       {  
        if(!pre)  
            *LA = 4     ;     //4   
         else  
                5 = pa->next;     //5
         q = pa;  
         pa = pa->next;  
         free(q);  
       }  
        else  {  
                6 ;             //6   
               pa = pa->next;  
        }  
    }  
    }  


    答案 
    1.  pa=*LA;
    2. pb && pa->elem!=pb->elem
    3. pb

    4.pa->next

    5.pre->next

    6.pre=pa


    注意答案不要引起歧义即可



    9.下列给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新数,作为函数值返回。 
    例如,从主函数输入一个整数27638496,则函数返回值为26846. 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 

    试题程序:
    unsigned long fun(unsigned long n )
    {
        unsigned long k = 0, s, i; int t;
        s = n;
    
        i = 1 ;
    
        while ( 2 )
        {
            t = s % 10;
            if (t % 2 = = 0)
            {
                k = k + t * i;
                    i = 3 ;//i放前面
            }
            s = s / 10;
        }
        return k;
    }
    main ( )
    {
        unsigned long n = - 1;
        While (n > 99999999 || n < 0 )
        {
            printf (" Please input (0 < n < 100000000):");
            scanf ("% ld", &n);
        }
        printf("\nThe result is: % id\n", fun (n));
    }


    答案

    1    

    s>0     (我填了s,竟然错误。。。答案好严谨!)

     i*10



    10.给定程序中,函数fun的功能是:将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 
    请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 

    试题程序:

    void fun (char *s, int a, double f)
    {
        /**********found**********/
        1 * fp;
        char ch; &
        fp = fopen("filel.txt", "w");
        fprintf (fp, "% S % d %f\n", % '%', f);
        fclose(fp);
        fp = fopen("filel.txt", "r");
        printf("\nThe result:\n\n");
        ch = fgetc(fp);
        /**********found**********/
        while (!feof ( 2 ))
        {
            /**********found**********/
            putchar( 3 );
            ch = fgetc(fp);
            putchar('\n');    
        }
        fclose(fp);
    
    }
    int main( )
    {
        char a[10] = "hello!"; 
        int b = 12345;
        double c = 98.76;
        fun(a, b, c);
    }
    


    答案

     FILE

    fp

    ch


    文件这一块儿快忘完了。。。



    • 1
      点赞
    • 1
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值