三网上机100套题.docx

上传人:b****8 文档编号:11360748 上传时间:2023-02-28 格式:DOCX 页数:269 大小:85.58KB
下载 相关 举报
三网上机100套题.docx_第1页
第1页 / 共269页
三网上机100套题.docx_第2页
第2页 / 共269页
三网上机100套题.docx_第3页
第3页 / 共269页
三网上机100套题.docx_第4页
第4页 / 共269页
三网上机100套题.docx_第5页
第5页 / 共269页
点击查看更多>>
下载资源
资源描述

三网上机100套题.docx

《三网上机100套题.docx》由会员分享,可在线阅读,更多相关《三网上机100套题.docx(269页珍藏版)》请在冰豆网上搜索。

三网上机100套题.docx

三网上机100套题

三网上机试题

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

其中:

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

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

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

按产品名称从小到大进行排列,若产品名称相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中。

最后main()函数调用函数WriteDat()把结果输出到文件OUT10.DAT中。

提示:

若中间变量为PROtemp,则可以直接使用结构赋值语句进行解题;产品名称比较请用函数strcmp进行解题。

例如:

sell[i]=temp;

注意:

部分源程序存在文件prog1.c中。

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

本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。

同时要注意的是比较产品名称大小的时候用strcmp()函数实现。

程序使用两次二重循环来实现要求的功能。

#include

#include

#include

#include

#defineMAX100

typedefstruct{

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

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

intdj;/*单价*/

intsl;/*数量*/

longje;/*金额*/

}PRO;

PROsell[MAX];

voidReadDat();

voidWriteDat();

voidSortDat()

{

}

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(void)

{FILE*fp;

inti;

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

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

printf("%s%s%4d%5d%10d\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);}

voidSortDat()

{inti,j;

PROcell;/*定义结构变量*/

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

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

if(strcmp(sell[i].mc,sell[j].mc)>0)/*strcmp()函数功能是比较产品名称大小*/

{cell=sell[i];/*按产品代码从小到大进行排序处理*/

sell[i]=sell[j];

sell[j]=cell;

}

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

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

if((strcmp(sell[i].mc,sell[j].mc)==0)&&(sell[i].je

{cell=sell[i];

sell[i]=sell[j];

sell[j]=cell;

}}

2、函数ReadDat()实现从文件in.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。

请编制函数jsSort(),其函数的功能是:

以行为单位对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数WriteDat()把结果xx输出到文件out.dat中。

  例如:

位置   0 1 2 3 4 5 6 7 

     源字符串 hgfedcba

则处理后字符串hafcdebg

  部分源程序存在文件prog1.c中。

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

本题for循环条件里采用的步长为2,这是因为要求只对下边为奇数的元素进行判断。

程序使用三重循环来实现要求的功能。

外层的while循环用来实现行间遍历,内层的二重for循环用来遍历行内下标为奇数的元素。

#include

#include

#include

#include

charxx[20][80];

voidjsSort()

{

}

readDat()

{FILE*in;

inti=0;

char*p;

in=fopen("in.dat","r");

while(i<20&&fgets(xx[i],80,in)!

=NULL){

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

if(p)*p=0;

i++;}

fclose(in);}

writeDat()

{FILE*out;

inti;

out=fopen("out.dat","w");

system("cls");

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

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

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

}

fclose(out);

}

voidmain()

{readDat();

jsSort();

writeDat();}

voidjsSort()

{inti,j,k,l,p,temp;/*定义局部变量*/

i=0;

while(i<20)/*判断i的值若小于20,则执行内嵌语句*/

{j=strlen(xx[i]);/*strlen(xx[i])函数的功能是统计第i行字符串中字符的个数*/

for(k=1;k

{p=k;

for(l=k+2;l

if(xx[i][l]

p=l;

if(p!

=k)

{temp=xx[i][p];

xx[i][p]=xx[i][k];

xx[i][k]=temp;

}}

i++;}}

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

其中:

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

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

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

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

部分源程序存在文件prog1.c中。

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

本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。

同时要注意的是比较代码大小的时候不能直接比较,因为它们都是字符串。

正确的比较方法是用atoi对代码做变换。

程序使用两次二重循环来实现要求的功能。

#include

#include

#include

#include

#defineMAX100

typedefstruct{

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

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

intdj;/*单价*/

intsl;/*数量*/

longje;/*金额*/

}PRO;

PROsell[MAX];

voidReadDat();

voidWriteDat();

voidSortDat()

{

}

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(void)

{FILE*fp;

inti;

fp=fopen("OUT8.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);

}

voidSortDat()

{inti,j;

PROcell;/*定义结构变量*/

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

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

if(atoi(sell[i].dm)

{cell=sell[i];/*按产品代码从大到小进行排序处理*/

sell[i]=sell[j];

sell[j]=cell;

}

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

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

if((atoi(sell[i].dm)==atoi(sell[j].dm))&&(sell[i].je

{cell=sell[i];

sell[i]=sell[j];

sell[j]=cell;

}

}

4、下列程序prog1.c的功能是:

在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。

请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。

最后调用函数writeDat()把结果输出到文件out.dat中。

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

本题采用for循环结合if语句来实现功能。

循环的起始点为10,终止点32。

因为此二者的平方恰好包括了100和1000。

在循环体内计算出变量a的值,这样可以保证每次检查的数都是平方数。

然后再得出此数的各位数值。

如果符合条件则将其传递给数组bb。

#include

intjsValue(intbb[])

{

}

writeDat(intnum,intb[])

{FILE*out;

inti;

out=fopen("out.dat","w");

printf("%d\n",num);

fprintf(out,"%d\n",num);for(i=0;i

fclose(out);

}

main()

{intb[20],num;

num=jsValue(b);

writeDat(num,b);

}

intjsValue(intbb[])

{inti,a,d,e,c,p;/*定义局部变量*/

p=0;

for(i=10;i<32;i++)/*设置循环起始值和终止值*/

{a=i*i;/*设定检查的数是平方数*/

if(a>=100&&a<1000)/*判断a的取值范围*/

{c=a/100;/*求数值的百位数的数字*/

e=(a-c*100)/10;/*求数值的十位数的数字*/

d=a-c*100-e*10;/*求数值的个位数的数字*/

if((c==e)||(c==d)||(d==e))/*判断数值是否有两位数字相同*/

{bb[p]=a;/*将符合条件的数值存入数组中*/

p++;}

}

}

returnp--;

}

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

其中:

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

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

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

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

部分源程序存在文件prog1.c中。

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

本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。

同时要注意的是比较代码大小的时候不能直接比较,因为它们都是字符串。

正确的比较方法是用atoi对代码做变换。

程序使用两次二重循环来实现要求的功能。

#include

#include

#include

#include

#defineMAX100

typedefstruct{

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

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

intdj;/*单价*/

intsl;/*数量*/

longje;/*金额*/

}PRO;

PROsell[MAX];

voidReadDat();

voidWriteDat();

voidSortDat()

{

}

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

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(void)

{FILE*fp;

inti;

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

for(i=0;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);

}

voidSortDat()

{inti,j;

PROcell;/*定义结构变量*/

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

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

if(sell[i].je

{cell=sell[i];/*按金额从大到小进行排序处理*/

sell[i]=sell[j];

sell[j]=cell;

}

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

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

if((atoi(sell[i].dm)

{cell=sell[i];/*按产品代码从大到小进行排序处理*/

sell[i]=sell[j];

sell[j]=cell;

}}

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

其中:

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

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

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

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

部分源程序存在文件prog1.c中。

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

本题为了实施两个数组元素的交换,另外定义了一个结构变量cell。

同时要注意的是比较代码大小的时候不能直接比较,因为它们都是字符串。

正确的比较方法是用atoi对代码做变换。

程序使用两次二重循环来实现要求的功能。

#include

#include

#include

#include

#defineMAX100

typedefstruct{

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

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

intdj;/*单价*/

intsl;/*数量*/

longje;/*金额*/

}PRO;

PROsell[MAX];

voidReadDat();

voidWriteDat();

voidSortDat()

{

}

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(void)

{FILE*fp;

inti;

fp=fopen("OUT2.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);

}

voidSortDat()

{inti,j;

PROcell;/*定义结构变量*/

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

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

if(sell[i].je>sell[j].je)/*判断金额的大小*/

{cell=sell[i];/*按金额从小到大进行排序处理*/

sell[i]=sell[j];

sell[j]=cell;

}

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

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

if((atoi(sell[i].dm)

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

当前位置:首页 > IT计算机 > 计算机硬件及网络

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

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