2013計(jì)算機(jī)二級(jí)C語言上機(jī)練習(xí)題及答案(21)

字號(hào):

為大家收集整理了《2013計(jì)算機(jī)二級(jí)C語言上機(jī)練習(xí)題及答案(21)》供大家參考,希望對(duì)大家有所幫助?。?!
    填空題
    給定程序中,函數(shù)fun的功能是:計(jì)算形參x所指數(shù)組中N個(gè)數(shù)的平均值(規(guī)定所有數(shù)均為正數(shù)),將所指數(shù)組中大于平均值的數(shù)據(jù)移至數(shù)組的前部,小于等于平 均值的數(shù)據(jù)移至x所指數(shù)組的后部,平均值作為函數(shù)值返回,在主函數(shù)中輸出平均值和移動(dòng)后的數(shù)據(jù)。
    例如,有10個(gè)正數(shù):46 30 32 40 6 17 45 15 48 26,平均值為:
    30.500000
    移動(dòng)后的輸出為:46 32 40 45 48 30 6 17 15 26
    請(qǐng)?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
    注意:源程序存放在考生文件夾下的BLANK1.C中。
    不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    給定源程序:
    #include
    #include
    #define N 10
    double fun(double *x)
    { int i, j; double s, av, y[N];
    s=0;
    for(i=0; i
    av=__1__;
    for(i=j=0; i
    if( x[i]>av ){
    y[__2__]=x[i]; x[i]=-1;}
    for(i=0; i
    if( x[i]!= __3__) y[j++]=x[i];
    for(i=0; i
    return av;
    }
    main()
    { int i; double x[N];
    for(i=0; i
    printf("\nThe average is: %f\n",fun(x));
    printf("\nThe result :\n",fun(x));
    for(i=0; i
    }
    解題思路:
    第一處:計(jì)算N個(gè)數(shù)的平均值,所以應(yīng)填:s/N。
    第二處:利用for循環(huán)語句,把數(shù)組x中大于平均值的數(shù),依次存放到數(shù)組y中,同時(shí)把數(shù)組x上的該數(shù)置為-1,其中位置由變量j來控制,所以應(yīng)填:j++。
    第三處:再利用循環(huán)把不是-1的數(shù),依次仍存放到數(shù)組y中,所以應(yīng)填:-1。
    改錯(cuò)題
    給定程序MODI1.C的功能是:讀入一個(gè)英文文本行,將其中每個(gè)單詞的第一個(gè)字母改成大寫,然后輸出此文本行(這里的“單詞”是指由空格隔開的字符串)。
    例如,若輸入:I am a student to take the examination.,
    則應(yīng)輸出:I Am A Student To Take The Examination.。
    請(qǐng)改正程序中的錯(cuò)誤,使程序能得出正確的結(jié)果。
    注意:不要改動(dòng) main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
    給定源程序:
    #include
    #include
    include
    upfst ( char p )
    { int k=0;
    for ( ; *p; p++ )
    if ( k )
    { if ( *p == ' ' ) k = 0; }
    else if ( *p != ' ' )
    { k = 1; *p = toupper( *p ); }
    }
    main( )
    { char chrstr[81];
    printf( "\nPlease enter an English text line: " ); gets( chrstr );
    printf( "\n\nBefore changing:\n %s", chrstr );
    upfst( chrstr );
    printf( "\nAfter changing:\n %s\n", chrstr );
    }
    解題思路:
    第一處:包含頭文件的標(biāo)識(shí)錯(cuò)誤,在include前漏寫了#。
    第二處:由于傳入的參數(shù)是字符串,所以應(yīng)為upfst(char *p)。
    編程題
    程序定義了N×N的二維數(shù)組,并在主函數(shù)中賦值。請(qǐng)編寫函數(shù)fun,函數(shù)的功能是:求出數(shù)組周邊元素的平均值并作為函數(shù)值返給主函數(shù)中的s。
    例如:a 數(shù)組中的值為
    |0 1 2 7 9|
    |1 9 7 4 5|
    a = |2 3 8 3 1|
    |4 5 6 8 2|
    |5 9 1 4 1|
    則返回主程序后s的值應(yīng)為: 3.375。
    注意: 部分源程序存在文件PROG1.C文件中。
    請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫的若干語句。
    給定源程序:
    #include
    #include
    #define N 5
    double fun ( int w[][N] )
    { 考試大論壇
    }
    main ( )
    { int a[N][N]={0,1,2,7,9,1,9,7,4,5,2,3,8,3,1,4,5,6,8,2,5,9,1,4,1};
    int i, j;
    double s ;
    printf("***** The array *****\n");
    for ( i =0; i
    { for ( j =0; j
    { printf( "%4d", a[i][j] ); }
    printf("\n");
    }
    s = fun ( a );
    printf ("***** THE RESULT *****\n");
    printf( "The sum is : %lf\n",s );
    NONO( );
    }
    解題思路:
    本題是統(tǒng)計(jì)二維數(shù)組周邊元素值的平均值,但要注意的是不要重復(fù)計(jì)算四個(gè)角上的元素值。
    參考答案:
    double fun ( int w[][N] )
    {
    int i, j, n=0;
    double sum=0;
    for ( i =0; i
    sum+=w[0][i]+w[N-1][i]; n+=2;
    }
    for ( i =1; i
    sum +=w[i][0]+w[i][N-1];
    n+=2;
    }
    return sum/n;
    }