據說80%的程序員都會出錯,你也試試吧!

考驗基本功的時刻到了,各位大大猜猜下面這些code的輸出是什么?

1 . typedef跟define的區別?

#define char_d char*

typedef char* char_t;

int main(void)

{

  char_d p,q;

  printf("sizeof(p)=%dsizeof(q)=%d\\n",sizeof(p),sizeof(q));

  char_t x,y;

  printf("sizeof(x)=%dsizeof(y)=%d\\n",sizeof(x),sizeof(y));

  return0;

}

2 . 內存對齊原則(linux下)?

#pragma pake(8)

struct Student

{

  char a; short b;  int c;  int d;  double e;

};

struct Student1

{

  char a; double e; short b; int c; int d;

};
union Student2

{

  char a; double e; short b; int c; int d;

};
   printf("sizeof(t) = %ld \\n",sizeof(struct Student));  // 請問輸出什么?
   printf("sizeof(t1) = %ld \\n",sizeof(struct Student1));  // 請問輸出什么?
   printf("sizeof(t2) = %ld \\n",sizeof(union Student2));  // 請問輸出什么?

3 . 下面代碼作為單鏈翻轉,有問題嗎?

typedef struct node
{
   int data;
   struct node * next;
} Node;

void reverseList (Node * head){
   Node * tmp = head->next;
   Node * p;
 while (tmp->next) {
   p = tmp->next;
   tmp->next = p->next; 
   p->next = head->next;
   head->next = p;
 }
}

4 . 編寫程序:輸入一整數n,輸入1-n的全排列;

例如:
輸入 3
輸出:123 132 213 231 312 321

5 . 下面代碼輸出:

  void question2(){
    char a[1000];
    int i ;
    for(i=0;i<1000;i++){
        a[i] = -1-i;
    }
    printf("%lu \\n",strlen(a));  // 0 截斷
}

6 . 下面代碼打印結果是0?

    int arr[10][10];
    int (* p) [5] ;
    p = arr;
    printf("%lu \\n", &arr[5][3] - &p[5][3]);

7 . 不使用第三方變量,第三方函數,將下面的字符串逆序打印出來?

  char *p = "234g4jhg21jh3g12jh";

8 . 如何判斷下面單鏈表是否有環呢?

  typedef struct node
{
   int data;
   struct node *next;
}DNode;

9 . 思考一下,下面的代碼輸出幾個pass?

   float f1 = 20.3;
    double d1 = 20.3;
    
    if (f1 == d1) {
        NSLog(@"pass");
    }
    
    float f2 = 20.5;
    double d2 = 20.5;
    if (f2 == d2) {
        NSLog(@"pass");
    }
    float f3 = 20.6;
    double d3 = 20.6;
    if (f3 == d3) {
        NSLog(@"pass");
    }

、 別偷看答案,自己先好好想想。




































答案:

1 . 輸出結果:

    sizeof(p) = 8 sizeof(q) = 1
    sizeof(x) = 8 sizeof(y) = 8

提示:沒有答對的 可以看看預處理后的代碼;

    gcc -E main.c -o main.i
    vim main.i

2 . 輸出結果:

    sizeof(t)=24 
    sizeof(t1)=32 
    sizeof(t2)=8

提示:沒有答對的,自己可以參考下邊原則;

/***
  #pragma pack -> 程序編譯器對結構的存儲的特殊處理確實提高CPU存儲變量的速度,但是有時候也帶來了一些麻煩,我們也屏蔽掉變量默認的對齊方式,自己可以設定變量的對齊方式。
 * 內存對齊規則:
 * 1. 取 pake(n) 中的值 , 去結構體中最大類型的大小 m ,兩者取小 即為外部對齊 其大小y = min(n,m);
 * 2. 將每一個結構體的成員大小與 y 比較 ,取小為x,做內對其大小;
 * 3. 假設起始地址為0x00 開始, 能被x整除的地方開始存值;
 * 4. 外部對齊原則是根據y值,進行補空操作;
 */

3 . 有問題

  將Node * tmp = head->next; 修改為 Node * tmp = head;
  并且加上 head.next = NULL;  否則翻轉完成之后,最后一個節點的next 不為NULL;

 // 核心代碼就這兩句,每次插入到head的后面,并將新插入進來的tmp指向下一個節點
  tmp->next = p->next; 
   p->next = head->next;

4 . 核心代碼,參考如下 (PS:寫出來n個for嵌套的同學可以去面壁了。)

void dfs(int step){
 if(step == n+1){
    for(i=1;i<=n;i++){
       printf("%d",steps[i]);
     }
    putchar(10);
 return;
 }

 for( int i=1;i<=n;i++){
     if(book[i] == 0){
       steps[step] = i;
       book[i] = 1;
       dfs(step+1);
       book[i] = 0;  // 請記得一定要將位置標記為可用
       }
   }
}

5 . 輸出 :255 每答對的可以參考下面的邏輯

  第一, strlen 在計算個數的過程中,遇見 '\\0' 就會結束計數;
  第二, 在int類型轉換成char 的過程中,會切斷數據;
    1111 1111 1111 1111  -1
    1111 1111 1111 1110  -2
    1111 1111 1111 1101  -3
    ...
    1111 1111 0000 0001  -255  -> 0
    1111 1111 0000 0000  -256

6 . 不是

  在 int (* p) [5]  = arr; 之后, 可以理解成 p[5][20] 
  輸出結果 :25

7 . 遞歸

void strRevesal(char *p){
 if(*p){
   strRevesal(p+1);
   printf("%c",*p);
 }
}

// 還有一種方式倒置字符串,使用二分的思維方式 , 可以參考一下:

char * str_revesal(char *var){
   char *start = var;
   char *end = start + strlen(var) - 1;
   while(start<end){ // 地址是有高低的
     *start ^= *end ;
     *end ^= *start ;
     *start ^= *end ;
     start++;
     end--;
 }
 return var;
}

8 . **思路1 : **

 設兩個工作指針,一個快一個慢,如果有環的話,它們會必然在某點相遇。
int judgeDList(DNode *head){
   DNode *p,*q;
   p = q = head;
   while(p!=NULL && q!=NULL && q->next!=NULL){
     p = p->next;
     if(q->next != NULL)
     q = q->next->next;
     if(q==p)
     return 1;
   }
 return 0;
}

**思路2: **

設兩個工作指針p、q,p總是向前走,但q每次都從頭開始走,對于每個節點,看p走的步數是否和q一樣。比如p從A走到D,用了4步,而q則用了14步。因而步數不等,出現矛盾,存在環。

9 . 輸出一個pass:

先說一下原理,計算機存儲數據的時候 采用的是二進制,整除初二區域,小數乘2去整。
所以小數除了0.5意外,都會有精度丟失的情況;
這里double是float位數的二倍,自然 丟失的情況不一樣。
屏幕快照 2016-12-15 14.24.24.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,656評論 25 708
  • 上午第二節,上語文課,課代表孫筱月見到我滿臉的不好意思,因要收作業,所以來的晚一些,我表示理解。當看到作業情況反饋...
    菲靈feel閱讀 156評論 0 3
  • 沒有計劃的人生是空洞的。。。
    72b99c04020a閱讀 73評論 0 0
  • 有的時候我自己都不確定我是不是愛他,他給我感動,給我溫暖。能逗我開心。我真的很喜歡他,但是僅限于此刻 我覺得我愛...
    c543e1bd2a56閱讀 146評論 0 0
  • 初魄微明清雨冷,獨噙蕭翠泣門雕。 玉裙艷舞翩遷起,執手雙星夢路遙。
    栩辰徉閱讀 229評論 14 17