2013計算機二級C語言上機練習題及答案(10)

字號:

為大家收集整理了《2013計算機二級C語言上機練習題及答案(10)》供大家參考,希望對大家有所幫助!?。?BR>    第一題:給定程序功能是用選擇排序法對6個字符串進行排序。
    請勿改動主函數main和其他函數中的任何內容,僅在fun函數的橫線上填入所編寫的若干表達式或語句。
    #include
    #include
    #define MAXLINE 20
    fun(char *pstr[6])
    {
    int i, j;
    char *p;
    for (i=0; i<5; i++)
    for (j=i+1; j<6; j++)
    if (strcmp(*(pstr+i), ___1___) > 0)
    {
    p = *(pstr+i);
    pstr[i] = ___2___;
    *(pstr + j) = ___3___;
    }
    }
    main()
    {
    int i;
    char *pstr[6], str[6][MAXLINE];
    for (i=0; i<6; i++)
    pstr[i] = str[i];
    printf("\nEnter 6 string(1 string at each line): \n");
    for (i=0; i<6; i++)
    scanf("%s", pstr[i]);
    fun(pstr);
    printf("The strings after sorting:\n");
    for (i=0; i<6; i++)
    printf("%s\n", pstr[i]);
    }
    參考答案:
    第一題:第一空:*(pstr+j)or pstr[j]
    第二空:pstr[j] or *(pstr+j)
    第三空:p
    第二題:下列給定程序中,函數fun 功能是:從整數1到55之間,選出能被3整除、且有一位上的數是5的那些數,并把這些數放在b所指的數組中,這些數作為函數值返回。規(guī)定,函數中a1放個位數,a2放十位數。
    請改正程序中的錯誤,使程序能得出正確的結果。
    注意:不要改動main函數,不得增行或刪行,也不得更改程序的結構!
    #include
    /********found********/
    int fun( int *b );
    {
    int k, a1, a2, i = 0;
    /********found********/
    for (k=10; k<=55; k++)
    {
    a2 = k/10;
    a1 = k - a2*10;
    if ((k%3==0 && a2==5) || (k%3==0 && a1==5))
    {
    b[i] = k;
    i++;
    }
    }
    /********found********/
    return k;
    }
    main()
    {
    int a[100], k, m;
    m = fun(a);
    printf("The result is:\n");
    for (k=0; k
    printf("%4d", a[k]);
    printf("\n");
    }
    參考答案:
    第二題:第一處:int fun(int *b);應改為int fun(int *b)
    第二處:for(k=10;k<=55;k++)應改為for(k=1;k<55;k++)
    第三處:return k;應改為return I;
    第三題:編寫函數fun,它的功能是:計算并輸出下列級數和:
    例如,當n=10時,函數值為0。909091。
    請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填入所編寫的若干語句。
    #include
    #include
    double fun( int n )
    {
    }
    main()
    {
    int i;
    FILE *out;
    printf("%f\n",fun(10));
    out=fopen ("out.dat", "w");
    for (i = 5; i < 10; i++)
    fprintf(out, "%f\n", fun(i));
    fclose (out );
    }
    參考答案:
    第三題:double fun(int n)
    {double s=0.0;
    int i;
    for(i=1;i<=n;i++)
    s=s+1.0/(i*(i+1));
    rerurn s;
    }