麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

非常經典的C語言趣味題目

2020-01-26 16:19:42
字體:
來源:轉載
供稿:網友

http://stevenkobes.com/ctest.html

在這個網站上發現一套很有趣的C語言測試題,如果你招聘C語言相關開發人員,或者正在學習C語言,很值得做一做。

如果沒有做,下面內容暫時不要看,最好自己先完成一遍。

image

OK,假設你做的答案沒有完全正確,那你可以繼續看下去了,否則,后面內容對你來說就是小菜一碟,不值得看。

第一題:

#include <setjmp.h>
static jmp_buf buf;
int main(void)
{
volatile int b = 3;
if (setjmp(buf) != 0)
{
printf("%d/n", b);
exit(0);
}
b = 5;
longjmp(buf, 1);
}

輸出結果為A)3 B)5 C)0 D)都不是

答案為B,也就是輸出5。

關鍵點在于理解setjmp以及longjmp,(http://en.wikipedia.org/wiki/Setjmp.h )第一次運行到setjmp,會設置jmp_buf,然后返回0。當調用longjmp時,會把longjmp里面的非0值作為setjmp的返回值返回(如果longjmp的value參數為0,setjmp恢復后返回1,也就是當恢復到setjmp存儲點的時候,setjmp一定不會返回0)。

setjmp-longjmp組合的用處類似于游戲中的存盤讀盤功能,經常被用于類似C++的異常恢復操作。

第二題:

struct node
{
int a; int b; int c;
};
struct node s = { 3, 5, 6 };
struct node *pt = &s;
printf("%d/n", *(int*)pt);
返回結果為3,這個算是比較簡單,pt為指向結構s的指針,然后將pt轉換為int指針,進行dereference,取出一個int值,那就是結構中第一個數。

我們將題目改動一下,如下代碼

復制代碼 代碼如下:

struct node
{
char a; char b; short c; int d;
};
struct node s = { 3, 5, 6, 99 };
struct node *pt = &s;
printf("%X/n", *(int*)pt);


需要注意的是一般32位C編譯器都認為char是8bit,short是16bit,int為32bit,所以node在內存中應該正好是對齊的,也就是abc這幾個成員之間沒有空隙。最終結果應該為60503,如果不是,歡迎你告訴我你具體的編譯環境以及硬件配置。

第三題:

復制代碼 代碼如下:

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


這道題其實最簡單的辦法就是在紙上做一個推演計算,一步一步跑一下,就能得到答案了,這里面沒有任何復雜的C語言概念。

第四題:

復制代碼 代碼如下:

int a[5] = { 1, 2, 3, 4, 5 };
int *ptr = (int*)(&a + 1);
printf("%d %d/n", *(a + 1), *(ptr 主站蜘蛛池模板: 一区二区三区视频在线观看 | 午夜精品小视频 | 欧美成人一区免费视频 | 亚洲成人网一区 | 九九热免费视频在线观看 | 亚洲国产中文字幕 | 深夜免费观看视频 | 免费国产在线精品 | 免费国产成人高清在线看软件 | 国产一级一区二区 | 中文字幕xxx| 欧美人xx| 久久久久久久久久91 | 国产69精品久久久久孕妇黑 | 羞羞的小视频 | jizzjizzjizz少妇| 亚洲第一色片 | 久久国产精品二国产精品中国洋人 | 中国女人内谢69xxxx天美 | 国产精品久久久久久久久久久久久久久 | 中文字幕在线观看www | 黄色免费不卡视频 | 91成人午夜性a一级毛片 | 1024亚洲天堂 | 免费观看国产精品视频 | 暴力强行进如hdxxx | 久久国产一二三 | 黄污网站在线 | 欧美精品一区二区三区在线 | 蜜桃视频观看麻豆 | 久色成人网 | 黄污网址 | 亚洲成人第一页 | 九草在线视频 | 精品一区在线视频 | 成人午夜视频在线观看免费 | 久久老司机精品视频 | av在线免费网| 免费视频一区 | 欧美成人激情在线 | free japan xxxxhdsex69|