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 小魚兒 閱讀(3294) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 建德市| 枞阳县| 梁河县| 临泉县| 昌乐县| 龙胜| 长宁区| 东兴市| 威宁| 洪雅县| 新昌县| 莆田市| 即墨市| 上饶市| 都江堰市| 瑞丽市| 许昌市| 兴国县| 定襄县| 乌鲁木齐市| 太和县| 刚察县| 资阳市| 仙游县| 惠水县| 抚州市| 仁怀市| 承德市| 富顺县| 峨山| 江源县| 西昌市| 临沧市| 闵行区| 平塘县| 宜君县| 岢岚县| 吴桥县| 河曲县| 桐城市| 土默特右旗|