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

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

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

    ∪∩deniable Design

    個(gè)人JAVA版GAE(google app engine),struts2+jpa+jQuery開(kāi)發(fā),互相交流 http://iunbug.appspot.com/

     

     

    使用說(shuō)明

        程序名為 NO3.exe.運(yùn)行環(huán)境為DOS,執(zhí)行后顯示:

    在"請(qǐng)輸入你的選擇后(1.2.3.4.5.6)"后輸入數(shù)字選擇執(zhí)行的功能.

    測(cè)試結(jié)果:

    1. 選擇1.后輸入:123456789

    2. 選擇2后輸入分別輸入1,3.

      重復(fù)1)操作后選擇2,分別輸入10,10.

    3.  
    4. 重復(fù)1)操作后選擇3.分別輸入1,abcde

       

      再重復(fù)1)操作后選擇3.分別輸入9,abcde

     

     

     

     

     

     

    1.  
    2. 再重復(fù)1)操作后選擇4,分別輸入1,3

      再重復(fù)1)操作后選擇4,分別輸入0,3

      再重復(fù)1)操作后選擇4,分別輸入10,3

    5) 再重復(fù)1)操作后選擇5,分別輸入1,abcde

    再重復(fù)1)操作后選擇5,分別輸入9,abcde

    再重復(fù)1)操作后選擇5,分別輸入0,abcde

    再重復(fù)1)操作后選擇5,分別輸入10,abcde

    6)運(yùn)行No3.exe后選擇6或輸入非"1,2,3,4,5"的數(shù)字

     

    調(diào)試過(guò)程:

    1. 本調(diào)試主要針對(duì)置換操作功能進(jìn)行演示:
      1. 將光標(biāo)移置String:: Replace(String t1,int pos)函數(shù)的第一條語(yǔ)句處Ctrl+F10開(kāi)始調(diào)試
      2. 在DOS窗口中選擇1后輸入"123456789".接著選擇5分別輸入1,abcde.

        這時(shí)Debugger停留在String:: Replace(String t1,int pos)的第一條語(yǔ)句處:

      3. 在Watch窗口的名稱欄分別輸入: str, t1.str, q, out, pos, (-pos) +1, pos – size,j,i.進(jìn)行觀察.

      4. 按F10開(kāi)始單步調(diào)試.
        1. 按F10三次后Debugger停留在最后一個(gè)判斷語(yǔ)句處.同時(shí)Watch窗口中個(gè)名稱的值分別為:

        2. 接著單步調(diào)試,for()函數(shù)完后,Debugger停留在" delete t1.str;"語(yǔ)句處.

          這時(shí)Watch窗口中個(gè)各名稱的值分別為:

          接著兩次F10,這時(shí)t1.str和out的值已經(jīng)改變,Debugger停留在String:: Replace(String t1,int pos)的結(jié)束處.

        3. 再按一次F10,Debugger停留在main()函數(shù)的switch(k)里的case 5的if()語(yǔ)句處:

          F10到調(diào)用Display()函數(shù)的語(yǔ)句處后F11跟進(jìn)Display()的內(nèi)部.

          在Watch窗口的名稱中輸入str,I,len進(jìn)行觀察.

          單步調(diào)試到Display()函數(shù)結(jié)束,Debugger停留在Display()函結(jié)束處.

          在Watch窗口中str,I,len的值分別為:

          同時(shí)DOS窗口中顯示如下:

      5. 按Shift+F5退出調(diào)試.完成調(diào)試操作.

       

       參考源碼:

    2.  

        1Code:
        2//3.h
        3#include <iostream.h>
        4#include <string.h>
        5#include <stdlib.h>
        6//using namespace std;
        7int out;        // 定義一個(gè)全局變量
        8class String
        9
       10    public:
       11         String(){}
       12         ~String(){}
       13         String SubString(int pos,int num);        //取子串函數(shù)
       14         void Insert(String t,int pos);            //插入子串函數(shù)
       15         void Delete(int pos,int num);            //刪除子串函數(shù)
       16         void Creat();                            //生成字符串函數(shù)
       17         void Display();                        //打印子串函數(shù)
       18         Replace(String t1,int pos);            //置換子串函數(shù)
       19      private:
       20         char *str;
       21         int size;
       22 }
      ;
       23
       24//3.cpp
       25#include "3.h"
       26 //生成新字符串函數(shù)
       27void String:: Creat()
       28 {
       29        char s[100];  
       30        cin>>s;
       31        size=strlen(s);
       32        str=new char[size + 1];
       33        if(str==0
       34            cout<<"沒(méi)有申請(qǐng)到空間!"<<endl;
       35        strcpy( str, s);
       36        //strcpy_s(str,sizeof(str)/sizeof(str[0]),s);
       37        
       38 }

       39//輸出
       40void String::Display()
       41
       42    int len = size;
       43    int i;
       44    for( i=0;i < size;i++ )  
       45      cout<<str[i];
       46    cout<<endl;
       47    cout<<"字符串的總長(zhǎng)度為:"<<len<<endl;
       48}

       49//求子串
       50//void String String::SubString(int pos,int num)
       51String String::SubString(int pos,int num)
       52
       53    String temp;
       54    int left=size-pos + 1;//從pos位置開(kāi)始所有余下的字符串長(zhǎng)度
       55    char *p,*q;
       56    if( pos > size ) 
       57    {
       58        cout<<"錯(cuò)誤!"<<endl;
       59        cout<<"指定位置超過(guò)字符串長(zhǎng)度為:"<< pos - size<<endl;//提示所取子串的錯(cuò)誤位置
       60        exit (1);//異常退出
       61    }

       62    else if( num > left ) 
       63        num = left;
       64    temp.str=new char[num+1];//重新分配內(nèi)存空間
       65    if(temp.str==0)   
       66       cout<<"沒(méi)有申請(qǐng)到空間!"<<endl;
       67    p=temp.str;
       68    for(int i = pos-1;i < pos+num-1;i++)
       69          {  
       70            q = &str[i];    
       71            *= *q;
       72            p++;
       73          }

       74    *p=0;
       75    temp.size = num;
       76    return temp;
       77}

       78
       79//插入運(yùn)算:在串對(duì)象s的pos位置后插入一個(gè)串t
       80void String::Insert(String t,int pos)
       81{
       82    //String temp;
       83    int i_len = t.size;
       84    cout<<"插入字符串的長(zhǎng)度為:"<<i_len<<endl;
       85
       86    char *q;
       87    q = new char( size + 1);
       88    strcpy(q,str);
       89
       90    delete str;
       91    str = new char( size + t.size + 1);        //字符串長(zhǎng)度要在原長(zhǎng)上增加插入串的長(zhǎng)度
       92
       93
       94    strcpy(str,q);
       95
       96    //依次后移,空出長(zhǎng)度為插入字符串的長(zhǎng)度的空間
       97
       98    for(int j = size-1;j > pos-1;j--)        
       99    {
      100            int i = j + t.size;
      101            str[ i-- ] = str[ j ];
      102    }

      103
      104    j = pos;
      105    for(int i = 0;i < t.size;)
      106    {    
      107        str[j++= t.str[i++];
      108    }

      109
      110    size+=t.size;
      111    str[size + 1]='\0';
      112
      113}

      114
      115
      116//刪除 :刪除串中的一個(gè)子串
      117void  String:: Delete(int pos,int num)
      118
      119    //用ifelse if語(yǔ)句判斷刪除的位置是否越界
      120    if(pos <= 0)
      121    {
      122        cout<<"無(wú)法完成刪除操作!"<<endl<<"刪除位置低于字符串長(zhǎng)度為:"<< (-pos) +1<<endl;
      123        exit (1);
      124    }

      125    else if( pos > size )
      126    {
      127        cout<<"無(wú)法完成刪除操作!"<<endl<<"刪除位置超過(guò)字符串長(zhǎng)度為:"<< pos - size <<endl;
      128        exit (1);
      129    }

      130    else if(pos >= 0 && pos <= size )
      131    {
      132            int i = pos - 1;
      133            for(int j = (pos + num -1); j <= size ; j++//從刪除到的位置開(kāi)始前移
      134            {
      135                str[i] = str[j];
      136                i++;
      137            }

      138    }

      139    size = size-num;    //只取刪除后余下的字符個(gè)數(shù)
      140}

      141
      142//置換:置換串中的一個(gè)子串
      143 String:: Replace(String t1,int pos)
      144
      145    //用ifelse if語(yǔ)句判斷置換的位置是否越界
      146    if(pos <= 0)
      147    {    
      148        cout<<"無(wú)法完成轉(zhuǎn)換操作!"<<endl<<"置換位置低于字符串長(zhǎng)度為:"<<(-pos) +1 <<endl;
      149        exit (1);
      150    }

      151    else if(pos > size)
      152    {
      153        cout<<"無(wú)法完成置換操作!"<<endl<<"置換位置超過(guò)字符串長(zhǎng)度為:"<< pos - size <<endl;
      154        exit (1);
      155    }

      156    
      157    //當(dāng)置換的位置加上置換給的子串長(zhǎng)度之和超過(guò)原字符串的長(zhǎng)度時(shí)
      158    //在將不被置換的字符串長(zhǎng)度的拷后追加新字符串的長(zhǎng)度
      159    else if( (t1.size+pos) >size )
      160    {
      161                
      162        char *q;    //定義指針數(shù)組q用來(lái)轉(zhuǎn)存原先將不被置換的字符串
      163        q = new char[ pos +1] ;    //給q分配足夠的空間為將不被置換的字符串的長(zhǎng)度
      164        forint i = 0;i < pos-1;i++ )
      165        {
      166            q[i] = str[i];
      167             
      168        }

      169    
      170        q[pos-1= '\0';
      171        delete []str;        //釋放原字符串空間
      172        strcat(q,t1.str);    //通過(guò)strcat函數(shù)將輸入的子串與原子串的拷貝
      173        cout<<"置換后的字符串為:   "<<q<<endl;
      174        return out = 0;
      175    }

      176
      177    else if( (t1.size+pos) <= size )
      178    {
      179        int j = pos - 1;
      180        for(int i = 0;i < t1.size;i++)
      181            str[j++= t1.str[i];
      182        delete t1.str;
      183        return out = 1;
      184    }

      185
      186    
      187}

      188//主函數(shù)
      189int main(int argc, char* argv[])
      190{  
      191    int pos,num,k; 
      192    String s,s1,s2,t,t1;
      193     do{  
      194        cout<<"\n\n    1.生成字符串"  ;
      195        cout<<"\n\n    2.取子串";
      196        cout<<"\n\n    3.插入子串s1";
      197        cout<<"\n\n    4.刪除子串";
      198        cout<<"\n\n    5.置換子串";
      199        cout<<"\n\n    6.結(jié)束程序";
      200        cout<<"\n******************************** ";
      201        cout<<"\n    請(qǐng)輸入你的選擇(1,2,3,4,5,6)";  
      202        cin>>k;
      203    switch(k){
      204       case 1:{
      205               cout<<"請(qǐng)輸入一個(gè)字符串:";
      206               s.Creat();
      207               cout<<"字符串為:       ";     
      208               s.Display();
      209              }
      break;
      210       case 2:
      211                cout<<"請(qǐng)輸入子串的截取位置pos及子串長(zhǎng)度num"<<endl;
      212                cin>>pos>>num;
      213                t = s.SubString(pos,num);
      214                cout<<"你所取的子串為:  "
      215                t.Display();
      216               }
      break;
      217       case 3:
      218                cout<<"請(qǐng)輸入子串插入位置pos"<<endl;
      219                cin>>pos;
      220                cout<<"請(qǐng)輸入要插入的子串:  ";  
      221                s1.Creat();
      222                s.Insert(s1,pos);
      223                cout<<"插入后的字符串為:   ";  
      224                s.Display();
      225              }
      break;
      226       case 4:
      227               cout<<"請(qǐng)輸入要?jiǎng)h除子串的開(kāi)始位置pos及子串長(zhǎng)度num"<<endl;
      228               cin>>pos>>num;
      229               s.Delete(pos,num);
      230               cout<<"刪除后的字符串為:   ";
      231               s.Display();
      232             }
      break;
      233       case 5:
      234               cout<<"請(qǐng)輸入子串置換位置pos"<<endl;
      235               cin>>pos;
      236               cout<<"請(qǐng)輸入要置換的子串:  ";  
      237               s2.Creat();
      238               s.Replace(s2,pos);
      239               ifout != 0 )
      240               {
      241                   cout<<"置換后的字符串為:   ";  
      242                   s.Display();
      243               }

      244              }
      break;
      245     default:break;
      246  }
       //switch
      247     cout<<"\n--------------------------------- ";
      248}
      while(k>=1&&k<6);
      249  cout<<"\n          再見(jiàn)!";
      250  cout<<"\n     按任意鍵,返回。";
      251  return 0;
      252}

      253

       

    主站蜘蛛池模板: 两个人日本WWW免费版| 我想看一级毛片免费的| mm1313亚洲国产精品美女| 亚洲国产精品网站久久| 成人免费av一区二区三区| 日本免费人成黄页网观看视频| 久久精品国产亚洲AV麻豆网站 | 精品亚洲永久免费精品| 老司机午夜精品视频在线观看免费 | 日韩在线a视频免费播放| 亚洲美女免费视频| 久久免费99精品国产自在现线| 免费涩涩在线视频网| 亚洲国产人成在线观看| 久久国产精品2020免费m3u8 | 久久精品国产亚洲av麻| 一级做性色a爰片久久毛片免费| 好男人视频在线观看免费看片 | 两个人看的www视频免费完整版| 国产大片免费观看中文字幕| 自拍偷区亚洲国内自拍| 成人免费的性色视频| 亚洲图片一区二区| 国产麻豆成人传媒免费观看| 久久久久亚洲AV无码专区网站| 国产天堂亚洲国产碰碰| 欧洲美熟女乱又伦免费视频| 亚洲不卡在线观看| 国产成人精品久久免费动漫| 亚洲AV日韩AV天堂久久| a级毛片无码免费真人久久| 久久久久国产成人精品亚洲午夜 | 亚洲午夜成人精品无码色欲| 一二三四免费观看在线电影| 亚洲第一二三四区| 69精品免费视频| 亚洲高清日韩精品第一区| 18以下岁毛片在免费播放| 久久精品亚洲精品国产色婷| 鲁大师在线影院免费观看| 亚洲免费在线视频|