計算機二級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);
}
-
C語言插入排序算法及實例代碼
插入排序是排序算法的一種,下面小編為大家整理了C語言插入排序算法及實例代碼,希望能幫到大家!這裏以從小到大排序為例進行講解。基本思想及舉例説明插入排序的基本思想是,將元素逐個添加到已經排序好的數組中去,同時要求,插入的元素必須在正確的位置,這樣原來排序好...
-
C語言精選面試題詳解
C語言是IT編程中最基礎的語言,在面試中,基本可以忽略又或者格外重要。下面是小編為大家整理的C語言精選面試題詳解,歡迎參考~分析這些面試題,本身包含很強的趣味性;而作為一名研發人員,通過對這些面試題的深入剖析則可進一步增強自身的內功。試題1:以下是引用片段:voi...
-
C語言基礎循環結構
引導語:循環結構可以減少源程序重複書寫的工作量,用來描述重複執行某段算法的問題,這是程序設計中最能發揮計算機特長的程序結構。以下是本站小編分享給大家的C語言循環結構,歡迎閲讀學習!1.1for循環結構循環語句的一般表達式是:for(表達式1;表達式2;表達式3)語句2....
-
C/C++變量在內存中的分佈介紹
變量在內存地址的分佈為:堆-棧-代碼區-全局靜態-常量數據。同一區域的各變量按聲明的順序在內存的中依次由低到高分配空間(只有未賦值的全局變量是個例外)。本文是本站小編搜索整理的關於C/C++變量在內存中的分佈介紹,感興趣的朋友一起學習吧!!想了解更多相關信息...