<samp id="uu9tx"></samp>
        <samp id="uu9tx"><tr id="uu9tx"><nav id="uu9tx"></nav></tr></samp>
        <delect id="uu9tx"><legend id="uu9tx"><meter id="uu9tx"></meter></legend></delect>
                <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp><nav id="uu9tx"></nav>
                <samp id="uu9tx"></samp>
                  <samp id="uu9tx"><tr id="uu9tx"><meter id="uu9tx"></meter></tr></samp>
                  江蘇省高校計算機等級考試命題研究院 江蘇省高校計算機等級考試輔導
                  2010秋江蘇省計算機二級C++上機真題1

                      江蘇省計算機二級  Visual C++上機試卷(01)
                     (本試卷完成時間為70分鐘)   
                  一、改錯題(20分)  
                    【題目】
                    以下程序的功能是:根據字符串str中是否包含子串substr,決定如何將字符串str1插入到
                  str的不同位置。插入方法是:如果str中包含子串substr,則將str1插入到str中首次出現的子
                  串substr之后;否則,插入到str的尾部。
                    正確程序的輸出如下:
                    原字符串:aabcd12345  子字符串:abcd  插入字符串:ABC
                    新字符串:aabcdABC12345   
                    含有錯誤的源程序如下: 
                      #include <iostream.h>  
                      #include <string.h>
                      char *find(char *str,char *substr)
                      {  
                        unsigned lent=strlen(str);
                        for(char *p1=str,*p2=substr;strlen(p1)>=len;p1++){
                          for(unsigned i=0;i<len;i++)  
                           if(p1[i]!=p2[i])
                              break;  
                           if(i>len)   
                             return p1+len; 
                      } 
                      return 0;
                     }
                      char *insert(char *str,char *substr,char *str1)
                      {
                        char p=find(str,substr);
                        if(p)
                          strcat(str,str1);
                        else{
                          char *tmp=new char[strlen(str)+strlen(str1)+1];
                          strcpy(tmp,str1)
                          strcat(tmp,p);
                          strcpy(p,tmp);
                          delete []tmp;
                        }
                        return str;
                      }
                      void main()   
                      {
                      char *str=new char[80],substr[]="abcd",str1[]="ABC";
                      strcpy(str,"aabcdl2345");    ’
                      cout<<"原字符串:"<<str<<"子字符串:"<<substr<<"插入字符串:"<<str1<<endl;
                      str=insert(str,substr,str1);
                      cout<<"新字符串:"<<str<<endl;
                      delete []str;
                      } 
                      【要求】
                      1.把上述程序錄入到文件myfa.cpp中,根據題目要求及程序中語句之間的邏輯關系對。
                  程序中的錯誤進行修改。程序中的注解可以不輸入。 
                      2.改錯時,可以修改語句中的一部分內容,增加少量的變量說明、函數原型說明或編譯預
                  處理命令,但不能增加其他語句,也不能刪除整條語句。 
                      3.改正后的源程序文件myfa.cpp必須放在T盤根目錄下,供閱卷用。
                      二、編程題(20分)
                      【題目】
                      試定義一個類Array,將4行5列二維數組的各列前3個元素依次拼接成一個整數,再將
                  該整數賦值給相應列的最后一個元素。例如,

                    (1)私有數據成員:
                       int a[4][5];
                    (2)公有成員函數。
                       Array(int b[][5],int n):構造函數,用二維數組b初始化數組a,參數n表示數組b的
                  行數。
                       void val(int j):將成員數組a第j列的前3個元素依次拼接成一個整數賦值給第4個元
                  素。
                       void fun():利用成員函數vaLl()依次處理數組a的各列,完成題目的要求。
                       void print():按矩陣形式打印數組a。
                      (3)在主函數中完成對該類的測試。
                      輸出示例:
                      原數組:
                      1    2      0    4    1
                      16   11    21    0    2
                      2    0     3     1    3
                      0    0     0     0    0
                      處理后的數組:    ,
                      l    2      0    4    1
                      16   11     21   0    2
                      2    0      3    1    3
                      1162 2110  213   401  123
                      【要求】
                      源程序文件名必須為myfb.cpp,并放在T盤根目錄下,供閱卷用。
                      參考答案
                    一、改錯題
                    unsigned len=strlen(str);    str改為substr
                    if(i>len)                    改為i>=len
                    char p=find(str,substr);      char p改為char *p
                    if(p)                       p改為p==0或!p
                   二、編程題
                      #include<iostream.h>
                      class Array{
                          int a[4][5];
                      public:
                          Array(int b[][5],int n)
                          {
                             for(int i=0;i<n;i++)
                                for(int j=0;j<5;j++)
                                  a[i][j]=b[i][j];
                      }
                      void val(int j)
                      {
                        a[3][j]=0;
                        for(int i=0;i<3;i++){
                           int k=a[i][j];
                           do{  
                             a[3][j]=10;
                             k/=10;
                           }while(k);  
                           a[3][j]+=a[i][j];
                       }
                      }
                      void fun()  
                      {
                       for(int j=0;j<5;j++)
                          val(j);
                      }
                      void print()
                      {   
                      for(int i=0;i<4;i++){
                        for(int j=0;j<5;j++)
                         cout<<a[i][j]<<'\t';  
                      cout<<'\n';
                      }  
                    }
                    void main()
                    {int t[4][5]={{1,2,0,4,1},{16,11,21,0,2},{2,0,3,1,3}};
                      Array test(t,4);
                      cout<<"原數組:"<<end];
                      test.print();
                      test.fun();
                      cout<<"處理后的數組:"<<endl;
                      test.print();
                      }


                   

                  亚洲欧美日韩国产一区二区三区_全亚洲免费一级黄片_国产一区二区三区不卡视频手机版_国产污三级网站在线观看