三级网络技术上机部分天河教育版word版.docx

上传人:b****5 文档编号:8523502 上传时间:2023-01-31 格式:DOCX 页数:113 大小:66.08KB
下载 相关 举报
三级网络技术上机部分天河教育版word版.docx_第1页
第1页 / 共113页
三级网络技术上机部分天河教育版word版.docx_第2页
第2页 / 共113页
三级网络技术上机部分天河教育版word版.docx_第3页
第3页 / 共113页
三级网络技术上机部分天河教育版word版.docx_第4页
第4页 / 共113页
三级网络技术上机部分天河教育版word版.docx_第5页
第5页 / 共113页
点击查看更多>>
下载资源
资源描述

三级网络技术上机部分天河教育版word版.docx

《三级网络技术上机部分天河教育版word版.docx》由会员分享,可在线阅读,更多相关《三级网络技术上机部分天河教育版word版.docx(113页珍藏版)》请在冰豆网上搜索。

三级网络技术上机部分天河教育版word版.docx

三级网络技术上机部分天河教育版word版

1文件IN.DAT中存有200个销售记录,每个记录均由产品代码ID(字符型4位)、产品名称name(字符型10位)、单价price(整型)、数量amount(整型)、金额value(长整型)几部分组成。

其中:

金额=单价×数量,函数ReadData()负责将IN.txt中的数据读到结构数组sell[]中。

请编制函数sortData(),将各个记录按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,并将排列后的结果存放到sell[]中。

函数WriteData()负责将sell[]中的数据输出到文件OUT.txt中。

注意:

部分源程序已给出。

请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。

试题程序:

#include

#include

#include

#include

#defineMAX100

typedefstruct

{

charID[5];//产品代码

charname[11];//产品名称

intprice;//单价

intamount;//数量

longvalue;//金额

}PRODUCT;

PRODUCTsell[MAX];

voidreadData();

voidwriteData();

voidsortData()

{

PRODUCTtemp;

inti,j;

memset(&temp,0,sizeof(temp));

for(i=0;i

for(j=i+1;j

if(strcmp(sell[i].ID,sell[j].ID)<0||(strcmp(sell[i].ID,sell[j].ID)==0&&sell[i].value

{

memcpy(&temp,&sell[i],sizeof(temp));//将以&sell[i]为起始地址大小为sizeof(temp)的的内存中的内容复制到以&temp为起始地址的内存中

memcpy(&sell[i],&sell[j],sizeof(temp));

memcpy(&sell[j],&temp,sizeof(temp));

}

}

voidreadData()

{

FILE*fp;

charstr[80],ch[11];

inti;

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

for(i=0;i

{

fgets(str,80,fp);

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

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

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

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

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

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

sell[i].value=(long)sell[i].price*sell[i].amount;

}

fclose(fp);

}

voidwriteData()

{

FILE*fp;

inti;

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

for(i=0;i

{

fprintf(fp,"%s%s%4d%5d%10ld\n",sell[i].ID,sell[i].name,sell[i].price,sell[i].amount,sell[i].value);

}

fclose(fp);

}

voidmain()

{

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

readData();

sortData();

writeData();

}

2请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

计算方差的公式如下:

totfc=1/N∑Ni=1(xx[i]-ave2)2

设N为偶数的个数,xx[i]为偶数,ave2为偶数的平均值。

原始数据文件存放的格式是:

每行存放10个数,并用逗号隔开。

(每个数均大于0且小于等于2000)

注意:

部分源程序已给出。

请勿改动主函数main()和输出数据函数writeDat()的内容。

试题程序:

#include

#include

#include

#defineMAX1000

intxx[MAX],odd=0,even=0;

doubleave1=0.0,ave2=0.0,totfc=0.0;

voidWriteDat(void);

intReadDat(void)

{inti;

FILE*fp;

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

/*********编制函数ReadDat()的部分************/

for(i=0;i

{fscanf(fp,"%d,",&xx[i]);//读取文件中的数据存入变量xx[i]中

if((i+1)%10==0)//每行存10个数

fscanf(fp,"\n");}//读取行后的换行符

/*******************************************/

fclose(fp);

return0;

}

voidCompute(void)

{inti,yy[MAX];

for(i=0;i

yy[i]=0;

for(i=0;i

if(xx[i]%2==0)//测试结点i是否是偶数

{yy[even++]=xx[i];//将结点i存入数组yy中

ave2+=xx[i];}//将结点i累加存入ave2中

else//如果结点i不是偶数

{odd++;//累加变量odd记录奇数数的个数

ave1+=xx[i];}//将xx[i]累加存入ave1中

if(odd==0)ave1=0;

elseave1/=odd;//计算奇数数的平均数

if(even==0)ave2=0;

elseave2/=even;//计算偶数数的平均数

for(i=0;i

totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;

}

voidmain()

{

inti;

for(i=0;i

if(ReadDat()){

printf("数据文件IN.DAT不能打开!

\007\n");

return;

}

Compute();

printf("EVEN=%d\nAVE1=%f\nAVER2=%f\nTOTFC=%f\n",even,ave1,ave2,totfc);

WriteDat();

}

voidWriteDat(void)

{

FILE*fp;

inti;

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

fprintf(fp,"%d\n%f\n%f\n%f\n",even,ave1,ave2,totfc);

fclose(fp);

}

 

3文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[]中。

请编制函数replaceChar(),该函数的功能是:

以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCII值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。

把已处理的字符串仍按行重新存入字符串数组inBuf中,函数WriteData()负责将inBuf[]中的数据输出到文件OUT.DAT中并且在屏幕上打出。

原始数据文件存放的格式是:

每行的宽度均小于80个字符,含标点符号和空格。

注意:

部分源程序已给出。

请勿改动主函数main()、读函数ReadData()和写函数WriteData()的内容。

试题程序:

#include

#include

#include

#include

#defineLINE50

#defineCOL80

charinBuf[LINE][COL];

inttotleLine=0;//文章的总行数

intreadData(void);

voidwriteData(void);

voidreplaceChar()

{

inti,j,y;

for(i=0;i

for(j=0;j

{

y=(int)inBuf[i][j]/16+(int)inBuf[i][j];//将ASCII码右移4位,再加上自身的值

inBuf[i][j]=(char)y;//将整型转换成字符型存入inBuf中

}

}

voidmain()

{

system("CLS");

if(readData())

{

printf("IN.DATcan'tbeopen!

\n\007");

return;

}

replaceChar();

writeData();

}

intreadData(void)

{

FILE*fp;

inti=0;

char*p;

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

while(fgets(inBuf[i],COL+1,fp)!

=NULL)

{

p=strchr(inBuf[i],'\n');

if(p)*p=0;

i++;

}

totleLine=i;

fclose(fp);

return0;

}

voidwriteData(void)

{

FILE*fp;

inti;

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

for(i=0;i

{

printf("%s\n",inBuf[i]);

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

}

fclose(fp);

}

4补充函数,要求实现如下功能:

寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(回文数是指各位数字左右对称的整数),例如:

12321,505,1458541等。

满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。

请编写jsValue(longm)实现此功能。

如果是回文数,则函数返回1,不是则返回0。

最后,把结果输出到文件OUT.DAT中。

注意:

部分源程序已经给出。

请勿改动主函数Main()中的内容。

试题程序:

#include

#include

#include

#include

#defineMAX100

typedefstruct{

chardm[5];/*产品代码*/

charmc[11];/*产品名称*/

intdj;/*单价*/

intsl;/*数量*/

longje;/*金额*/

}PRO;

PROsell[MAX];

voidReadDat();

voidWriteDat();

voidSortDat()

{inti,j;

PROxy;

for(i=0;i<99;i++)

for(j=i+1;j<100;j++)

if(strcmp(sell[i].mc,sell[j].mc)<0//如果产品i的产品名称小于产品j的产品名称

||strcmp(sell[i].mc,sell[j].mc)==0//如果产品i的产品名称等于产品j的产品名称

&&sell[i].je>sell[j].je)//如果产品i的金额大于产品j的金额

{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}//产品i和产品j交换

}

voidmain()

{

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

ReadDat();

SortDat();

WriteDat();

}

voidReadDat()

{

FILE*fp;

charstr[80],ch[11];

inti;

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);

}

voidWriteDat()

{

FILE*fp;

inti;

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

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

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

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

}

fclose(fp);

}

5

请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute()分别计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

计算方差的公式如下:

N2

totfc=1/N∑(xx[i]-ave1)

i=1

设N为奇数的个数,xx[i]为奇数,ave1为奇数的平均值。

原始数据文件存放的格式是:

每行存放10个数,并用逗号隔开。

(每个数均大于0且小于等于2000)

注意:

部分源程序已给出如下:

请勿改动主函数main()和输出数据函数writeDat()的内容。

试题程序

for(i=0;i

{fscanf(fp,"%d,",&xx[i]);//读取文件中的数据存入变量xx[i]中

if((i+1)%10==0)//每行存10个数

fscanf(fp,"\n");

}

voidCompute(void)

{inti,yy[MAX];

for(i=0;i

yy[i]=0;

for(i=0;i

if(xx[i]%2)//测试结点i是否是奇数

{yy[odd++]=xx[i];//将结点i存入数组yy中

ave1+=xx[i];}//将结点i累加存入ave1中

else//如果结点i不是奇数

{even++;//累加变量even记录偶数数的个数

ave2+=xx[i];}//将xx[i]累加存入ave2中

if(odd==0)ave1=0;

elseave1/=odd;//计算奇数数的平均数

if(even==0)ave2=0;

elseave2/=even;//计算偶数数的平均数

for(i=0;i

totfc+=(yy[i]-ave1)*(yy[i]-ave1)/odd;

}

6

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。

其中:

金额=单价*数量计算得出。

函数ReadDat()是读取这100个销售记录并存入结构数组sell中。

请编制函数SortDat(),其功能要求:

按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT5.DAT中。

注意:

部分源程序已给出如下:

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

试题程序

voidSortDat()

{inti,j;

PROxy;

for(i=0;i<99;i++)

for(j=i+1;j<100;j++)

if(strcmp(sell[i].mc,sell[j].mc)<0//如果产品i的产品名称大于产品j的产品名称

||strcmp(sell[i].mc,sell[j].mc)==0//如果产品i的产品名称等于产品j的产品名称

&&sell[i].je

{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}//产品i和产品j交换

}

7

请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中;请编制函数Compute(),分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。

计算方差的公式如下:

N2

totfc=1/N∑(xx[i]-aver)

i=1

原始数据文件存放的格式是:

每行存放10个数,并用逗号隔开。

(每个数均大于0且小于等于2000)

注意:

部分源程序已给出如下:

请勿改动主函数main()和输出数据函数writeDat()的内容。

试题程序

for(i=0;i

{fscanf(fp,"%d,",&xx[i]);//读取文件中的数据存入变量xx[i]中

if((i+1)%10==0)//每行读取10个数

fscanf(fp,"\n");

}

voidCompute(void)

{inti;

for(i=0;i

{if(xx[i]%2)//测试结点i是否是奇数

odd++;//累加变量odd记录奇数数的个数

else//如果结点i不是奇数

even++;//累加变量even记录偶数数的个数

aver+=xx[i];}//将xx[i]累加存入aver中

}

aver/=MAX;//计算平均数

for(i=0;i

totfc+=(xx[i]-aver)*(xx[i]-aver);

totfc/=MAX;

}

8

文件IN.DAT中存放有100条对10个候选人进行选举的记录,每条记录的长度均为10位,第一位表示第一个人选中的情况,第二位表示第二个人的选中情况,依次类推。

每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,全选或全部选(空选票)均为无效选票。

函数readData()负责将IN.DAT中的内容读入到数组inBuf[]中。

请编制函数calculate()来统计每个人的选票数并把得票数依次存入outBuf[0]~outBuf[9]中,最后调用函数WriteData()把结构outBuf[]输入到文件OUT.DAT中。

注意:

部分源程序已给出。

请勿改动主函数main()、读函数readData()和写函数Writedata的内容。

试题程序:

inti,j,k,sum,use_i;

intuseful[LINE]={-1};

k=0;

for(i=0;i

{

sum=0;//将总和清零

for(j=0;j

if(sum>0&&sum

{

useful[k]=i;//将有效的选票的标号放到数组useful中

k++;//将有效选票的计数器加1

}

}

use_i=k;//记录有效选票的个数

for(j=0;j

for(k=0;k

9已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。

其中:

金额=单价*数量计算得出。

函数ReadDat()是读取这100个销售记录并存入结构数组sell中。

请编制函数SortDat(),其功能要求:

按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。

注意:

部分源程序已给出如下:

请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。

试题程序

voidSortDat()

{inti,j;

PROxy;

for(i=0;i<99;i++)

for(j=i+1;j<100;j++)

if(strcmp(sell[i].dm,sell[j].dm)<0//如果产品i的产品代码小于产

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1