查看全部128種考試
計(jì)算機(jī)等級(jí)考試
 考試動(dòng)態(tài)  報(bào)考指南  考試大綱  歷年真題  模擬試題  復(fù)習(xí)資料  心得技巧 等考論壇
 二級(jí) | VB  VF  C  C++  JAVA  ACCESS 三級(jí) | 網(wǎng)絡(luò)  數(shù)據(jù)庫(kù)  信息管理  PC技術(shù) 四級(jí) | 一級(jí)
1
2
3
4
5
6
7
8
9
10
蕭雨  
【字體: 2003年4月全國(guó)計(jì)算機(jī)等級(jí)考試三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)考試題
2003年4月全國(guó)計(jì)算機(jī)等級(jí)考試三級(jí)網(wǎng)絡(luò)技術(shù)上機(jī)考試題
djks.exam8.com 來(lái)源:考試吧(Exam8.com) 更新:2004-8-11 23:40:00 計(jì)算機(jī)等級(jí)考試 考試論壇

    1.已知在文件IN.DAT中存有100個(gè)產(chǎn)品銷售記錄,每個(gè)產(chǎn)品銷售記錄由產(chǎn)品代碼dm(字符型4位),產(chǎn)品名稱mc(字符型10位),單價(jià)dj(整型),數(shù)量sl(整型),金額je(長(zhǎng)整型)四部分組成。其中:金額=單價(jià)*數(shù)量計(jì)算得出。函數(shù)ReadDat()是讀取這100個(gè)銷售記錄并存入結(jié)構(gòu)數(shù)組sell中。請(qǐng)編制函數(shù)SortDat(),其功能要求:按產(chǎn)品代碼從大到小進(jìn)行排列,若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列,最終排列結(jié)果仍存入結(jié)構(gòu)數(shù)組sell中,最后調(diào)用函數(shù)WriteDat()把結(jié)果輸出到文件OUT10.DAT中。

部分源程序已給出。

請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(shù)WriteDat()的內(nèi)容。

#include

#include

#include

#include

#include


#define MAX 100

typedef struct{

char dm[5]; /*產(chǎn)品代碼*/

char mc[11]; /*產(chǎn)品名稱*/

int dj; /*單價(jià)*/

int sl; /*數(shù)量*/

long je; /*金額*/

}PRO;

PRO sell[MAX];

void ReadDat();

void WriteDat();


void SortDat()

{


}


void main()

{

memset(sell,0,sizeof(sell));

ReadDat();

SortDat();

WriteDat();

}


void ReadDat()

{

FILE *fp;

char str[80],ch[11];

int i;


fp=fopen("IN.DAT","r");

for(i=0;i<100;i++){

fgets(str,80,fp);

memcpy(sell[i].dm,str,4);

memcpy(sell[i].mc,str+4,10);

memcpy(ch,str+14,4);ch[4]=0;

sell[i].dj=atoi(ch);

memcpy(ch,str+18,5);ch[5]=0;

sell[i].sl=atoi(ch);

sell[i].je=(long)sell[i].dj*sell[i].sl;

}

fclose(fp);

}


void WriteDat(void)

{

FILE *fp;

int i;


fp=fopen("OUT10.DAT","w");

for(i=0;i<100;i++){

fprintf(fp,"%s %s %4d %5d %10Ld\n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);

}

fclose(fp);

}"


--------------------------------------------------------------------------------


注:這時(shí)也是采用冒泡法進(jìn)行排序。與前面的冒泡法在寫(xiě)法上有所不同請(qǐng)注意區(qū)分。

void SortDat()

{

int i,j;

PRO swap;

for(i=0;i for(j=0;j { if(strcmp(sell[j].dm,sell[j+1].dm)<0) /*用函數(shù)strcmp判斷兩個(gè)字符串的大小*/

{ swap=sell[j]; sell[j]=sell[j+1]; sell[j+1]=swap; }

if(strcmp(sell[j].dm,sell[j+1].dm)==0&&sell[j].je {

swap=sell[j];

sell[j]=sell[j+1];

sell[j+1]=swap;

}

}

}

若產(chǎn)品代碼相同,則按金額從大到小進(jìn)行排列沒(méi)有體現(xiàn)!


2.six+six+six=nine+nine的個(gè)數(shù)cnt及它們的和sum,s,i,n,e是0-9自然數(shù),但s,n不能為0.

如 984+984+984=1476+1476,

我臨時(shí)編的(可能算法不太好)


main()

{

int i,j,cnt=0;

float sum=0;

for(i=100;i<1000;i++)

for(j=1000;j<10000;j++)

{

if(i+i+i==j+j)

{

cnt++;

sum=sum+i+j;

printf("%d+%d+%d=%d+%d\n",i,i,i,j,j);

}

}

printf("%d,%f",cnt,sum);

}


參考這個(gè):for(i=666;i<1000;i++)

if((i/10%10=(3*i/2)/100%10)&&((i*3/2)/1000=(i*3/2)/10%10)

{cnt++;

sum+=(5/2)*i;

}

3.函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中;請(qǐng)編制函數(shù)encryptChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS4.DAT中。


替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果計(jì)算后f(p)值小于等于32或f(p)對(duì)應(yīng)的字符是大寫(xiě)字母,則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。


部分源程序已給出。原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。


請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(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()


{


clrscr();


if(ReadDat()){


printf(\"數(shù)據(jù)文件ENG.IN不能打開(kāi)!\\n\\007\");


return;


}


encryptChar();


WriteDat();


}

int ReadDat(void)


{


FILE *fp;


int i=0;


unsigned char *p;

if((fp=fopen(\"eng.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(\"ps4.dat\",\"w\");


for(i=0;i printf(\"%s\\n\",xx[i]);


fprintf(fp,\"%s\\n\",xx[i]);


}


fclose(fp);


}

--------------------------------------------------------------------------------

注:下題1相似,只是它要求對(duì)f(p)進(jìn)行判斷。


void encryptchar()


{


int i;


char *pf;


for(i=0;i {pf=xx[i];


while(*pf!=0)


{if(*pf*11%256>='A'&&*pf*11%256<='Z'||*pf*11%256<32)


{pf++;continue;}


*pf=*pf*11%256;


pf++;


}


}


}


void encryptChar()


{


int i,j,t;


for(i=0;i {


for(j=0;j {


t=xx[i][j]*11%256;


if(t<=32 || t>='A' && t<='Z') continue;


xx[i][j]=t;


}


}


}


4.南開(kāi)第一題

函數(shù)ReadDat()實(shí)現(xiàn)從文件ENG.IN中讀取一篇英文文章,存入到字符串?dāng)?shù)組xx中;請(qǐng)編制函數(shù)encryptChar(),按給定的替代關(guān)系對(duì)數(shù)組xx中的所有字符進(jìn)行替代,仍存入數(shù)組xx的對(duì)應(yīng)的位置上,最后調(diào)用函數(shù)WriteDat()把結(jié)果xx輸出到文件PS10.DAT中。

替代關(guān)系:f(p)=p*11 mod 256 (p是數(shù)組中某一個(gè)字符的ASCII值,f(p)是計(jì)算后新字符的ASCII值),如果原字符的ASCII值是偶數(shù)或計(jì)算后f(p)值小于等于32,則該字符不變,否則將f(p)所對(duì)應(yīng)的字符進(jìn)行替代。

部分源程序已給出,原始數(shù)據(jù)文件存放的格式是:每行的寬度均小于80個(gè)字符。

請(qǐng)勿改動(dòng)主函數(shù)main()、讀數(shù)據(jù)函數(shù)ReadDat()和輸出數(shù)據(jù)函數(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()

{

clrscr();

if(ReadDat()){

printf("數(shù)據(jù)文件ENG.IN不能打開(kāi)!\n\007");

return;

}

encryptChar();

WriteDat();

}


int ReadDat(void)

{

FILE *fp;

int i=0;

unsigned char *p;


if((fp=fopen("eng.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("ps10.dat","w");

for(i=0;i printf("%s\n",xx[i]);

fprintf(fp,"%s\n",xx[i]);

}

fclose(fp);

}


--------------------------------------------------------------------------------


注:在ReadDat()函數(shù)中由于fgets()函數(shù)讀入數(shù)據(jù)時(shí)沒(méi)有讀入字符串結(jié)束符'\0',因

而用while()循環(huán)在xx數(shù)組每一行未尾將換行符'\n'替換成結(jié)束符'\0'。

編寫(xiě)的函數(shù)如下:該函數(shù)的基本算法是——讓字符指針pf指向每一行的開(kāi)頭然后逐一往

后移動(dòng),在移動(dòng)過(guò)程中按要求進(jìn)行轉(zhuǎn)換。*pf%2==0用于判斷是否為偶數(shù)。if()條件語(yǔ)

句用于控制不替代字符。


解法1:


void encryptChar()

{

int i;

char *pf;

for(i=0;i {pf=xx[i]; /*每行字符個(gè)數(shù)*/

while(*pf!=0)

{if(*pf%2==0||*pf*11%256<32)

{pf++;continue;}

*pf=*pf*11%256;

pf++;

}

}


}


轉(zhuǎn)帖于:計(jì)算機(jī)等級(jí)考試_考試吧
文章搜索  
看了本文的網(wǎng)友還看了:
網(wǎng)友評(píng)論
昵 稱: *  評(píng) 分: 1分 2分 3分 4分 5分
標(biāo)題:   匿名發(fā)表    (共有條評(píng)論)查看全部評(píng)論>>
版權(quán)聲明 -------------------------------------------------------------------------------------
  如果計(jì)算機(jī)等級(jí)考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請(qǐng)與我們聯(lián)系,我們將會(huì)及時(shí)處理。如轉(zhuǎn)載本計(jì)算機(jī)等級(jí)考試網(wǎng)內(nèi)容,請(qǐng)注明出處。
關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  付款方式  站內(nèi)導(dǎo)航  客服中心  友情鏈接  考試論壇  網(wǎng)站地圖
Copyright © 2004-2008 考試吧計(jì)算機(jī)等級(jí)考試網(wǎng) All Rights Reserved    
中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699
百度大聯(lián)盟黃金認(rèn)證  十佳網(wǎng)絡(luò)教育機(jī)構(gòu)  經(jīng)營(yíng)許可證號(hào):京ICP060677