2013年的計(jì)算機(jī)等級考試已經(jīng)在去年9月份結(jié)束了,離2014年上半年計(jì)算機(jī)等級考試還有2個(gè)月的時(shí)間,需要參加計(jì)算機(jī)考試的考生應(yīng)抓緊時(shí)間復(fù)習(xí),需要提醒的是在復(fù)習(xí)前應(yīng)該了解考試大綱,有重點(diǎn)、有計(jì)劃、有目的的進(jìn)行,小編希望考生都能順利通過考試。
讀函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG52.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中。請編制函數(shù)encryptChar(),按給定的替代關(guān)系對數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對應(yīng)的位置上,最后調(diào)用寫函數(shù)WriteDat()把結(jié)果xx輸出到文件PS52.DAT中。
替代關(guān)系:f(p)=p*11 mod 256(p是數(shù)組xx中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果計(jì)算后f(p)的值小于等于32或f(p)對應(yīng)的字符是小寫字母,則該字符不變,否則將f(p)所對應(yīng)的字符進(jìn)行替代。
注意:部分源程序已給出。
原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。
請勿改動(dòng)主函數(shù)main()、讀函數(shù)ReadDat()和寫函數(shù)WriteDat()的內(nèi)容。
試題程序:
#include
#include
#include
#include
unsigned char xx[50][80];
int maxline = 0; /* 文章的總行數(shù) */
int ReadDat(void);
void WriteDat(void);
void encryptChar()
{ }
void main()
{
system("CLS");
if(ReadDat())
{
printf("數(shù)據(jù)文件ENG52.IN不能打開!\n\007");
return;
}
encryptChar();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i = 0;
unsigned char *p;
if((fp = fopen("ENG52.IN", "r")) ==NULL)
return 1;
while(fgets(xx[i], 80, fp) !=NULL)
{
p = strchr(xx[i],'\n');
if(p) *p = 0;
i++;
}
maxline = i;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int i;
fp = fopen("PS52.DAT", "w");
for (i = 0; i < maxline; i++)
{
printf("%s\n", xx[i]);
fprintf(fp, "%s\n", xx[i]);
}
fclose(fp);
}
【答案】
void encryptChar()
{
int i,j; /*定義循環(huán)控制變量*/
int str; /*存儲字符串的長度*/
char ch; /*存儲當(dāng)前取得的字符*/
for(i=0;i
{
str=strlen(xx[i]); /*求得當(dāng)前行的字符串長度*/
for(j=0;j
{
ch=xx[i][j] *11%256;
if ((ch>='a' && ch<='z') || ch<=32)
/*如果計(jì)算后的值小于等于32或?qū)?yīng)的字符是小寫字母*/
continue;
else
xx[i][j]=ch; /*否則用新字符來替代這個(gè)字符*/
}
}
}
【解析】本題要對二維數(shù)組中的字符元素按行來處理。
首先用strlen()函數(shù)得到當(dāng)前行所包含的字符個(gè)數(shù)。
然后再利用一個(gè)循環(huán)來依次訪問該行中的所有字符。對于每一個(gè)字符,先按照題目中的函數(shù)替代關(guān)系"f(p)=p*11 mod 256"計(jì)算出相應(yīng)的fp值,再用一條if語句判斷該值是否符合本題給定的條件:"計(jì)算后f(p)的值小于等于32或f(p)對應(yīng)的字符是小寫字母"。如果符合條件,則該字符不變,否則用f(p)所對應(yīng)的字符對其進(jìn)行替代。
如若獲知更多關(guān)于計(jì)算機(jī)等級考試培訓(xùn)的資訊,請隨時(shí)關(guān)注唯學(xué)網(wǎng)計(jì)算機(jī)培訓(xùn)欄目,小編會為您在第一時(shí)間做出相關(guān)報(bào)道。