當前位置:才華齋>計算機>C語言>

計算機二級C語言上機複習題及答案解析

C語言 閱讀(1.46W)

為了提高大家複習計算機等級考試的積極性,應屆畢業生考試網小編整理了計算機二級C語言上機復習題及答案解析,助大家備考計算機二級考試。

計算機二級C語言上機複習題及答案解析

  填空題

給定程式中,函式fun的功能是:在形參ss所指字串陣列中,查詢含有形參substr所指子串的所有字串並輸出,若沒找到則輸出相應資訊。ss所指字串陣列中共有N個字串,且串長小於M。程式中庫函式strstr(s1, s2)的功能是在 s1串中查詢s2子串,若沒有,函式值為0,若有,為非0。

請在程式的下劃線處填入正確的內容並把下劃線刪除, 使程式得出正確的結果。

注意:源程式存放在考生資料夾下的BLANK1.C中。

不得增行或刪行,也不得更改程式的結構!

給定源程式:

#include

#include

#define N 5

#define M 15

void fun(char (*ss)[M], char *substr)

{ int i,find=0;

for(i=0; i< __1__ ; i++)

if( strstr(ss[i], __2__) != NULL )

{ find=1; puts(ss[i]); printf("n"); }

if (find==__3__) printf("nDon't found!n");

}

main()

{ char x[N][M]={"BASIC","C langwage","Java","QBASIC","Access"},str[M];

int i;

printf("nThe original stringnn");

for(i=0;i  printf("nEnter a string for search : "); gets(str);

fun(x,str);

}

解題思路:

本題是根據給定的字串陣列中查詢指定的字串,如果存在,則顯示。

第一處:利用for迴圈,從幾個字串中進行查詢,程式中已經給定了N個字串,所以應填:N。

第二處:查詢子串,子串由形參substr傳遞,所以應填:substr。

第三處:試題要求,若沒有找到,函式值為0,所以應填:0。

  改錯題

給定程式MODI1.C中函式fun的功能是:求三個數的最小公倍數。

例如,給主函式中的變數x1、x2、x3分別輸入15 11 2,

則輸出結果應當是:330。

請改正程式中的錯誤,使它能得出正確結果。

注意:不要改動main函式,不得增行或刪行,也不得更改程式的結構。

給定源程式:

#include

fun(int x, y, z )

{ int j,t ,n ,m;

j = 1 ;

t=j%x;

m=j%y ;

n=j%z;

while(t!=0||m!=0||n!=0)

{ j = j+1;

t=j%x;

m=j%y;

n=j%z;

}

return i;

}

main( )

{ int x1,x2,x3,j ;

printf("Input x1 x2 x3: "); scanf("%d%d%d",&x1,&x2,&x3);

printf("x1=%d, x2=%d, x3=%d n",x1,x2,x3);

j=fun(x1,x2,x3);

printf("The minimal common multiple is : %dn",j);

}

解題思路:

第一處: 函式中形參的.定義不正確,應改為:fun(int x,int y, int z)。

第二處: 程式中三個數的最小公倍數是用j處理的,所以應返回j的值。

  程式設計題

假定輸入的字串中只包含字母和*號。請編寫函式fun,它的功能是:只刪除字串前導和尾部的*號,串中字母之間的*號都不刪除。形參n給出了字串的長度, 形參h給出了字串中前導*號的個數,形參e給出了字串中最後*號的個數。在編寫函式時,不得使用C語言提供的字串函式。

例如,字串中的內容為:****A*BC*DEF*G*******,刪除後,字串中的內容應當是:A*BC*DEF*G。

注意: 部分源程式在檔案PROG1.C檔案中。

請勿改動主函式main和其它函式中的任何內容,僅在函式fun的花括號中填入你編寫的若干語句。

給定源程式:

#include

void fun( char *a, int n,int h,int e )

{

}

main()

{ char s[81],*t,*f; int m=0, tn=0, fn=0;

printf("Enter a string:n");gets(s);

t=f=s;

while(*t){t++;m++;}

t--;

while(*t=='*'){t--;tn++;}

while(*f=='*'){f++;fn++;}

fun( s , m,fn,tn );

printf("The string after deleted:n");puts(s);

NONO();

}

解題思路:

本題是考察對字串的操作。

1. 求出字串的長度。

2. 利用迴圈把字串中字元按要求仍存放在原字串首址開始的位置上。

參考答案:

void fun( char *a, int n,int h,int e )

{

char *p=a ;

int j=0,len=0;

while(*p) {p++; len++;}

while(j  a[j]=a[h+j];

j++;

}

a[j]=0;

}