亚洲免费乱码视频,日韩 欧美 国产 动漫 一区,97在线观看免费视频播国产,中文字幕亚洲图片

      1. <legend id="ppnor"></legend>

      2. 
        
        <sup id="ppnor"><input id="ppnor"></input></sup>
        <s id="ppnor"></s>

        2011年計(jì)算機(jī)軟考程序員考試(下午題)模擬試題及答案(2)

        字號(hào):

        下午試卷
             (考試時(shí)間 14:00~16:30 共150分鐘)
            本試卷共8道題,考生需解答5道題,其中試題1~試題3是必答題,試題4和試題5兩題任選1道題,試題6至試題8三題任選1道解答。對(duì)于任選題,如果解答的試題數(shù)超過(guò)1道,則題號(hào)小的1道題解答有效。每題15分,滿分75分。
             試題一(15分,每空3分)
             閱讀以下說(shuō)明和流程圖,將應(yīng)填入__(n)__處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             已知頭指針?lè)謩e為L(zhǎng)a和Lb的有序單鏈表,其數(shù)據(jù)元素都是按值非遞減排列?,F(xiàn)要?dú)w并La和Lb得到單鏈表Lc,使得Lc中的元素按值非遞減排列。程序流程圖如下所示。
             試題二(15分,每空3分)
             閱讀以下函數(shù)說(shuō)明和C語(yǔ)言函數(shù),將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [程序2.1說(shuō)明]
             已知一個(gè)排好序的數(shù)組,現(xiàn)輸入一個(gè)數(shù),要求按原來(lái)的順序規(guī)律,將它插入到數(shù)組中。
             [程序2.1]
             #include
             #define N 100
             void main()
             {
             float a[N=1],x;
             int i,p;
             printf("輸入已經(jīng)排好序的數(shù)列:");
             for( i=0; i
             scanf(%f",&a[i]);
             printf("輸入要插入的數(shù):");
             scanf("%f",&x);
             for( i=0,p=N; i
             if(x
             {
             ___(1)___
             break;
             }
             for( i=N-1; i>=p; i-- )
             ___(2)___
             ___(3)___
             for( i=0; i<=N; i++ )
             printf("%f\t",a[i]);
             }
             [程序2.2說(shuō)明]
             本程序用變量count統(tǒng)計(jì)文件中字符的個(gè)數(shù)。
             [程序2.2]
             #include
             #include
             void main()
             {
             FILE *fp;
             long count=0;
             if( (fp=fopen("letter.txt","r") ) == NULL )
             {
             printf("can not open file\n");
             exit(0);
             }
             while( !feof(fp) )
             {
             ___(4)___
             count++;
             }
             printf("count=%d\n",count);
             ___(5)___
             }
             試題三(15分,每空3分)
             閱讀以下說(shuō)明和C語(yǔ)言程序,將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             Fibonacci數(shù)列A={11,2,3,5,8,…}有如下性質(zhì):
             a0=a1=1
             ai=ai-1+ai-2 i>1
             對(duì)于給定的n,另外有一個(gè)由n個(gè)元素組成的數(shù)列xn,該數(shù)列中各元素的值為:
             xi=ai/ai+1 i=0,1,…,n
             現(xiàn)要求對(duì)xn中的元素按升序進(jìn)行排序,然后以分?jǐn)?shù)形式輸出排序后的xn。例如n=5時(shí),
             排序前的xn={1/1,1/2,2/3,3/5,5/8},排序后的xn={1/2,3/5,5/8,2/3,1/1}。程序中函數(shù)
             make()首先生成排序前的xn,然后調(diào)用函數(shù)sort()進(jìn)行排序,最后輸出所求結(jié)果。
             [程序]
             #include
             #include
             #include
             struct fact
             {
             long m,n;
             };
             void sort(int n,struct fact *p)
             {
             int a;
             long s,t,u,v;
             struct fact *q,*end;
             for(end=p+(n-1),a=1;a;end--)
             for(a=0,q=p;q
             {
             s=q->m;
             t=q->n;
             u=(q+1)->m;
             v=(q+1)->n;
             if(___(1)___)
             {
             q->m=u;
             ___(2)___
             ___(3)___
             (q+1)->n=t;
             a=1;
             }
             }
             }
             void make(int n)
             {
             int i;
             long a,b,c;
             struct fact *x,*y;
             x=(struct fact *)malloc(sizeof(struct fact)*n);
             x->m=1;
             x->n=1;
             for( a=1,b=1,i=2;i<=n;i++)
             {
             ___(4)___
             a=b;
             b=c;
             (x+(i-1))->m=a;
             (x+(i-1))->n=b;
             }
             ___(5)___
             printf("x%d={/",n,x->m,x->n);
             for(y=x+1;y
             printf(",/",y->m,y->n);
             printf("}\n");
             free(x);
             }
             void main()
             {
             int n;
             printf("input n:");
             scanf("%d",&n);
             make(n);
             }
            試題四(15分,每空3分)
             閱讀以下說(shuō)明和C語(yǔ)言程序,將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             本程序?qū)δ畴姶a文(原文)進(jìn)行加密形成密碼文,其加密算法如下:
             假定原文為C1,C2,C3,…,Cn加密后形成的密文為S1,S2,S3,…,Sn,首先讀入正整數(shù)
             key(key>1)作為加密鑰匙,并將密文字符位置按順時(shí)針?lè)较蜻B成一個(gè)環(huán),如下圖所示:
             加密時(shí)從 S1 位置起順時(shí)針計(jì)數(shù),當(dāng)數(shù)到第 key 個(gè)字符位置時(shí),將原文中的字符放入該密文字符位置中,同時(shí)從環(huán)中除去該字符位置;接著從環(huán)中下一個(gè)字符位置起繼續(xù)計(jì)數(shù),當(dāng)再次數(shù)到第 key 個(gè)字符位置時(shí),將原文中字符 C2 放入其中,并從環(huán)中除去該字符位置;依次類推,直至 n 個(gè)原文字符全部放入密文環(huán)中。由此產(chǎn)生的 S1S2...Sn 即為原文的密文。
             例如,當(dāng) Key=3 時(shí),原文:this is a decoding system 的密文為:
             aotgnhedi ys d imietsnc ss
             當(dāng)Key=4時(shí),該原文的密文為:
             ssdtyd htegiasiscnm e ion
             #include
             #include
             typedef struct node
             { char ch;
             struct node *forward; /* Link to next node. */
             struct node *backward;/* Link to previous node.*/
             } CODE;
             int strlen(char *s)
             { int len = 0;
             while (*s++ != ’\0’ )
             len++;
             return( len );
             }
             char *decode(char *old,int key)
             { char *New; int length,count,i;
             CODE *loop,*p;
             length=strlen(old);
             loop=(CODE *) malloc( length*sizeof(CODE) );
             for ( i = 1;i
             { loop[i].forward = &loop[i+1];
             ___(1)___
             }
             loop[0].backward = &loop[length-1];
             loop[0].forward = &loop[1];
             loop[length-1].forward = loop;
             ___(2)___
             for ( p = loop,i = 0;i
             { for ( count = 1;count
             p= p->forward ;
             ___(3)___
             p->backward->forward = p->forward ;
             p->forward->backward = p->backward ;
             ___(4)___
             }
             New = ( char *)malloc( ( length+1 ) *sizeof(char) );
             for ( i=0;i
             ___(5)___
             New[length]=’\0’;
             return (New);
             }
             void main()
             { char old[256];
             int key , num=0;
             printf("\nPlease input the telegraph: \n");
             while ( num<255 && ( old[num++] = getchar()) != ’\n’ );
             old [ (num==255)?num:num-1] = ’\0’;
             do
             { printf( "\nPlease input Key ( Key>1 ):" );
             scanf("%d",&key);
             } while ( key<=1 );
             printf( "\nThe decode of telegraph:’%s’ is:\n’%s’\n",old,decode( old,key ) );
             }
            試題五(15分,每空3分)
             閱讀以下說(shuō)明及Visual Basic 程序代碼,將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             本程序?qū)崿F(xiàn)如下功能:首先,單擊“生成”按鈕,生成一個(gè)由10個(gè)隨機(jī)大寫字母組成的字
             符串,并在文本框中顯示。然后,單擊“排序”按鈕,將此隨機(jī)字符串中的各個(gè)字母按遞增順序添加
             到列表框中。
             程序運(yùn)行界面如下:
             [程序]
             As String
             Private Sub get_Click()
             Dim i As Integer
             Randomize
             For i = 1 To 10
             str1 = Trim(str1) & Chr(Int( ___(1)___ ))
             Next
             Text1.Text = str1
             End Sub
             Private Sub sort_Click()
             Dim i As Integer
             Dim j As Integer
             For i = 1 To 26
             j = ___(2)___
             Do While j > 0
             ___(3)___
             j = j - 1
             Loop
             Next
             End Sub
             Private Function search(str1 As String, str2 As String) As Integer
             Dim int1 As Integer, int2 As Integer
             int1 = 1
             Do
             int1 = ___(4)___
             If int1 = 0 Then Exit Do
             int2 = int2 + 1
             int1 = int1 + 1
             Loop
             search = ___(5)___
             End Function (
             試題六(15分,每空3分)
             閱讀以下說(shuō)明和C++程序,將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             字符串在程序設(shè)計(jì)中扮演著重要角色?,F(xiàn)需要設(shè)計(jì)字符串基類string,包含設(shè)置字符串、
             返回字符串長(zhǎng)度及內(nèi)容等功能。另有一個(gè)具有編輯功能的串類edit_string,派生于string,在其
             中設(shè)置一個(gè)光標(biāo),使其能支持在光標(biāo)處的插入、刪除操作。
             [程序]
             #include
             #include
             #include
             class string
             {
             int length;
             char *data;
             public:
             int get_length() { return length; }
             char *get_data() { return data; }
             ~string() { delete data; }
             int set_data( int in_length, char *in_data);
             int set_data( char *data );
             void print() { cout<
             };
             class edit_string : public string
             {
             int cursor;
             public:
             int get_cursor() { return cursor; }
             void move_cursor( int dis ) { cursor=dis; }
             int add_data(string *new_data);
             void delete_data( int num );
             };
             int string::set_data( int in_length, char *in_data )
             {
             length=in_length;
             if(!data)
             delete data;
             ___(1)___
             strcpy(data,in_data);
             return length;
             }
             int string::set_data( char *in_data )
             {
             ___(2)___
             if(!data)
             delete data;
             ___(1)___
             strcpy(data,in_data);
             return length;
             }
             int edit_string::add_data( string *new_data )
             {
             int n,k,m;
             char *cp,*pt;
             n=new_data->get_length();
             pt=new_data->get_data();
             cp=this->get_data();
             m=this->get_length();
             char *news = new char[n+m+1];
             for( int i=0; i
             news[i]=cp[i];
             k=i;
             for( int j=0; j
             news[i]=pt[j];
             cursor=i;
             for( j=k; j
             ___(3)___
             news[i]=’\0’;
             ___(4)___
             delete news;
             return cursor;
             }
             void edit_string::delete_data( int num )
             {
             int m;
             char *cp;
             cp=this->get_data();
             m=this->get_length();
             for( int i=cursor; i
             ___(5)___
             cp[i]=’\0’;
             }
             試題七(15分,每空3分)
             閱讀以下說(shuō)明及Visual Basic 程序代碼,將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             設(shè)窗體上有兩個(gè)文本框和一個(gè)按鈕,在第一個(gè)文本框text1中輸入一個(gè)全部由“0”和“1” 組成的字符串,單擊按鈕,在第二個(gè)文本框text2中顯示出給定字符串中連續(xù)的0和連續(xù)的1中連續(xù)字符數(shù)目的值。如果輸入的字符串中有不是“0”和“1”的字符,使用消息框顯示錯(cuò)誤信息。
             運(yùn)行界面如下:
             [程序]
             Private Sub Command1_Click()
             Dim strSource As String
             Dim str1 As String
             Dim result As Integer
             Dim int1 As Integer, num As Integer
             strSource = Text1.Text
             If Len(strSource) = 0 Then
             MsgBox "請(qǐng)?jiān)谖谋究蛑休斎胗?和1組成的字符串"
             Exit Sub
             End If
             For int1 = 1 To Len(strSource)
             ___(1)___
             If str1 <> "1" And str1 <> "0" Then
             MsgBox "不能輸入非0或非1的字符"
             Exit Sub
             End If
             Next
             str1 = ___(2)____
             num = 1
             For int1 = 2 To Len(strSource)
             If str1 = Mid(strSource, int1, 1) Then
             ___(3)___
             Else
             If result < num Then
             result = num
             End If
             str1 = Mid(strSource, int1, 1)
             ___(4)___
             End If
             Next
             If result < num Then
             result = num
             End If
             ___(5)___
             End Sub
             試題八(15分,每空3分)
             閱讀以下說(shuō)明、Java代碼將應(yīng)填入___(n)___處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
             [說(shuō)明]
             IC卡和200卡都是從電話卡派生。下面程序?qū)㈦娫捒ǘx為抽象類。其中balance為雙精度變量,代表電話卡中的余額;cardNumber是長(zhǎng)整型,代表電話卡的卡號(hào);password是整型變量,代表電話卡的密碼;connectNumber是字符串變量,代表電話卡的接入號(hào)碼;connected是布爾變量,代表電話是否接通。
             performDial()實(shí)現(xiàn)各種電話接通后的扣除費(fèi)用的操作。其中200卡每次通話扣除0.5 元的通話費(fèi)用和附加費(fèi)用;IC卡每次通話扣除0.9元的通話費(fèi)。TimeLeft()方法用于測(cè)試電話卡余額還可以撥打電話的次數(shù)。performConnection()用于電話接入操作,如果卡號(hào)和密碼正確,則接通,否則,接不通。
             [程序]
             abstract class PhoneCard
             {
             double balace;
             ___(1)___ performDial();
             double getBalance()
             { return balance; }
             double TimeLeft()
             {
             double current=balance;
             int times=0;
             do
             {
             ___(2)___
             times++;
             }while(balance>=0);
             balance=current;
             return times-1;
             }
             }
             abstract class Number_PhoneCard extends PhoneCard
             {
             long cardNumber;
             int password;
             String connectNumber;
             Boolean connected;
             Boolean performConnection( long cn, int pw )
             {
             if( cn==cardNumber && ___(3)___ )
             {
             connected=true;
             return true;
             }
             else return false;
             }
             }
             class IC_Card ___(4)___
             {
             boolean performDial()
             {
             if(balance>0.9)
             {
             balance-=0.9;
             return true;
             }
             else return false;
             }
             }
             class D200_Card ___(4)___
             {
             static double additoryFee;
             static{ additoryFee=0.1; }
             boolean performDial()
             {
             if(balance>(0.5+additoryFee))
             {
             ___(5)___
             return true;
             }
             else return false;
             }
             }