- 相關(guān)推薦
計算機二級C語言上機模擬試題及解題思路
隨著2017年上半年計算機等級考試的臨近,百分網(wǎng)小編為大家整理了2017計算機二級C語言上機模擬試題及解題思路,更多計算機等級考試信息請關(guān)注應(yīng)屆畢業(yè)生考試網(wǎng)。
填空題
給定程序中,函數(shù)fun的功能是:在形參ss所指字符串數(shù)組中,將所有串長超過k的字符串中右邊的字符刪除,只保留左邊的k個字符。ss所指字符串數(shù)組中共有N個字符串,且串長小于M。 請在程序的下劃線處填入正確的內(nèi)容并把下劃線刪除, 使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#include
#include
#define N 5
#define M 10
void fun(char (*ss) __1__, int k)
{ int i=0 ;
while(i< __2__) {
ss[i][k]=__3__; i++; }
}
main()
{ char x[N][M]={"Create","Modify","Sort","skip","Delete"};
int i;
printf("\nThe original string\n\n");
for(i=0;i
fun(x,4);
printf("\nThe string after deleted :\n\n");
for(i=0; i
}
解題思路:
本題是根據(jù)給定的字符串數(shù)組中刪除串長大于某個值的右邊字符串。
第一處:函數(shù)的定義,試題中已用M作為字符串的長度,所以應(yīng)填:M。
第二處:利用while循環(huán),分別對字符串數(shù)組中的每個字符串置字符串結(jié)束符,程序中已經(jīng)給定了N個字符串,所以應(yīng)填:N。
第三處:置字符串結(jié)束符,所以應(yīng)填:0(或'\0')。
改錯題
給定程序MODI1.C中函數(shù)fun的功能是:根據(jù)以下公式求π值,并作為函數(shù)值返回。
例如,給指定精度的變量eps輸入0.0005時,應(yīng)當輸出Pi=3.140578。
π 1 1 2 1 2 3 1 2 3 4
─=1+ ─ + ─×─ + ─×─×─ + ─×─×─×─+……
2 3 3 5 3 5 7 3 5 7 9
請改正程序中的錯誤,使它能得出正確結(jié)果。
注意:不要改動main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。
給定源程序:
#include
#include
double fun(double eps)
{ double s,t; int n=1;
s=0.0;
t=0;
while( t>eps)
{ s+=t;
t=t * n/(2*n+1);
n++;
}
return(s);
}
main()
{ double x;
printf("\nPlease enter a precision: "); scanf("%lf",&x);
printf("\neps=%lf, Pi=%lf\n\n",x,fun(x));
}
解題思路:
第一處: 初始化t的值,根據(jù)程序中的計算程序和試題的要求得出,t應(yīng)為1。
第二處: 根據(jù)公式π/2得出,所以返回時應(yīng)原有s的基礎(chǔ)上乘以2作為返回值。
編程題
假定輸入的字符串中只包含字母和*號。請編寫函數(shù)fun,它的功能是:使字符串的前導*號不得多于n個;若多于n個,則刪除多余的*號; 若少于或等于n個,則什么也不做,字符串中間和尾部的*號不刪除。函數(shù)fun中給出的語句僅供參考。例如,字符串中的內(nèi)容為:*******A*BC*DEF*G****,若n的值為4,刪除后,
字符串中的內(nèi)容應(yīng)當是:****A*BC*DEF*G****;若n的值為8,則字符串中的內(nèi)容仍
為:*******A*BC*DEF*G****。n的值在主函數(shù)中輸入。 在編寫函數(shù)時,不得使用C語言提供的字符串函數(shù)。
注意: 部分源程序在文件PROG1.C文件中。
請勿改動主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號中填入
你編寫的若干語句。
給定源程序:
#include
void fun( char *a, int n )
{
int i=0,j,k=0;
while(a[k]=='*') k++; /* k為統(tǒng)計*字符個數(shù) */
if(k>n)
{
i=n;j=k;
/* 以下完成將下標為k至串尾的字符前移k-n個位置 */
}
}
main()
{ char s[81]; int n;
printf("Enter a string:\n");gets(s);
printf("Enter n : ");scanf("%d",&n);
fun( s,n );
printf("The string after deleted:\n");puts(s);
NONO();
}
解題思路:
本題是考察字符串的操作。
利用for循環(huán)來判斷a[j]的字符是否是字符串結(jié)束符,如果不是字符串結(jié)束符,則把a[j]
的字符依次存放到a[i]。其中,變量i是n的初始值,變量j是字符串前導的*號數(shù)。
參考答案:
void fun( char *a, int n )
{
int i=0,j,k=0;
while(a[k]=='*') k++; /* k為統(tǒng)計*字符個數(shù) */
if(k>n)
{
i=n;j=k;
/* 以下完成將下標為k至串尾的字符前移k-n個位置 */
for(; a[j] !=0 ; j++)
a[i++]=a[j];
a[i] = 0;
}
}
【計算機二級C語言上機模擬試題及解題思路】相關(guān)文章:
計算機二級C語言上機模擬題02-14
計算機二級C語言上機沖刺試題及答案05-26
計算機二級C語言模擬試題03-20
計算機二級C語言上機精選模擬題及答案03-22
計算機二級《C語言》上機操作試題及答案06-02