<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    happyfish

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      38 Posts :: 1 Stories :: 62 Comments :: 0 Trackbacks


    1.在進行進棧操作時,應(yīng)該首先檢查棧是否( 已滿).
    2.p操作使進程( )v操作使進程( ).
    3.多任務(wù)操作系統(tǒng)的進程通訊方式有(管道)(共享內(nèi)存)(發(fā)送信號)進程調(diào)度的方式有(搶奪)(非搶奪).
    4.int a[3][4],(*p)[4];
    p=a;
    則*p+1指向(p[0][1]).
    5.在一個順序存儲結(jié)構(gòu)里,LO表示第一個存儲單元的地址,設(shè)每個存儲單元的長度為M,則第n個存儲單元的地址為(LO + (n-1)*M).
    6.進程死鎖的條件不包括 a
    a搶先 b循環(huán)等待 c互斥 d動態(tài)分配資源
    7.有5個進程,一個正在運行狀態(tài),則就緒的進程最多的個數(shù). c
    a0 b1 c4 d5
    8.寫出運行結(jié)果 d
    #include<iostream.h>
    int fn(int a,int b)
    {
    if(b>0)
      return a*fn(a,b-1);
     else
       return 1;
    }
    void main()
    {
     cout<<fn(5,3)<<endl;
    }
    a60  b70  c120 d125

    9
    union
    {
     struct
     {
        unsigned int x1:2;
        unsigned int x2:3;
        unsigned int x3:3;
     }x;
     char y;
    }z;
    如果令z.y=100則z.x.x3為 c
    a 0 b 1  c3   d4

    10
    執(zhí)行操作pushi(1),pop(),pop()后,棧頂元素為 d
    a 0  b1  c2  d不確定

    11
    改程序中的錯誤
    (1)
    unsigned int sum(unsigned int base)
    {
     static unsigned int sum=0;
     unsigned int index;
     for (index=1;index<=base;index++)
     sum+=index;
     return sum;
    }
    (2)
    unsigned char a;
    int*b;
    *b=100;
    a=100;
    while(a>=0)
    {
     a--;
    ........
    }
    1.unsigned char;無符號類型,當然a>=0永遠成立,就算不停a--
    死循環(huán)
    2.int* b; 野指針,指向不定地址
    *b=100; 改變不定地址的值,危險
    (3)
    class C
    {
     ...
    };
    class B{
    pribate:
            *p;
    public:
          B(){p=new C[100];}
          ~B(){deldte p;}
              };

    B CreateB()
    {
     B b;
     return b;
    }
    1、new [] 應(yīng)該對應(yīng) delete[]
    2、return b;隱含調(diào)用拷貝構(gòu)造。類實現(xiàn)中最好提供拷貝構(gòu)造函數(shù)的實現(xiàn),默認為bit copy不應(yīng)滿足實際要求,另外題目意圖可能還是這里:返回 B&。或者修改為
    B* CreateB()
    {
     B* b = new B;
     return b;
    }
    12
    看程序?qū)懡Y(jié)果!
    (1)
    #include<iostream.h>
    class A
    {
    public:
          A(int y)
             {
               my=y;
               mx=mx+my;
                 }
           void display()
            {
                cout<<"a="<<my<<"b="<<mx<<endl;
               }
    private:
      static int mx;
      int my;
    };
    int A::mx=2;
    void main()
    {
    A a1(2);
     A a2(4);

     a1.display();
     a2.display();
    }

    (2)
    chat *GetMemory(viod)
    {
     char p[]="hello world";
     return p;
    }
    void Test(void)
    {
     char*str=NULL;
    str = GetMemory();
    printf(str);
    }

    13
    使用fmc的CCriticalSection,CEvent類或Window API函數(shù)或偽代碼加注釋的方式表示
    1.要是下面程序的結(jié)果只是a.x=4,a.y=5或a.x=4000,a.y=5000(而不是a.x=4000,a.y=5或a.x=4,a.y=5000)應(yīng)該在什么位置加入什么代碼?
    struct A
    {
     int x.y;
    }a;
    fun1()
    {
    a.x=4;
    a.y=5;
    }
    fun2()
    {
    a.x=4000;
    a.y=5000;
    }
    AfxBeginThread(fun1,...);
    AfxBeginThread(fun2,...);

    (2)
    有如下代碼,要使線程1執(zhí)行完后線程2才開始執(zhí)行,應(yīng)在什么位置加入什么代碼??
    Thread1()
    {
     程序段1
    ...
    程序段2
    }
    Thread2()
    {
     
    ...

    }
    main()
    {
      AfxBeginThread(fun1,...);
    AfxBeginThread(fun2,...);
    }

    14
    構(gòu)造一個類Singleton,使該類只能存在一個實例.
    將構(gòu)造函數(shù)寫為private的,然后通過一個成員靜態(tài)函數(shù)來調(diào)用構(gòu)造函數(shù)即可。
    15
    編寫一個函數(shù)subs(char *str)打印出str的所有子串(例如1234的子串包括:1,2,3,4,12,13,14,23,24,34,123,234,1234)不能使用系統(tǒng)提供的有關(guān)字符處理的類庫,庫函數(shù).

    16
    編寫一個先入先出緩沖區(qū)的公共函數(shù)(或類庫)程序.不限c c++.不能使用明顯低效的方案
    緩沖區(qū)的規(guī)則是:
    1.緩沖區(qū)最大長度100m
    2.向緩沖區(qū)存入數(shù)據(jù)時放在上次存入數(shù)據(jù)的后面
    3.從緩沖區(qū)取出數(shù)據(jù)時,從緩沖區(qū)未被取走到數(shù)據(jù)的頭部取.取出數(shù)據(jù)的緩沖區(qū)即可認為是空.以后雜再存入.
    至少要為此緩沖區(qū)編寫兩個接口操作函數(shù):
    1.存入數(shù)據(jù)函數(shù).第一個參數(shù)是int 長度值.第二個是指向二進制字節(jié)的指針.指向存入的數(shù)據(jù).
    2.取出數(shù)據(jù)函數(shù).第一個參數(shù)是int 長度值.第二個是指字節(jié)的指針,指向取出數(shù)據(jù)后的內(nèi)存位置.

     

    問題1:
    function_C()
    {
     static  int A;
         int  B;
    }
    請問,A和B的區(qū)別
    PS:我只回答出了,當程序運行完function_C后,A的值將會保存,直到
    下一次進入function_C,A的值才會被改變;
    當程序運行完function_C后,B的值就會立刻發(fā)生變化了。
    請問:A和B各自存儲在什么區(qū)域:
    1:數(shù)據(jù)域 2:代碼域 3:堆棧
    A在數(shù)據(jù)域;B在棧。

    問題2:
    在32位編譯系統(tǒng)中,
    typedef struct
    {
     int  A
     char B
    }T_s;
    請問T_s的長度為幾個字節(jié),我回答的是6個字節(jié)。
    有沒有對齊的問題呀??
    有的,8

    問題3:
    *char function_C
    {
     char str[4]="abcd";

    return str;
    }

    function_A
    {
     char *ptr;

     ptr=function_C;
    }
    請問這種用法對么?
    問題4:
    int *ptr;
    typedef struct
    {
     int  A
     char B
    }T_s;

    T_s  s[4];

    ptr指向結(jié)構(gòu)數(shù)組(s[4])
    的第一個元素,
    請問
    ptr+1指向哪個元素,在該元素的什么位置。

     

    8086/8088的微機只有一種工作模式(即實模式)只能處理1M以下的地址(16位),這種地址被城為實地址。后來Intel為了突破1M的內(nèi)存的限制,推出了386等芯片,增加了保護模式,在32位保護模式下,程序可以訪問4G內(nèi)存空間。但同時為了同以前的程序保持兼容,所以舊程序在實模式下運行,而32位程序可以運行在保護模式下,從而最大地發(fā)揮服務(wù)器的能力。DOS是運行在實模式的,而Windows 9x/NT都是運行在保護模式的。CPU有專門的保護模式指令。

    void FAR* memcopy(char *dst,char *src,size_t count)
    {
            void * ret = dst;

            while (count--)
            {
                    *(char *)dst = *(char *)src;
                    dst = (char *)dst + 1;
                    src = (char *)src + 1;
            }

            return(ret);
    }

     


    1、完成字符串拷貝可以使用 sprintf、strcpy 及 memcpy 函數(shù),請問這些函數(shù)
       有什么區(qū)別,你喜歡使用哪個,為什么?

    2、變量的聲明和定義有什么區(qū)別?

    3、請寫出下面代碼在 32 位平臺上的運行結(jié)果,并說明 sizeof 的性質(zhì):

    #include <stdio.h>
    #include <stdlib.h>

    int main(void)
    {
            char a[30];
            char *b = (char *)malloc(20 * sizeof(char));
            printf("%d\n", sizeof(a));
            printf("%d\n", sizeof(b));
            printf("%d\n", sizeof(a[3]));
            printf("%d\n", sizeof(b+3));
            printf("%d\n", sizeof(*(b+4)));
            return 0 ;
    }

    4、請完成以下題目。注意,請勿直接調(diào)用 ANSI C 函數(shù)庫中的函數(shù)實現(xiàn)。

       a)請編寫一個 C 函數(shù),該函數(shù)給出一個字節(jié)中被置 1 的位的個數(shù),并請
         給出該題的至少一個不同解法。
       b)請編寫一個 C 函數(shù),該函數(shù)將給定的一個字符串轉(zhuǎn)換成整數(shù)。
       c)請編寫一個 C 函數(shù),該函數(shù)將給定的一個整數(shù)轉(zhuǎn)換成字符串。
       d)請編寫一個 C 函數(shù),該函數(shù)將一個字符串逆序。
       e)請編寫一個 C 函數(shù),該函數(shù)在給定的內(nèi)存區(qū)域搜索給定的字符,并返回
         該字符所在位置索引值。
       f)請編寫一個 C 函數(shù),該函數(shù)在一個字符串中找到可能的最長的子字符串,
         該字符串是由同一字符組成的。

     

    有關(guān)內(nèi)存的思考題
    1.void GetMemory(char *p)
    {p = (char *)malloc(100);}

    void Test(void)
      {
       char *str = NULL;GetMemory(str);
       strcpy(str, "hello world");printf(str);
      }
    請問運行Test函數(shù)會有什么樣的結(jié)果?
    GetMemory()函數(shù)獲取了一段內(nèi)存空間,卻沒有很好地返回這個空間地址。產(chǎn)生內(nèi)存泄露。
      strcpy不申請內(nèi)存,不進行地址校驗,直接在內(nèi)存00000000H處寫入字符串,程序運行后,系統(tǒng)很可能崩潰。
    2.
    char *GetMemory(void)
     {
      char p[] = "hello world";
      return p;
     }
     void Test(void)
     {
       char *str = NULL;str = GetMemory();
       printf(str);
     }
    請問運行Test函數(shù)會有什么樣的結(jié)果?
      GetMemory()返回一個無效的,僅在該函數(shù)生命期內(nèi)有效的一個字符串指針。str獲取到了一個“合法”(編譯器、語法合法)的地址。但該地址內(nèi)容不可預(yù)料。
      送顯之后,程序其它部分正常工作,但不會導(dǎo)致系統(tǒng)崩潰。最多是在屏幕上寫了無休止的字符而已。

     

    posted on 2005-07-25 18:04 小魚兒 閱讀(3291) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最新国产成人亚洲精品影院| 亚洲精品tv久久久久| 亚洲精品日韩中文字幕久久久| 国产一级a毛一级a看免费视频| 亚洲国产精品成人| 在线播放免费人成视频网站| 亚洲精品无码久久久久AV麻豆| 亚洲av无码专区首页| 波多野结衣一区二区免费视频| 美女免费精品高清毛片在线视| 国产午夜鲁丝片AV无码免费| 日本亚洲高清乱码中文在线观看| 全部免费国产潢色一级| 一级美国片免费看| 亚洲女久久久噜噜噜熟女| 国产午夜成人免费看片无遮挡 | 爱丫爱丫影院在线观看免费| 久久激情亚洲精品无码?V| 三级毛片在线免费观看| 亚洲av无码国产精品夜色午夜| 免费黄网站在线看| 亚洲免费在线视频观看| 波多野结衣久久高清免费 | 久久久久久亚洲av成人无码国产| 国产免费无码AV片在线观看不卡| 亚洲最新视频在线观看| 搡女人真爽免费视频大全| 日本高清不卡中文字幕免费| 国产亚洲无线码一区二区| 国产精品永久免费10000| 久久精品国产亚洲av天美18| 日韩一卡2卡3卡4卡新区亚洲| 99re免费视频| 亚洲av日韩专区在线观看| 亚洲中文字幕无码一区二区三区| www视频免费看| 免费VA在线观看无码| 亚洲一级二级三级不卡| 国产精品视_精品国产免费| 国产在线观看免费视频软件 | 亚洲视频人成在线播放|