全国计算机等级考试三级数据库技术上机指导考试内容Word格式.docx
《全国计算机等级考试三级数据库技术上机指导考试内容Word格式.docx》由会员分享,可在线阅读,更多相关《全国计算机等级考试三级数据库技术上机指导考试内容Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
函数ReadDat()实现从文件IN.DAT中读取一篇英文文章,存入到字符串数组xx中;
请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符实行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件OUT.DAT中。
替代关系:
f(p)=p*11mod256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或大于130,则该字符不变,否则将f(p)所对应的字符实行替代。
注意:
部分源程序存放在PROG1.C中,原始数据文件存放的格式是:
每行的宽度均小于80个字符。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
ゲ糠衷闯绦蛉缦拢邯
#include
#includeオ
unsignedcharxx[50][80];
intmaxline=0;
/*文章的总行数*/オ
intReadDat(void);
voidWriteDat(void);
オ
voidencryptChar()
{オオオ
}オ
voidmain()
{
clrscr();
if(ReadDat()){
printf(“数据文件ENG.IN不能打开!
\n\007”);
return;
}
encryptChar();
WriteDat();
intReadDat(void)
FILE*fp;
inti=0;
unsignedchar*p;
if((fp=fopen(“n.dat”,r))==NULL)return1;
while(fgets(xx[i],80,fp)!
=NULL){
p=strchr(xx[i],′\n′);
if(p)*p=0;
i++;
}
maxline=i;
fclose(fp);
return0;
voidWriteDat(void)
inti;
fp=fopen(“out.dat“,w);
for(i=0;
i printf(“%s\n“,xx[i]);
fprintf(fp,“%s\n“,xx[i]);
分析:
根据题意分析得出:
本题主要考查考生的字符串指针或字符串数组以及根据公式进字符的ASCII值运算,再根据运算结果和条件实行相对应的替代操作,要求考生仅编写函数encryptChar()实现转换功能。
其中输入及输出函数给出且已调用,考生不必自己编写。
编写函数encryptChar()的程序内容如下:
{inti,j,val;
i
for(j=0;
j
val=(xx[i][j]*11)%256;
if(!
(val130))xx[i][j]=val;
数据文件IN.DAT内容如下:
YoumayWANTAFIELDinfieldineachrecordtouniquelyidentifythat1234
recordfromallotherrecordsINTHEFILE.Forexample,theEmployee123456
NumberfieldisuniqueifyouDONOTASSIGNthesamenumbertotwo12345678
differentemployees,andyouneverreassignTHESENUMBERStoother12345678
employees.IfyouwishtoFINDORMODIFYtherecordbelongingtoa11111111
specificemployee,thisuniqueFIELDSAVESthethoubleofdetermining22222
whetheryouhavethecorrectrecord.12345678901234567
Ifyoudonothaveauniquefield,YOUMUSTFINDTHEfirstrecord123456787
thematchesyourkeyanddeterminewhetherTHENRECORDistheoneyou33333
want.IfitisnottheCORRECTONE,youmustsearchagaintofindothers.4
结果文件OUT.DAT内容如下:
Youm+3WAZT嗀﨔#EDDinbiWlLinW+AxrWAorLtouniquWl3iLWntib3tx+t1&
1
例2:
文件in.dat中有200个正整数,且每个数均在1000至9999之间。
函数readDat()是读取这200个数存放到数组aa中。
请编制函数jsSort(),其函数的功能是:
要求按每个数的后三位的大小实行升序排列,将排序后的前10个数存入数组b中,如果数组b中出现后三位相等的数值,则对这些数值按原始4位数据实行降序排列。
最后调用函数writeDat()把结果bb输出到文件out.dat中。
例:
处理前60125099901270258088
处理后90126012702580885099
部分源程序存有文件PROG1.C文件中。
请勿改动数据文件in.dat中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
部分源程序如下:
#include
intaa[200],bb[10];
voidjsSort()
readDat();
jsSort();
writeDat();
readDat()
FILE*in;
in=fopen(“in.dat“,r);
i fclose(in);
writeDat()
FILE*out;
out=fopen(“out.dat“,w);
i printf(“i=%d,%d\n“,i+1,bb[i]);
fprintf(out,“%d\n“,bb[i]);
fclose(out);
本题主要考查考生的使用数组和排序的水平,要求考生仅编写函数jsSort实现此功能。
其中输出函数给出且已调用,考生不必自己编写。
编写函数jsSort的程序如下:
inti,j,m;
i for(j=i+1;
j if((aa[i]%1000)>
(aa[j]%1000)){
m=aa[i];
aa[i]=aa[j];
aa[j]=m;
elseif((aa[i]%1000)==(aa[j]%1000)){
if(aa[i]
i }
1862,8281,6183,5180,1217
8215,8865,7110,1870,4373
7447,8420,8252,8809,7968
7331,3472,4126,8101,5576
7397,2066,5940,9779,7947
2912,1226,2238,4122,6210
2020,3721,1646,8324,2351
2345,1862,5186,7573,8949
3211,2103,6695,7968,6157
9956,2998,4063,6096,9432
6452,2422,1382,5813,8138
7486,1178,7650,1687,5012
4845,1428,3197,6077,4650
6641,2695,5758,8855,5321
1337,5323,9154,6419,8044
3654,2246,1890,3250,5542
1976,5986,5051,8053,7377
3726,6189,9483,5874,9246
2522,1020,3492,4032,4367
9784,4746,3130,8521,7837
6521,7917,6240,1225,4092
8022,6893,2075,8043,7409
3316,5688,4600,6016,2953
6206,4100,8947,6264,1986
4933,6105,7054,9121,5318
3164,9609,5784,4178,4906
3731,2996,4218,3498,3849
3835,5491,3890,3531,1475
8219,3720,8585,9616,6539
4961,8850,5822,2769,1269
2171,2104,3681,9291,5768
3582,3035,7212,8313,5669
4782,7545,7917,8561,5447
4912,7624,1343,8579,5639