2016年計算機軟件水平考試程序員精選模擬試題

字號:


    試題一 閱讀下列說明、流程圖和算法,將應填入 n 處的字句寫在答題紙的對應欄內(nèi)。
    [流程圖說明]
    下面的流程圖用N-S盒圖形式描述了在一棵排序二叉樹中查找元素的過程,節(jié)點有三個成員:data,left,right。其查找的方法是:首先與樹的根節(jié)點的元素值進行比較:若相等則找到,返回此結點的地址;若要查找的元素小于根節(jié)點的元素值,則指針指向此結點的左子樹,繼續(xù)查找;若要查找的元素大于根節(jié)點的元素值,則指針指向此結點的游子樹,繼續(xù)查找。直到指針為空,表示此樹中不存在所要查找的元素。
    [算法說明]
    將上題的排序二叉樹中查找元素的過程用遞歸的方法實現(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ù)說明和C函數(shù),將應填入 n 處的字句寫在答題紙的對應欄內(nèi)。
    [函數(shù)2.1說明]
    函數(shù)strcat(char s[], char t[])的功能是:將字符串t復制連接字符串s的尾部,并返回新字符串的首地址作為函數(shù)值。例如:若s=“abcd”,t=“efg”,則新字符串應該是“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說明]
    函數(shù)f(char *str, char del)的功能是:將非空字符串str中的指定字符del刪除,形成一個新字符串仍存放在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) ;
    }
    試題三
    閱讀以下說明和C代碼,將應填入 n 處的字句寫在答題紙的對應欄內(nèi)。
    [說明]
    下面程序中函數(shù)fun的功能是:在含有10 個元素的s數(shù)組中查找數(shù),及數(shù)所在位置(即,下標值),數(shù)可能不止一個。數(shù)作為函數(shù)值返回,數(shù)的個數(shù)通過指針變量n傳回,所在位置由數(shù)組pos傳回。
    例如:
    若輸入 2 8 5 7 8 4 5 3 2 8
    則應輸出:
    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ù)說明和C函數(shù),將應填入 n 處的字句寫在答題紙的對應欄內(nèi)。
    [函數(shù)說明]
    函數(shù)ReadDat()實現(xiàn)從文件in.dat中讀取20行數(shù)據(jù)存放到字符串數(shù)組dat中(第行字符串長度均小于80)。請編制函數(shù)jsSort(),其函數(shù)的功能是:以行為單位對字符串按給定的條件進行排序,排序后的結果仍按行重新存入字符串數(shù)組dat中,最后調(diào)用函數(shù)WriteDat()把結果dat輸出到文件out.dat中。
    條件:從字符串中間一分為二,右邊部分按字符的ASCII值降序排序,排序后左邊部分與右邊部分進行交換。如果原字符串長度為奇數(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
    部分源程序已給出。
    請勿改動主函數(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();
    }