第三套上機(jī)試卷
一、改錯(cuò)題
【知識(shí)點(diǎn)】選擇法排序、指針與字符串、程序的調(diào)試
【解析】程序中的錯(cuò)誤一般可以分為兩類,一類是語法錯(cuò)誤,即程序中有拼寫錯(cuò)誤,書寫不符合C語言的規(guī)定等,此類錯(cuò)誤可通過調(diào)試(按F9鍵),根據(jù)提示進(jìn)行改正。另一類是邏輯錯(cuò)誤,程序調(diào)試已通過(報(bào)success),但運(yùn)行結(jié)果不正確,此類錯(cuò)誤的修改必須要理解程序后方能改正。
本題要求“從鍵盤上接受一個(gè)含有空格的字符串”,scanf是做不到的,它遇到第一個(gè)空格即認(rèn)為讀入完畢,故應(yīng)替換成gets函數(shù);程序中使用了strcpy函數(shù),就必須在程序開頭加上文件包含#include "string.h";根據(jù)選擇法升序排序要領(lǐng),每次找到一個(gè)“更小的字符”由r指著,直到指向最小的為止,而不是修改r所指字符的值,故if(*r>*q)*r=*q;應(yīng)改為if(*r>*q) r=q;;當(dāng)r與p所指不同時(shí),交換二者所指字符的值,即使得p所指字符為每次的最小,故應(yīng)將if(r/=p)改為if(r!=p)。
【答案】①在程序開頭加上文件包含#include "string.h"
、趯⒃谖逍械膕canf("%s",str);改為gets(str);
③將原第八行的*r=*q; 改為r=q;
、軐⒃诰判械膇f(r/=p)改為if(r!=p)
二、編程題
【知識(shí)點(diǎn)】二維數(shù)組的應(yīng)用、數(shù)據(jù)文件的使用
【解析】 關(guān)于“二維數(shù)組應(yīng)用”的題目,一般都要仔細(xì)觀察,找出規(guī)律后再編程。本題中原數(shù)組的任意一個(gè)元素a[i][j]旋轉(zhuǎn)后,位置處于b中第3-j行i列。注意,按要求必須調(diào)用函數(shù),且使用數(shù)據(jù)文件完成輸出。使用數(shù)據(jù)文件有5大步驟:①#include
【注意】fopen("A:\\myf2.out","w")中盤符A:后要加雙斜杠表示根目錄,因?yàn)镃語言用轉(zhuǎn)義字符'\\'才能表達(dá)字符\;另外,文件的命名一定要嚴(yán)格按照規(guī)定處理,千萬不要隨便命名。
【參考答案】
#include "stdio.h"
int rotate(int a[4][4],int b[4][4]);
main()
{FILE *fp;
int i,j,x[4][4],y[4][4],s;
fp=fopen("A:\\myf2.out","w");
if(fp= =NULL){printf("Can't create file myf2.out!");
exit(1);}
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&x[i][j]);
s=rotate(x,y);
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
fprintf(fp,"%d ",y[i][j]);
fprintf(fp,"\n");
}
fprintf(fp,"sum=%d\n",s);
fclose(fp);
}
int rotate(int a[4][4],int b[4][4])
{int i,j,s=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
b[3-j][i]=a[i][j];
for(i=0;i<4;i++) s+=b[i][i];
return s; }
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試沖刺備考指導(dǎo)專題北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |