為大家收集整理了《2013計(jì)算機(jī)二級C語言上機(jī)練習(xí)題及答案(7)》供大家參考,希望對大家有所幫助!??!
程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。函數(shù)fun的功能是輸出這位學(xué)生的信息。
請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
typedef struct
{ int num;
char name[9];
char sex;
struct { int year,month,day ;} birthday;
float score[3];
}STU;
void show(STU ___1___)
{ int i;
printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
printf("%5.1f", ___2___);
printf("\n");
}
main( )
{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
printf("\nA student data:\n");
show(___3___);
}
解題思路:
本題是利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。
第一處:tt變量在函數(shù)體fun已經(jīng)使用,所以應(yīng)填:tt。
第二處:利用循環(huán)分別輸出學(xué)生的成績數(shù)據(jù),所以應(yīng)填:tt.score[i]。
第三處:函數(shù)的調(diào)用,所以應(yīng)填:std。
給定程序MODI1.C中函數(shù) fun 的功能是:求出數(shù)組中數(shù)和次數(shù),并把數(shù)和a[0]中的數(shù)對調(diào)、次數(shù)和a[1]中的數(shù)對調(diào)。請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 20
int fun ( int * a, int n )
{ int i, m, t, k ;
for(i=0;i<2;i++) {
m=0;
for(k=i+1;k if(a[k]>a[m]) k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
main( )
{ int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;
for ( i=0; i fun ( b, n );
for ( i=0; i }
解題思路:
第一處:外循環(huán)每循環(huán)一次,把當(dāng)前位置i賦值給m,所以應(yīng)改為:m=i;。
第二處:通過內(nèi)循環(huán)來找出的一個數(shù)的位置k,所以應(yīng)改為:if(a[k]>a[m]) m=k;。
請編寫一個函數(shù) unsigned fun ( unsigned w ),w 是一個大于10的無符 號整數(shù),若 w 是 n (n ≥ 2)位的整數(shù),函數(shù)求出w的低 n-1位的數(shù)作為函數(shù)值返回。
例如:w 值為 5923,則函數(shù)返回 923; w 值為 923 則函數(shù)返回 23。
注意: 部分源程序存在文件PROG1.C中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
unsigned fun ( unsigned w )
{
}
main( )
{ unsigned x;
printf ( "Enter a unsigned integer number : " ); scanf ( "%u", &x );
printf ( "The original data is : %u\n", x );
if ( x < 10 ) printf ("Data error !");
else printf ( "The result : %u\n", fun ( x ) );
NONO( );
}
解題思路:
本題是考察考生怎樣獲取一個符合要求的無符號整數(shù)。本題是應(yīng)用if條件語句首先判斷給出的數(shù)是幾位數(shù),再模相應(yīng)的值,最后得出的余數(shù)就是結(jié)果。
參考答案:
unsigned fun ( unsigned w )
{
if(w>10000) w %= 10000 ;
else if(w>1000) w %= 1000 ;
else if(w>100) w %= 100 ;
else if(w>10) w %=10 ;
return w ;
}
程序通過定義并賦初值的方式,利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。函數(shù)fun的功能是輸出這位學(xué)生的信息。
請?jiān)诔绦虻南聞澗€處填入正確的內(nèi)容并把下劃線刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
typedef struct
{ int num;
char name[9];
char sex;
struct { int year,month,day ;} birthday;
float score[3];
}STU;
void show(STU ___1___)
{ int i;
printf("\n%d %s %c %d-%d-%d", tt.num, tt.name, tt.sex,
tt.birthday.year, tt.birthday.month, tt.birthday.day);
for(i=0; i<3; i++)
printf("%5.1f", ___2___);
printf("\n");
}
main( )
{ STU std={ 1,"Zhanghua",'M',1961,10,8,76.5,78.0,82.0 };
printf("\nA student data:\n");
show(___3___);
}
解題思路:
本題是利用結(jié)構(gòu)體變量存儲了一名學(xué)生的信息。
第一處:tt變量在函數(shù)體fun已經(jīng)使用,所以應(yīng)填:tt。
第二處:利用循環(huán)分別輸出學(xué)生的成績數(shù)據(jù),所以應(yīng)填:tt.score[i]。
第三處:函數(shù)的調(diào)用,所以應(yīng)填:std。
給定程序MODI1.C中函數(shù) fun 的功能是:求出數(shù)組中數(shù)和次數(shù),并把數(shù)和a[0]中的數(shù)對調(diào)、次數(shù)和a[1]中的數(shù)對調(diào)。請改正程序中的錯誤,使它能得出正確的結(jié)果。
注意:不要改動 main 函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#define N 20
int fun ( int * a, int n )
{ int i, m, t, k ;
for(i=0;i<2;i++) {
m=0;
for(k=i+1;k if(a[k]>a[m]) k=m;
t=a[i];a[i]=a[m];a[m]=t;
}
}
main( )
{ int x, b[N]={11,5,12,0,3,6,9,7,10,8}, n=10, i;
for ( i=0; i fun ( b, n );
for ( i=0; i }
解題思路:
第一處:外循環(huán)每循環(huán)一次,把當(dāng)前位置i賦值給m,所以應(yīng)改為:m=i;。
第二處:通過內(nèi)循環(huán)來找出的一個數(shù)的位置k,所以應(yīng)改為:if(a[k]>a[m]) m=k;。
請編寫一個函數(shù) unsigned fun ( unsigned w ),w 是一個大于10的無符 號整數(shù),若 w 是 n (n ≥ 2)位的整數(shù),函數(shù)求出w的低 n-1位的數(shù)作為函數(shù)值返回。
例如:w 值為 5923,則函數(shù)返回 923; w 值為 923 則函數(shù)返回 23。
注意: 部分源程序存在文件PROG1.C中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入你編寫的若干語句。
給定源程序:
#include
unsigned fun ( unsigned w )
{
}
main( )
{ unsigned x;
printf ( "Enter a unsigned integer number : " ); scanf ( "%u", &x );
printf ( "The original data is : %u\n", x );
if ( x < 10 ) printf ("Data error !");
else printf ( "The result : %u\n", fun ( x ) );
NONO( );
}
解題思路:
本題是考察考生怎樣獲取一個符合要求的無符號整數(shù)。本題是應(yīng)用if條件語句首先判斷給出的數(shù)是幾位數(shù),再模相應(yīng)的值,最后得出的余數(shù)就是結(jié)果。
參考答案:
unsigned fun ( unsigned w )
{
if(w>10000) w %= 10000 ;
else if(w>1000) w %= 1000 ;
else if(w>100) w %= 100 ;
else if(w>10) w %=10 ;
return w ;
}