2016年計(jì)算機(jī)軟件水平考試程序員精選模擬試題

字號(hào):


    試題一 閱讀下列說(shuō)明、流程圖和算法,將應(yīng)填入 n 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
    [流程圖說(shuō)明]
    下面的流程圖用N-S盒圖形式描述了在一棵排序二叉樹中查找元素的過(guò)程,節(jié)點(diǎn)有三個(gè)成員:data,left,right。其查找的方法是:首先與樹的根節(jié)點(diǎn)的元素值進(jìn)行比較:若相等則找到,返回此結(jié)點(diǎn)的地址;若要查找的元素小于根節(jié)點(diǎn)的元素值,則指針指向此結(jié)點(diǎn)的左子樹,繼續(xù)查找;若要查找的元素大于根節(jié)點(diǎn)的元素值,則指針指向此結(jié)點(diǎn)的游子樹,繼續(xù)查找。直到指針為空,表示此樹中不存在所要查找的元素。
    [算法說(shuō)明]
    將上題的排序二叉樹中查找元素的過(guò)程用遞歸的方法實(shí)現(xiàn)。其中NODE是自定義類型:
    typedef struct node {
    int data;
    struct node *left;
    struct node *right;
    } NODE;
    [算法]
    NODE *SearchSortTree(NODE *tree,int e) {
    if(tree != NULL)
    { if (tree->data < e)
    (4) ; //小于查找左子樹
    else if (tree->data < e)
    (5) ;//大于查找左子樹
    else return tree;
    }
    return tree;
    }
    試題二
    閱讀下列函數(shù)說(shuō)明和C函數(shù),將應(yīng)填入 n 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
    [函數(shù)2.1說(shuō)明]
    函數(shù)strcat(char s[], char t[])的功能是:將字符串t復(fù)制連接字符串s的尾部,并返回新字符串的首地址作為函數(shù)值。例如:若s=“abcd”,t=“efg”,則新字符串應(yīng)該是“abcdefg”。
    [函數(shù)2.1]
    char *strcat(char s[], char t[])
    { char *p;
    p = s + strlen(s)-1
    while( (1) ) {
    (2) ;
    }
    *p = ‘\0’;
    return s;
    }
    [函數(shù)2.2說(shuō)明]
    函數(shù)f(char *str, char del)的功能是:將非空字符串str中的指定字符del刪除,形成一個(gè)新字符串仍存放在str所指內(nèi)存單元中。
    例如若str的值為“33123333435”,del的值為‘3’,調(diào)用此函數(shù)后,新字符串為:“1245”。
    [函數(shù)2.2]
    void f(char *str, char del)
    {
    int i, j, len;
    len=strlen(str);
    i=j=0;
    while(i
    if ( (3) )
    (4) = str[i];
    i++;
    }
    (5) ;
    }
    試題三
    閱讀以下說(shuō)明和C代碼,將應(yīng)填入 n 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
    [說(shuō)明]
    下面程序中函數(shù)fun的功能是:在含有10 個(gè)元素的s數(shù)組中查找數(shù),及數(shù)所在位置(即,下標(biāo)值),數(shù)可能不止一個(gè)。數(shù)作為函數(shù)值返回,數(shù)的個(gè)數(shù)通過(guò)指針變量n傳回,所在位置由數(shù)組pos傳回。
    例如:
    若輸入 2 8 5 7 8 4 5 3 2 8
    則應(yīng)輸出:
    The max: 8
    Total: 3 //數(shù)出現(xiàn)次數(shù)
    The positions: 1 4 9
    #include
    #define M 10
    int fun(int *a, int *n, int pos[])
    { int i, k, max=-32767;
    (1)
    for(i=0; i
    if( (2) ) max=a[i];
    for(i=0; i
    if( (3) ) pos[k++]=i;
    *n=k;
    return max;
    }
    main()
    { int a[M], pos[M], i=0, j, n;
    printf("Enter 10 number :");
    for(i=0; i
    j=fun( (5) );
    printf("The max: %d\n", j);
    printf("Total: %d",n);
    printf("The position:");
    for(i=0; i
    printf("\n");
    }
    試題四 (試題四和試題五選做一題)
    閱讀下列函數(shù)說(shuō)明和C函數(shù),將應(yīng)填入 n 處的字句寫在答題紙的對(duì)應(yīng)欄內(nèi)。
    [函數(shù)說(shuō)明]
    函數(shù)ReadDat()實(shí)現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串?dāng)?shù)組dat中(第行字符串長(zhǎng)度均小于80)。請(qǐng)編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對(duì)字符串按給定的條件進(jìn)行排序,排序后的結(jié)果仍按行重新存入字符串?dāng)?shù)組dat中,最后調(diào)用函數(shù)WriteDat()把結(jié)果dat輸出到文件out.dat中。
    條件:從字符串中間一分為二,右邊部分按字符的ASCII值降序排序,排序后左邊部分與右邊部分進(jìn)行交換。如果原字符串長(zhǎng)度為奇數(shù),則最中間的字符不參加排序,字符仍放在原位置上。
    例如:位置    0 1 2 3 4 5 6 7
    源字符串  h g f e a b c d
    則處理后字符串 d c b a h g f e
    部分源程序已給出。
    請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。
    #include
    #include
    char dat[20][80];
    void jsSort()
    { int i,j,k,strl;
    char ch;
    for(i=0;i<20;i++)
    { strl=strlen(dat[i]);
    for(j= (1) ;j
    for(k=j+1;k
    if( (2) )
    {
    ch=dat[i][j];
    dat[i][j]=dat[i][k];
    dat[i][k]=ch;
    }
    for(j=0; (3) ;j++)
    {
    ch=dat[i][j];
    dat[i][j]=dat[i][(strl+1)/2+j];
    dat[i][(strl+1)/2+j]=ch;
    }
    }
    }
    readDat()
    { FILE *in;
    int i=0;
    char *p;
    (4) ;
    while(i<20&&fgets(dat[i],80,in)!=NULL)
    { p=strchr(dat[i],’\n’);
    if(p)*p=0;
    i++;
    }
    fclose(in);
    }
    writeDat()
    { FILE *out;
    int i;
    out=fopen(“out.dat”,”w”);
    for(i=0;i<20;i++)
    { printf(“%s\n” ,dat[i]);
    fprintf( (5) );
    }
    fclose(out);
    }
    void main()
    { readDat();
    jsSort();
    writeDat();
    }