據(jù)說(shuō)80%的程序員都會(huì)出錯(cuò)菱皆,你也試試吧!

考驗(yàn)基本功的時(shí)刻到了挨稿,各位大大猜猜下面這些code的輸出是什么仇轻?

1 . typedef跟define的區(qū)別?

#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 . 內(nèi)存對(duì)齊原則(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));  // 請(qǐng)問(wèn)輸出什么历造?
   printf("sizeof(t1) = %ld \\n",sizeof(struct Student1));  // 請(qǐng)問(wèn)輸出什么甩十?
   printf("sizeof(t2) = %ld \\n",sizeof(union Student2));  // 請(qǐng)問(wèn)輸出什么船庇?

3 . 下面代碼作為單鏈翻轉(zhuǎn),有問(wèn)題嗎侣监?

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 . 編寫(xiě)程序:輸入一整數(shù)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 截?cái)?}

6 . 下面代碼打印結(jié)果是0鸭轮?

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

7 . 不使用第三方變量,第三方函數(shù)橄霉,將下面的字符串逆序打印出來(lái)窃爷?

  char *p = "234g4jhg21jh3g12jh";

8 . 如何判斷下面單鏈表是否有環(huán)呢?

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

9 . 思考一下姓蜂,下面的代碼輸出幾個(gè)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 . 輸出結(jié)果:

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

提示:沒(méi)有答對(duì)的 可以看看預(yù)處理后的代碼;

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

2 . 輸出結(jié)果:

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

提示:沒(méi)有答對(duì)的浩销,自己可以參考下邊原則贯涎;

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

3 . 有問(wèn)題

  將Node * tmp = head->next普筹; 修改為 Node * tmp = head败明;
  并且加上 head.next = NULL;  否則翻轉(zhuǎn)完成之后,最后一個(gè)節(jié)點(diǎn)的next 不為NULL太防;

 // 核心代碼就這兩句妻顶,每次插入到head的后面,并將新插入進(jìn)來(lái)的tmp指向下一個(gè)節(jié)點(diǎn)
  tmp->next = p->next; 
   p->next = head->next;

4 . 核心代碼蜒车,參考如下 (PS:寫(xiě)出來(lái)n個(gè)for嵌套的同學(xué)可以去面壁了讳嘱。)

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;  // 請(qǐng)記得一定要將位置標(biāo)記為可用
       }
   }
}

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

  第一, strlen 在計(jì)算個(gè)數(shù)的過(guò)程中酿愧,遇見(jiàn) '\\0' 就會(huì)結(jié)束計(jì)數(shù)沥潭;
  第二, 在int類型轉(zhuǎn)換成char 的過(guò)程中嬉挡,會(huì)切斷數(shù)據(jù)钝鸽;
    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] 
  輸出結(jié)果 :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 : **

 設(shè)兩個(gè)工作指針基括,一個(gè)快一個(gè)慢颜懊,如果有環(huán)的話,它們會(huì)必然在某點(diǎn)相遇。
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: **

設(shè)兩個(gè)工作指針p河爹、q使鹅,p總是向前走,但q每次都從頭開(kāi)始走昌抠,對(duì)于每個(gè)節(jié)點(diǎn),看p走的步數(shù)是否和q一樣鲁僚。比如p從A走到D炊苫,用了4步,而q則用了14步冰沙。因而步數(shù)不等侨艾,出現(xiàn)矛盾,存在環(huán)拓挥。

9 . 輸出一個(gè)pass:

先說(shuō)一下原理唠梨,計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)的時(shí)候 采用的是二進(jìn)制,整除初二區(qū)域侥啤,小數(shù)乘2去整当叭。
所以小數(shù)除了0.5意外,都會(huì)有精度丟失的情況盖灸;
這里double是float位數(shù)的二倍蚁鳖,自然 丟失的情況不一樣。
屏幕快照 2016-12-15 14.24.24.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末赁炎,一起剝皮案震驚了整個(gè)濱河市醉箕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌徙垫,老刑警劉巖讥裤,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異姻报,居然都是意外死亡己英,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)逗抑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)剧辐,“玉大人,你說(shuō)我怎么就攤上這事邮府∮兀” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵褂傀,是天一觀的道長(zhǎng)忍啤。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么同波? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任鳄梅,我火速辦了婚禮,結(jié)果婚禮上未檩,老公的妹妹穿的比我還像新娘戴尸。我一直安慰自己,他們只是感情好冤狡,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布孙蒙。 她就那樣靜靜地躺著,像睡著了一般悲雳。 火紅的嫁衣襯著肌膚如雪挎峦。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天合瓢,我揣著相機(jī)與錄音坦胶,去河邊找鬼。 笑死晴楔,一個(gè)胖子當(dāng)著我的面吹牛顿苇,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播税弃,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼岖圈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了钙皮?” 一聲冷哼從身側(cè)響起蜂科,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎短条,沒(méi)想到半個(gè)月后导匣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡茸时,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年贡定,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片可都。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缓待,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出渠牲,到底是詐尸還是另有隱情旋炒,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布签杈,位于F島的核電站瘫镇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铣除,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一谚咬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尚粘,春花似錦择卦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至行剂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間钳降,已是汗流浹背厚宰。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留遂填,地道東北人铲觉。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像吓坚,于是被迫代替她去往敵國(guó)和親撵幽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,871評(píng)論 25 707
  • 上午第二節(jié)礁击,上語(yǔ)文課盐杂,課代表孫筱月見(jiàn)到我滿臉的不好意思,因要收作業(yè)哆窿,所以來(lái)的晚一些链烈,我表示理解。當(dāng)看到作業(yè)情況反饋...
    菲靈feel閱讀 153評(píng)論 0 3
  • 沒(méi)有計(jì)劃的人生是空洞的挚躯。强衡。。
    72b99c04020a閱讀 67評(píng)論 0 0
  • 有的時(shí)候我自己都不確定我是不是愛(ài)他越败,他給我感動(dòng),給我溫暖硼瓣。能逗我開(kāi)心眉尸。我真的很喜歡他,但是僅限于此刻 我覺(jué)得我愛(ài)...
    c543e1bd2a56閱讀 118評(píng)論 0 0
  • 初魄微明清雨冷,獨(dú)噙蕭翠泣門(mén)雕噪猾。 玉裙艷舞翩遷起霉祸,執(zhí)手雙星夢(mèng)路遙。
    栩辰徉閱讀 222評(píng)論 14 17