糯米文學吧

位置:首頁 > 計算機 > C語言

計算機二級C語言上機強化訓練題及答案

C語言7.72K

以下是應屆畢業生考試網小編提供的計算機二級C語言上機強化訓練題及答案,希望大家順利通過計算機二級考試。

計算機二級C語言上機強化訓練題及答案

  填空題

給定程序的功能是:調用函數fun將指定源文件中的內容複製到指定的目標文件中,複製成功時函數返回值為1,失敗時返回值為0。在複製的過程中,把複製的內容輸出到終端屏幕。主函數中源文件名放在變量sfname中,目標文件名放 在變量tfname中。

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

注意:源程序存放在考生文件夾下的BLANK1.C中。

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

給定源程序:

#include

#include

int fun(char *source, char *target)

{ FILE *fs,*ft; char ch;

if((fs=fopen(source, ___1___))==NULL)

return 0;

if((ft=fopen(target, "w"))==NULL)

return 0;

printf("nThe data in file :n");

ch=fgetc(fs);

while(!feof(___2___))

{ putchar( ch );

fputc(ch,___3___);

ch=fgetc(fs);

}

fclose(fs); fclose(ft);

printf("nn");

return 1;

}

main()

{ char sfname[20] ="myfile1",tfname[20]="myfile2";

FILE *myf; int i; char c;

myf=fopen(sfname,"w");

printf("nThe original data :n");

for(i=1; i<30; i++){ c='A'+rand()%25;fprintf(myf,"%c",c); printf("%c",c); }

fclose(myf);printf("nn");

if (fun(sfname, tfname)) printf("Succeed!");

else printf("Fail!");

}

解題思路:

本題要求是把一個文件中的內容複製到另一個文件中。程序中共有三處要填上適當的內容,使程序能運行出正確的結果。

第一處:要求打開一個讀方式的源文件,因此可以填上"r"或"r+"。打開讀文件操作的流是fs。

第二處:用while循環來判斷源文件是否已讀到文件結束符,int feof(FILE *stream),因此,此處只能填寫fs。

第三處:把已經讀取的字符寫入目標文件中,打開寫文件操作的流是ft,因此,此處只能填寫ft。

  改錯題

給定程序MODI1.C中函數fun的功能是:將長整型數中每一位上為偶數的數依 次取出,構成一個新數放在t中。高位仍在高位,低位仍在低位。 例如,當s中的數為:87653142時,t中的數為:8642。

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

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

給定源程序:

#include

void fun (long s, long *t)

{ int d;

long sl=1;

*t = 0;

while ( s > 0)

{ d = s%10;

if (d%2=0)

{ *t=d* sl+ *t;

sl *= 10;

}

s = 10;

}

}

main()

{ long s, t;

printf("nPlease enter s:"); scanf("%ld", &s);

fun(s, &t);

printf("The result is: %ldn", t);

}

解題思路:

第一處:判斷相等的條件是==。

第二處:整除的符號是/。

  編程題

函數fun的.功能是:將兩個兩位數的正整數a、b合併形成一個整數放在c中。合併的方式是:將a數的十位和個位數依次放在c數的十位和千位上, b數的十位和個位數依次放在c數的百位和個位上。

例如,當a=45,b=12時,調用該函數後,c=5142。

注意: 部分源程序存在文件PROG1.C中。數據文件中的數據不得修改。

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

給定源程序:

#include

void fun(int a, int b, long *c)

{

}

main()

{ int a,b; long c;

printf("Input a, b:");

scanf("%d,%d", &a, &b);

fun(a, b, &c);

printf("The result is: %ldn", c);

NONO();

}

解題思路:

本題是給出兩個兩位數的正整數分別取出各位上的數字,再按條件組成一個新數。

取a十位數字的方法:a/10

取a個位數字的方法:a%10

參考答案

void fun(int a, int b, long *c)

{

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);

}