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

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

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

    happyfish

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


    1.在進行進棧操作時,應該首先檢查棧是否( 已滿).
    2.p操作使進程( )v操作使進程( ).
    3.多任務操作系統的進程通訊方式有(管道)(共享內存)(發送信號)進程調度的方式有(搶奪)(非搶奪).
    4.int a[3][4],(*p)[4];
    p=a;
    則*p+1指向(p[0][1]).
    5.在一個順序存儲結構里,LO表示第一個存儲單元的地址,設每個存儲單元的長度為M,則第n個存儲單元的地址為(LO + (n-1)*M).
    6.進程死鎖的條件不包括 a
    a搶先 b循環等待 c互斥 d動態分配資源
    7.有5個進程,一個正在運行狀態,則就緒的進程最多的個數. c
    a0 b1 c4 d5
    8.寫出運行結果 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
    執行操作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--
    死循環
    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 [] 應該對應 delete[]
    2、return b;隱含調用拷貝構造。類實現中最好提供拷貝構造函數的實現,默認為bit copy不應滿足實際要求,另外題目意圖可能還是這里:返回 B&。或者修改為
    B* CreateB()
    {
     B* b = new B;
     return b;
    }
    12
    看程序寫結果!
    (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函數或偽代碼加注釋的方式表示
    1.要是下面程序的結果只是a.x=4,a.y=5或a.x=4000,a.y=5000(而不是a.x=4000,a.y=5或a.x=4,a.y=5000)應該在什么位置加入什么代碼?
    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執行完后線程2才開始執行,應在什么位置加入什么代碼??
    Thread1()
    {
     程序段1
    ...
    程序段2
    }
    Thread2()
    {
     
    ...

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

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

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

     

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

    問題2:
    在32位編譯系統中,
    typedef struct
    {
     int  A
     char B
    }T_s;
    請問T_s的長度為幾個字節,我回答的是6個字節。
    有沒有對齊的問題呀??
    有的,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指向結構數組(s[4])
    的第一個元素,
    請問
    ptr+1指向哪個元素,在該元素的什么位置。

     

    8086/8088的微機只有一種工作模式(即實模式)只能處理1M以下的地址(16位),這種地址被城為實地址。后來Intel為了突破1M的內存的限制,推出了386等芯片,增加了保護模式,在32位保護模式下,程序可以訪問4G內存空間。但同時為了同以前的程序保持兼容,所以舊程序在實模式下運行,而32位程序可以運行在保護模式下,從而最大地發揮服務器的能力。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 函數,請問這些函數
       有什么區別,你喜歡使用哪個,為什么?

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

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

    #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、請完成以下題目。注意,請勿直接調用 ANSI C 函數庫中的函數實現。

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

     

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

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

     

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

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


    網站導航:
     
    主站蜘蛛池模板: 国产精品免费AV片在线观看| 男男黄GAY片免费网站WWW| a毛片免费在线观看| 国产亚洲成人久久| 国产99精品一区二区三区免费| 亚洲AV无码成H人在线观看 | 成人无遮挡毛片免费看| 亚洲一区二区三区乱码在线欧洲| 日本免费一区二区在线观看 | 亚洲av第一网站久章草| 国产自产拍精品视频免费看| 亚洲精品乱码久久久久久蜜桃图片| 成年男女男精品免费视频网站| 亚洲欧美精品午睡沙发| 国产精品自在自线免费观看| 精品亚洲成a人在线观看| 免费精品国产自产拍观看| gogo免费在线观看| 亚洲国产精品久久久天堂| 91精品国产免费| 亚洲国产成人精品青青草原| 日韩免费福利视频| 久久www免费人成精品香蕉| 亚洲免费在线播放| 国产成人无码免费看视频软件 | 久久国产精品一区免费下载| 亚洲美女中文字幕| 啦啦啦www免费视频| 国产精品无码免费专区午夜| 亚洲国产综合专区在线电影| 成年性生交大片免费看| 插鸡网站在线播放免费观看| 亚洲视屏在线观看| 四虎影库久免费视频| 久久国产精品免费看| 亚洲av无码无线在线观看| 亚洲精品无码成人片久久| 成人在线视频免费| 国产免费一区二区三区不卡| 77777亚洲午夜久久多喷| 国产亚洲情侣一区二区无码AV|