- 相關(guān)推薦
計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)強(qiáng)化訓(xùn)練題及答案
以下是應(yīng)屆畢業(yè)生考試網(wǎng)小編提供的計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)強(qiáng)化訓(xùn)練題及答案,希望大家順利通過(guò)計(jì)算機(jī)二級(jí)考試。
填空題
給定程序的功能是:調(diào)用函數(shù)fun將指定源文件中的內(nèi)容復(fù)制到指定的目標(biāo)文件中,復(fù)制成功時(shí)函數(shù)返回值為1,失敗時(shí)返回值為0。在復(fù)制的過(guò)程中,把復(fù)制的內(nèi)容輸出到終端屏幕。主函數(shù)中源文件名放在變量sfname中,目標(biāo)文件名放 在變量tfname中。
請(qǐng)?jiān)诔绦虻南聞澗(xiàn)處填入正確的內(nèi)容并把下劃線(xiàn)刪除,使程序得出正確的結(jié)果。
注意:源程序存放在考生文件夾下的BLANK1.C中。
不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#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("\n\n");
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("\n\n");
if (fun(sfname, tfname)) printf("Succeed!");
else printf("Fail!");
}
解題思路:
本題要求是把一個(gè)文件中的內(nèi)容復(fù)制到另一個(gè)文件中。程序中共有三處要填上適當(dāng)?shù)膬?nèi)容,使程序能運(yùn)行出正確的結(jié)果。
第一處:要求打開(kāi)一個(gè)讀方式的源文件,因此可以填上"r"或"r+"。打開(kāi)讀文件操作的流是fs。
第二處:用while循環(huán)來(lái)判斷源文件是否已讀到文件結(jié)束符,int feof(FILE *stream),因此,此處只能填寫(xiě)fs。
第三處:把已經(jīng)讀取的字符寫(xiě)入目標(biāo)文件中,打開(kāi)寫(xiě)文件操作的流是ft,因此,此處只能填寫(xiě)ft。
改錯(cuò)題
給定程序MODI1.C中函數(shù)fun的功能是:將長(zhǎng)整型數(shù)中每一位上為偶數(shù)的數(shù)依 次取出,構(gòu)成一個(gè)新數(shù)放在t中。高位仍在高位,低位仍在低位。 例如,當(dāng)s中的數(shù)為:87653142時(shí),t中的數(shù)為:8642。
請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確的結(jié)果。
注意:不要改動(dòng)main函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!
給定源程序:
#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: %ld\n", t);
}
解題思路:
第一處:判斷相等的條件是==。
第二處:整除的符號(hào)是/。
編程題
函數(shù)fun的功能是:將兩個(gè)兩位數(shù)的正整數(shù)a、b合并形成一個(gè)整數(shù)放在c中。合并的方式是:將a數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的十位和千位上, b數(shù)的十位和個(gè)位數(shù)依次放在c數(shù)的百位和個(gè)位上。
例如,當(dāng)a=45,b=12時(shí),調(diào)用該函數(shù)后,c=5142。
注意: 部分源程序存在文件PROG1.C中。數(shù)據(jù)文件IN.DAT中的數(shù)據(jù)不得修改。
請(qǐng)勿改動(dòng)主函數(shù)main和其它函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的花括號(hào)中填入你編寫(xiě)的若干語(yǔ)句。
給定源程序:
#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: %ld\n", c);
NONO();
}
解題思路:
本題是給出兩個(gè)兩位數(shù)的正整數(shù)分別取出各位上的數(shù)字,再按條件組成一個(gè)新數(shù)。
取a十位數(shù)字的方法:a/10
取a個(gè)位數(shù)字的方法:a%10
參考答案:
void fun(int a, int b, long *c)
{
*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);
}
【計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)強(qiáng)化訓(xùn)練題及答案】相關(guān)文章:
計(jì)算機(jī)二級(jí)考試C語(yǔ)言強(qiáng)化訓(xùn)練題及答案06-14
計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)操作題及答案03-29
2017計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)特訓(xùn)題08-12
計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)編程題講解07-10
計(jì)算機(jī)二級(jí)C語(yǔ)言預(yù)測(cè)上機(jī)精選訓(xùn)練題07-05
計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)沖刺試題及答案05-26
2017計(jì)算機(jī)二級(jí)C語(yǔ)言上機(jī)題庫(kù)及答案08-07