三级网络技术上机部分天河教育版word版Word下载.docx
- 文档编号:21659730
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:113
- 大小:66.08KB
三级网络技术上机部分天河教育版word版Word下载.docx
《三级网络技术上机部分天河教育版word版Word下载.docx》由会员分享,可在线阅读,更多相关《三级网络技术上机部分天河教育版word版Word下载.docx(113页珍藏版)》请在冰豆网上搜索。
memset(&
temp,0,sizeof(temp));
for(i=0;
i<
MAX-1;
i++)//下面是按条件对数据进行排序的程序
for(j=i+1;
j<
MAX;
j++)
if(strcmp(sell[i].ID,sell[j].ID)<
0||(strcmp(sell[i].ID,sell[j].ID)==0&
&
sell[i].value<
sell[j].value))
{
memcpy(&
temp,&
sell[i],sizeof(temp));
//将以&
sell[i]为起始地址大小为sizeof(temp)的的内存中的内容复制到以&
temp为起始地址的内存中
sell[i],&
sell[j],sizeof(temp));
sell[j],&
temp,sizeof(temp));
}
}
voidreadData()
FILE*fp;
charstr[80],ch[11];
inti;
fp=fopen("
IN.DAT"
"
r"
);
for(i=0;
i<
MAX;
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()
OUT.DAT"
w"
for(i=0;
fprintf(fp,"
%s%s%4d%5d%10ld\n"
sell[i].ID,sell[i].name,sell[i].price,sell[i].amount,sell[i].value);
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()的内容。
#defineMAX1000
intxx[MAX],odd=0,even=0;
doubleave1=0.0,ave2=0.0,totfc=0.0;
voidWriteDat(void);
intReadDat(void)
{inti;
if((fp=fopen("
"
))==NULL)return1;
/*********编制函数ReadDat()的部分************/
i++)
{fscanf(fp,"
%d,"
&
xx[i]);
//读取文件中的数据存入变量xx[i]中
if((i+1)%10==0)//每行存10个数
fscanf(fp,"
\n"
}//读取行后的换行符
/*******************************************/
return0;
voidCompute(void)
{inti,yy[MAX];
yy[i]=0;
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;
//计算偶数数的平均数
even;
i++)
totfc+=(yy[i]-ave2)*(yy[i]-ave2)/even;
i++)xx[i]=0;
if(ReadDat()){
printf("
数据文件IN.DAT不能打开!
\007\n"
return;
Compute();
EVEN=%d\nAVE1=%f\nAVER2=%f\nTOTFC=%f\n"
even,ave1,ave2,totfc);
WriteDat();
voidWriteDat(void)
fp=fopen("
fprintf(fp,"
%d\n%f\n%f\n%f\n"
3文件IN.DAT中存有一篇英文文章,函数ReadData()负责将IN.DAT中的数据读到数组inBuf[]中。
请编制函数replaceChar(),该函数的功能是:
以行为单位把字符串中的所有字符的ASCII值右移4位,然后把右移后的字符的ASCII值再加上原字符的ASCII值,得到新的字符,并存入原字符串对应的位置上。
把已处理的字符串仍按行重新存入字符串数组inBuf中,函数WriteData()负责将inBuf[]中的数据输出到文件OUT.DAT中并且在屏幕上打出。
每行的宽度均小于80个字符,含标点符号和空格。
ctype.h>
#defineLINE50
#defineCOL80
charinBuf[LINE][COL];
inttotleLine=0;
//文章的总行数
intreadData(void);
voidwriteData(void);
voidreplaceChar()
inti,j,y;
totleLine;
for(j=0;
COL;
y=(int)inBuf[i][j]/16+(int)inBuf[i][j];
//将ASCII码右移4位,再加上自身的值
inBuf[i][j]=(char)y;
//将整型转换成字符型存入inBuf中
system("
CLS"
if(readData())
printf("
IN.DATcan'
tbeopen!
\n\007"
return;
replaceChar();
intreadData(void)
inti=0;
char*p;
if((fp=fopen("
))==NULL)return1;
while(fgets(inBuf[i],COL+1,fp)!
=NULL)
p=strchr(inBuf[i],'
\n'
if(p)*p=0;
i++;
totleLine=i;
voidwriteData(void)
{
totleLine;
i++)
%s\n"
inBuf[i]);
4补充函数,要求实现如下功能:
寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(回文数是指各位数字左右对称的整数),例如:
12321,505,1458541等。
满足上述条件的数如m=11时,m2=121,m3=1331都是回文数。
请编写jsValue(longm)实现此功能。
如果是回文数,则函数返回1,不是则返回0。
最后,把结果输出到文件OUT.DAT中。
部分源程序已经给出。
请勿改动主函数Main()中的内容。
conio.h>
typedefstruct{
chardm[5];
/*产品代码*/
charmc[11];
/*产品名称*/
intdj;
/*单价*/
intsl;
/*数量*/
longje;
/*金额*/
}PRO;
PROsell[MAX];
voidReadDat();
voidWriteDat();
voidSortDat()
{inti,j;
PROxy;
99;
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交换
memset(sell,0,sizeof(sell));
ReadDat();
SortDat();
voidReadDat()
charstr[80],ch[11];
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;
voidWriteDat()
OUT7.DAT"
%s%s%4d%5d%5d\n"
sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
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为奇数的平均值。
部分源程序已给出如下:
试题程序
for(i=0;
{fscanf(fp,"
i++)
if(xx[i]%2)//测试结点i是否是奇数
{yy[odd++]=xx[i];
//将结点i存入数组yy中
}//将结点i累加存入ave1中
else//如果结点i不是奇数
{even++;
//累加变量even记录偶数数的个数
}//将xx[i]累加存入ave2中
//计算奇数数的平均数
//计算偶数数的平均数
odd;
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()的内容。
if(strcmp(sell[i].mc,sell[j].mc)<
0//如果产品i的产品名称大于产品j的产品名称
sell[i].je<
sell[j].je)//如果产品i的金额小于产品j的金额
{xy=sell[i];
7
请编制函数Compute(),分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
totfc=1/N∑(xx[i]-aver)
{fscanf(fp,"
if((i+1)%10==0)//每行读取10个数
{inti;
{if(xx[i]%2)//测试结点i是否是奇数
odd++;
else//如果结点i不是奇数
even++;
//累加变量even记录偶数数的个数
aver+=xx[i];
}//将xx[i]累加存入aver中
aver/=MAX;
//计算平均数
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;
LINE;
sum=0;
//将总和清零
for(j=0;
j++)sum+=(inBuf[i][j]-'
0'
//将ASCII码转化成对应的数字,并加入到总和中
if(sum>
0&
sum<
COL)//如果该选票全选或不选,则视为无效选票
useful[k]=i;
//将有效的选票的标号放到数组useful中
k++;
//将有效选票的计数器加1
use_i=k;
//记录有效选票的个数
for(k=0;
k<
use_i;
k++)outBuf[j]+=(inBuf[useful[k]][j]-'
//
9已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。
按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。
if(strcmp(sell[i].dm,sell[j].dm)<
0//如果产品i的产品代码小于产
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 三级 网络技术 上机 部分 天河 教育 word