日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一些看起来简单做起来难的程序员笔试面试题集锦

發布時間:2024/7/19 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些看起来简单做起来难的程序员笔试面试题集锦 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、判斷三個bool值中是否至少有兩個bool為真?

  此題有幾種不同的解法

  (1)傳統解法

bool leastTwo(bool a, bool b, bool c){return (a&&b) || (b&&c) || (c&&a); }

  (2)如果學過電路的可以考慮利用卡諾圖化簡

return a?(b || c) : (b && c);

  或者

return a && (b || c) ||(b && c);

  (3) 使用異或運算 true ^ true = false; ? true^false = true; false^true = true; false^false = false;

return a^b ? c : a;

  (4)計數true的個數

return ((a?1:0)+(b?1:0)+(c?1:0)) >= 2;

2、通過增加或是修改一個字符,是下面c程序輸出20個減號

int n = 20; for(int i = 0; i < n ; i --){printf("-"); }

此題主要考慮for循環的使用功底,由于輸出20個減號,大致的程序都不變,要考慮怎么從for括號的循環條件修改

for(int i = 0 ; -i < n; i --)for(int i = 0 ; i < n ; n--)for(int i = 0 ; i +n ; i -- )

3、不用任何循環語句和條件語句,打印1到100的數

  此題首先想到的是遞歸,但遞歸不是面試官想要的,面試官肯定會接著問 “還有其他方法嗎?”

  (1)利用構造函數實現,生成100個對象,即可以打印100次。

?

class Printer { public:Printer() { static unsigned i=1; cout << i++ << endl; } };int main() {Printer p[100]; }

?

  (2)利用模板特化的性質實現。

template <int N> struct Print{static void print(){Print<N-1>::print();printf("%d\n",N); } }template <> struct Print<1>{static void print(){printf("1\n"); } }

  類似題目:求1+2+……+n,要求不能用以下符號:*, /, for, while, if, else, switch, case, ?:.

?

轉載于:https://www.cnblogs.com/xiongqiangcs/p/3955726.html

總結

以上是生活随笔為你收集整理的一些看起来简单做起来难的程序员笔试面试题集锦的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。