zoukankan      html  css  js  c++  java
  • 嵌入式面试C语言试题

    1: 考查对volatile关键字的认识

    #include<setjmp.h>

    static jmp_buf buf;

    main()    
    {
        
    volatile  int b;
        b =
    3;
        
        
    if(setjmp(buf)!=0)
        {
            printf(
    "%d ", b); 
            exit(
    0);
        }
        b=
    5;
        longjmp(buf , 
    1);

     

    请问, 这段程序的输出是
    (a) 3
    (b) 5
    (c) 0
    (d)
    以上均不是


    2:考查类型转换

    main()
    {
       
    struct node 
       {
           
    int a;
           
    int b;
           
    int c;     
       };
       
    struct node  s= { 35,6 };
       
    struct node *pt = &s;
       printf(
    "%d" ,  *(int*)pt);
    }

     

    这段程序的输出是:
    (a) 3
    (b) 5
    (c) 6
    (d) 7


    3:考查递归调用

    int  foo ( int x , int  n) 
    {
        
    int val;
        val =
    1;
        
        
    if (n>0
        {
            
    if (n%2 == 1)  val = val *x;
            val = val * foo(x*x , n/
    2);
        }
        
    return val;
    }

     

    这段代码对xn完成什么样的功能(操作)?
    (a) x^n (x
    n次幂)
    (b) x*n(x
    n的乘积)
    (c) n^x(n
    x次幂)
    (d)
    以上均不是


    4:考查指针,这道题只适合于那些特别细心且对指针和数组有深入理解的人

    main() 
    {
        
    int  a[5] = {1,2,3,4,5};
        
    int *ptr =  (int*)(&a+1);
        
        printf(
    "%d %d" , *(a+1), *(ptr-1));
    }

     

    这段程序的输出是:
    (a) 2 2
    (b) 2 1
    (c) 2 5
    (d)
    以上均不是


    5:考查多维数组与指针

    void foo(int [][3]);     

    main()
    {
        
    int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}};
        foo(a);
        printf(
    "%d" , a[2][1]);
    }

    void foo(int b[][3])   
    {
        ++ b;
        b[
    1][1] =9;
    }

     

    这段程序的输出是:
    (a) 8
    (b) 9
    (c) 7
    (d)
    以上均不对


    6:考查逗号表达式

    main()
    {
        
    int a, b,c, d;
        a=
    3;
        b=
    5;
        c=a,b;
        d=(a,b);
        
        printf(
    "c=%d" ,c);
        printf(
    "d=%d" ,d);
    }

     

    这段程序的输出是:
    (a) c=3 d=3
    (b) c=5 d=3
    (c) c=3 d=5
    (d) c=5 d=5


    7:考查指针数组

    main()
    {
        
    int a[][3] = { 1,2,3 ,4,5,6};
        
    int (*ptr)[3] = a;
        
        printf(
    "%d %d ", (*ptr)[1], (*ptr)[2]);

        ++ptr;
        printf(
    "%d %d" , (*ptr)[1], (*ptr)[2]);
    }

     

    这段程序的输出是:
    (a) 2 3 5 6
    (b) 2 3 4 5
    (c) 4 5 0 0
    (d)
    以上均不对


    8:考查函数指针

    int *f1(void)
    {
        
    int x =10;
        
    return(&x);
    }

    int *f2(void)
    {
        
    int*ptr;
        *ptr =
    10;
        
    return ptr;
    }

    int *f3(void)
    {
        
    int *ptr;
        ptr=(
    int*) malloc(sizeof(int));
        
    return ptr;
    }

     

    上面这3个函数哪一个最可能引起指针方面的问题
    (a)
    只有 f3
    (b)
    只有f1 and f3
    (c)
    只有f1 and f2
    (d) f1 , f2 ,f3

     

  • 相关阅读:
    跨媒体安全
    kali视频(21-25)学习
    kali视频(26-30)学习
    kali视频(16-20)学习
    kali视频学习(11-15)
    kali视频(1-5)
    使用Metaspoit攻击MS08-067
    web应用程序安全攻防---sql注入和xss跨站脚本攻击
    -区块链-
    TCP/IP网络协议攻击
  • 原文地址:https://www.cnblogs.com/lzjsky/p/1936396.html
Copyright © 2011-2022 走看看