為大家收集整理了《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;
}
填空題
給定程序中,函數(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;
}