以下是應屆畢業生考試網小編為大家準備的2017年計算機二級考試C語言考前預測上機複習題及解析,更多計算機等級考試內容請關注應屆畢業生考試網。
一、程式填空題
給定程式的功能是計算score中m個人的平均成績aver,將低於aver的成績放在below中,通過函式名返回人數。
例如,當score=(10,20,30,40,50,60,70,80,90},m= 9時,函式返回的人數應該是4,below={10,20,30,40}。
注意:部分源程式給出如下。
請勿改動main()函式和其他函式中的任何內容,僅在橫線上填入所編寫的若干表示式或語句。
試題程式:
#include
#include%string.h>
int fun(int score[],int m,int below[])
{
int i,j=0;
float aver=0.0;
for(i=0;i aver+=score[i]:
aver/=(float)m:
for(i=0;i if(score[i] below[j++]= 【1】 ;
return j;
}
void main()
{
int i,n,below[9];
int score[9]={10,20,30,40,50,60,70,80,90);
n=fun(score,9, 【2】);
printf("n Below the average score are:%dn",n);
for(i=0;i printf("%d", 【3】 );
}
二、程式改錯題
下列給定程式中函式fun()的功能是:用遞迴演算法計算斐波拉契數列中第n項的值。從第1項起,斐波拉契數列為:1,1,2,3,5,8,13,21,…
例如,若給n輸入7.則該項的.斐波拉契數值為l3。
請改正程式中的錯誤,使它能得出正確結果。
注意:不要改動main()函式,不得增行或刪行,也不得更改程式的結構!
試題程式:
#include
long fun(int g)
{
//****found****
switch(g);
{
case 0:return 0;
//****found****
case 1:case 2:return 1;
}
return(fun(g-1)+fun(g-2));
}
void main()
{
long fib;int n;
printf("Input n:");
scanf("%d",&n);
printf("n=%dn",n);
fib=fun(n):
printf("fib=%dnn",fib);
}
三、程式設計題
請編寫函式proc(),其功能是:將str所指字串中下標為偶數的字元刪除,串中剩餘字元形成的新串放在t所指陣列中。
例如,當str所指字串中的內容為abedefg,則在t所指陣列中的內容應是bdf。
注意:部分源程式給出如下。
請勿改動main()函式和其他函式中的任何內容,僅在函式proc()的花括號中填入所編寫的若干語句。
試題程式:
#include
#include
#include
#include
void proc(char*str,char t[])
{
}
void main()
{
char str[100],t[100];
system("CLS");
printf("nPlease enter string str:");
scanf("%s",str);
proc(str,t);
printf("nThe result is:%sn",t);
}
上機考試試題答案與解析
一、程式填空題
【1】score[i]或*(score+i)【2】below【3】below[i]或*(below+i)
【解析】fun()函式的功能是返回低於平均成績的人數,通過for迴圈遍歷陣列score,求和存入變數aver,然後計算出平均值。第二個迴圈將低於平均成績的資料賦值陣列b,因此第【1】處填“score[1]”或“*(score+i)”;在主函式中呼叫函式fun()時,最後一個引數應填入陣列名blew,即將低分考生資料存入陣列blew中,然後語句“printf("n Be—low the average score are:%d"n);”輸出低分考生個數,n 值即fun()函式返回值也就是低分考生的人數值。最後,利用迴圈輸出below中的結果。
二、程式改錯題
(1)錯誤:switch(g);
正確:switch(g)
(2)錯誤:case 1:case2:return 1;
正確:case 1;case 2:return 1;
【解析】此題考查c語言的語法規則,switch(表示式)後不應該帶有“;”,case語句常量後應該是“:”。switch語句的一般形式如下:
switch(表示式){
case常量表達式1:語句1;
case常量表達式2:語句2;
case常量表達式n:語句n;
defauh:語句n+1;
}
三、程式設計題
void proc(char*str,char t[])
{
int i,j=0,k=strlen(str); //k是放字串的K度的變數
for(i=l;i t[j++]=str[i]; //把下標為奇數的數放到t陣列中
t[j]=’