C語言 小測試

2018-08-12 21:24 更新

寫在前面的小測試

本系列主要講的是 C 語言的一些深入的知識,故在開始之前大家可以先完成這個小測試,如果你對下面的題目感覺毫無壓力,那么你對于 C 語言基礎(chǔ)的掌握已經(jīng)比較牢固了。

    1. 下面代碼的輸出是什么?
#include <stdio.h>  
int main(void)  
{  
       int a[3][2] = { (0,1), (2,3), (4,5) } ;  
       int *p ;  
       p = a[0] ;  
       printf(“%d”, p[0]) ;  
}

    1. int a[10]; 問下面哪些不可以表示 a[1] 的地址?
      A. a+sizeof(int)
      B. &a[0]+1
      C. (int*)&a+1
      D. (int*)((char*)&a+sizeof(int))

    1. 下面的C程序是合法的嗎?如果是,那么輸出是什么?
#include <stdio.h>  
int main()   
{  
    int a=3, b = 5;  

    printf(&a["Ya!Hello! %s\n"], &b["junk/super"]);  

    printf(&a["WHAT%c%c%c %c%c  %c !\n"], 1["this"],  
           2["beauty"],0["tool"],0["is"],3["sensitive"],   
           4["CCCCCC"]);  

    return 0;   
} 

    1. 32 位機上根據(jù)下面的代碼,問哪些說法是正確的?(多選題類型)
      signed char a = 0xe0;
      unsigned int b = a;
      unsigned char c = a;
      A. a>0 && c>0 為真
      B. a == c 為真
      C. b 的十六進(jìn)制表示是:0xffffffe0
      D. 上面都不對

    1. 下面程序的輸出結(jié)果(32位小端機)
#include <stdio.h>  
int main()  
{  
    long long a = 1, b = 2, c = 3;  
    printf("%d %d %d\n", a, b, c);  
    return 0;  
}  

    1. 請問下面的程序的輸出值是什么?
#include <stdio.h>  
#include <stdlib.h>  

#define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0]))  
#define PrintInt(expr) printf("%s:%d\n",#expr,(expr))  

int main()  
{  
    int pot[] = {  
                    0001,  
                    0010,  
                    0100,  
                    1000  
                };  
    int i;  
    for(i=0;i<SIZEOF(pot);i++)  
        PrintInt(pot[i]);  

    return 0;  
}

    1. 請問下面的程序的輸出值是什么?
#include <stdio.h>  
int main(void)  
{      
       char  a[1000] ;  
       int i ;  
       for(i=0; i<1000; i++)  
       {      
           a[i]= -1-i ;  
       }  
       printf(“%d”,strlen(a)) ;  

       return 0 ;  
}  

    1. 下面這段代碼會掛么?會掛在哪一行?
#include <stdio.h>  
struct str{  
    int len;  
    char s[0];  
};  

struct foo {  
    struct str *a;  
};  

int main(int argc, char** argv) {  
    struct foo f = {0};  
    if (f.a->s) {  
        printf( f.a->s);  
    }  
    return 0;  
}  

    1. 在X86系統(tǒng)下,輸出的值為多少?
#include <stdio.h>  
int main(void)  
{  
   int a[5] = {1,2,3,4,5} ;  
   int *ptr1 = (int *)(&a+1) ;  
   int *ptr2 = (int *)((int)a+1) ;  

   printf(“%x,%x”,ptr1[-1], *ptr2) ;  
   return 0 ;  
}  

    1. 請問下面的程序的輸出值是什么?
#include <stdio.h>  

int main()  
{  
    int a[5][5] ;     
    int (*p)[4] ;     
    p = a ;   
    printf("%d", &p[4][2]-&a[4][2]) ;  

    return 0 ;  
} 

    1. 以下代碼在 windows 系統(tǒng)下成員 i 的偏移量是多少?在 Linux 系統(tǒng)下 i 的偏移量是多少?
struct S  
{     
    char c ;  
    int i[2];   
    double v ;  
} ;

    1. 下面代碼中有BUG,請找出
int tadd_ok(int x, int y) //判斷加法溢出  
{  
       int sum = x+y ;  
       return (sum-x == y) && (sum-y == x) ;  
}  
int tsub_ok(int x, int y) //判斷減法溢出  
{  
       return tadd_ok(x, -y) ;  
}  

    1. 下面變量的核心是什么,并用多個typedef改寫下面的聲明式
      int *(*(*(*abc) ( ) ) [6]) ( ) ;

    1. (*(void(*)( ))0 )( ) 這是什么?

    1. 編寫一些代碼,確定一個變量是有符號數(shù)還是無符號數(shù)

以上問題的參考答案點擊

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號