千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 物聯網筆試題:C語言筆試題(一)

物聯網筆試題:C語言筆試題(一)

來源:千鋒教育
發布人:wjy
時間: 2022-06-07 14:32:00 1654583520

  1、下面的程序可以從0....n-1中隨機等概率的輸出m個不重復的的數。這里我們假設n遠大于m。

ningth(int n,int m){

 srand((unsigned int)time(0));

 for(int i=;i<n;i++){

  if(?){

   count<<i<<endl;

   (?);

  }

 }}

  A.rand()%(n-i)<=m;m--;

  B.rand()%(n-i)<m;m--;< p="">

  C.rand()%(n-i)>=m;m++;

  D.rand()%(n-i)>m;m++;

 

  2、有以下程序

#include <stdio.h>mian(){

 int a[]={2,4,6,8},*p=a,i;

 for(i=0;i<4;i++)

 a[i]=*p++;

 printf("%d\n",a[2]);}

  程序的輸出結果是()

  A.2  

  B.8  

  C.4  

  D.6

 

  3、【多選題】關于淺復制和深復制的說法,下列說法正確的是()

  A.淺層復制:只復制指向對象的指針,而不復制引用對象本身

  B.深層復制:復制引用對象本身

  C.如果是淺復制,修改一個對象可能會影響另外一個對象

  D.如果是深拷貝,修改一個對象不會影響到另外一個對象

 

  4、以下代碼最后一次打印結果是()

void fun(int iinputnum){

 static int icount=1;

 icount=icount+iinputnum;

 printf("\n icount=%d"icount+iinputnum);}for(i=1;i<3;i++)

 fun(i);

  A.icount=3

  B.icount=6

  C.icount=4

  D.icount=20

 

  5、下列程序執行后的輸出結果是()

void main()

{

 char x=0xFFFF;

 printf("%d\n",x--);

}

  A.-32767

  B.FFFE

  C.-1

  D.-32768

 

  6、C++中構造函數和析構函數可以拋出異常嗎?

  A.都不行

  B.都可以

  C.只有構造函數可以

  D.只有析構函數可以

 

  7、【多選題】兩個線程并發執行以下代碼,假設a是全局變量,那么以下輸出()哪個是可能的

int a=1;

void foo(){

 ++a;

 printf("%d",a);

}

  A.3 2

  B.2 3

  C.3 3

  D.2 2

 

  答案區:

  1、答案:B

  2、答案:D

  解析:*p++ 先取指針p指向的值(數組第一個元素2),再將指針p自增1 (*p)++ 先去指針p指向的值(數組第一個元素2),再將該值自增1(數組第一個元素變為3) *++p 先將指針p自增1(此時指向數組第二個元素), 操作再取出該值 ++*p 先取指針p指向的值(數組第一個元素2),再將該值自增1(數組第一個元素變為3)

  3、答案:ABCD

  4、答案:B

  這是考察static靜態局部變量的用法。 靜態局部變量的特點: 1.該變量在全局數據區分配內存; 2.靜態局部變量在程序執行到該對象的聲明處時被首次初始化,即以后的函數調用 不再進行初始化; 3.靜態局部變量一般在聲明處初始化,如果沒有顯式初始化,會被程序自動初始化為0。fun(1)時 icount初始化為1,之后不再初始化,執行第一條語句 icount=2; 打印出來是3; fun(2)時 icount=2+2=4,打印的結果是4+2=6.

  5、答案:C

  6、答案:C

  析構函數不能拋出異常,處理析構函數異常的正確方式是將異常封裝在析構函數內部,而不是拋出異常,如下代碼所示。 ~ClassName(){ try{ do_something(); } catch{ //... } } 原因如下:C++異常處理模型有責任處理那些因為出現異常而失效的對象,處理方式是調用這些失效對象的析構函數,釋放掉它們占用的資源。如果析構函數再拋出異常,則會陷入無盡遞歸嵌套之中,因此這是不被允許的。

  7、答案:ABCD

  假設線程x和y同時執行,x和y可隨時被搶占,a的初始值為1 A:3, 2 y先執行++a,a為2; y再執行printf,a入棧,在打印到終端之前切換到x x執行++a,a為3; x執行printf,輸出3;再切換到y y執行打印,輸出2 B:2 3 x先執行++a,a為2; x再執行printf,輸出2;切換到y y執行++a,a為3; y執行printf,輸出3; C:3 3 x先執行++a,a為2;切換到y y執行++a,a為3; y執行printf,輸出3;切換到x x執行printf,輸出3 D:2 2 類似C, 執行++a操作但沒有寫回到內存 這里關鍵有兩點: (1)兩個線程可隨時被搶占 (2)++a和printf不是原子指令,可隨時被打斷;特別注意函數printf,a作為參數壓棧后,a再變化則不會影響輸出(printf實際打印的是壓棧的參數,是值拷貝的棧變量)

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲欧美精品在线精品二区 | 日韩精品福利视频第一区 | 一级加勒比视频在线观看 | 伊人久久大香线蕉影院95 | 综合亚洲欧美日韩一区二区 | 亚洲日韩欧美一区二区不卡 |