第二套上機試卷
一、改錯題
【知識點】整數(shù)數(shù)位處理、數(shù)字字符與相應(yīng)數(shù)字的轉(zhuǎn)換、程序調(diào)式
【解析】程序中的錯誤一般可以分為兩類,一類是語法錯誤,即程序中有拼寫錯誤,書寫不符合C語言的規(guī)定等,此類錯誤可通過調(diào)試(按F9鍵),根據(jù)提示進(jìn)行改正。另一類是邏輯錯誤,程序調(diào)試已通過(報success),但運行結(jié)果不正確,此類錯誤的修改必須要理解程序后方能改正。
使用putchar函數(shù)必須在程序開頭加上文件包含#include "stdio.h";scanf語句中必須是地址序列,故scanf("num=%d",num);應(yīng)改為scanf("num=%d",&num);,且調(diào)式時注意將“num=”原樣輸入;某數(shù)字若轉(zhuǎn)換為相應(yīng)數(shù)字字符,應(yīng)加上字符'0'或48(字符'0'的ASCII碼值),故digit[n++]=m%10;應(yīng)改為digit[n++]=m%10+'0';;最后輸出時,n已在前面多加了一次,故而輸出時應(yīng)先減1,故for(;n>=0;n--)中第一個表達(dá)式應(yīng)加上n--或--n或n=n-1。
【答案】①在程序開頭加上#include "stdio.h"
、趯⒃谖逍械膕canf("num=%d",num);改為scanf("num=%d",&num);
③將原第十一行的digit[n++]=m%10;改為digit[n++]=m%10+'0';
、軐⒃谑械膄or(;n>=0;n--)改為for(n--;n>=0;n--)
二、編程題
【知識點】字符串應(yīng)用、數(shù)據(jù)文件的使用
【解析】注意,按要求必須調(diào)用函數(shù),且使用數(shù)據(jù)文件完成輸出。使用數(shù)據(jù)文件有5大步驟:①#include
【注意】fopen("A:\\myf2.out","w")中盤符A:后要加雙斜杠表示根目錄,因為C語言用轉(zhuǎn)義字符'\\'才能表達(dá)字符\;另外,文件的命名一定要嚴(yán)格按照規(guī)定處理,千萬不要隨便命名。
【參考答案】
#include "stdio.h"
int compress(char s[])
{int n,k=0,count=0;
if(s[0]!=NULL) n=k+1;
while(s[n]!=NULL)
{if(s[k]= =s[n]){n++;count++;}
else {s[++k]=s[n];n++;}
}
s[++k]='\0';
return count;
}
main()
{char num[100];
int count=0;
FILE *fp;
fp=fopen("A:\\myf2.out","w");
gets(num);
count=compress(num);
fprintf(fp,"%s",num);
printf("%d",count);
fclose(fp); }
運行結(jié)果如下:
@ I wil sucesful & and you to ! #
相關(guān)推薦:2010年9月計算機等級考試沖刺備考指導(dǎo)專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |