c语言上机程序.docx

上传人:b****6 文档编号:16539482 上传时间:2023-07-14 格式:DOCX 页数:231 大小:75.36KB
下载 相关 举报
c语言上机程序.docx_第1页
第1页 / 共231页
c语言上机程序.docx_第2页
第2页 / 共231页
c语言上机程序.docx_第3页
第3页 / 共231页
c语言上机程序.docx_第4页
第4页 / 共231页
c语言上机程序.docx_第5页
第5页 / 共231页
c语言上机程序.docx_第6页
第6页 / 共231页
c语言上机程序.docx_第7页
第7页 / 共231页
c语言上机程序.docx_第8页
第8页 / 共231页
c语言上机程序.docx_第9页
第9页 / 共231页
c语言上机程序.docx_第10页
第10页 / 共231页
c语言上机程序.docx_第11页
第11页 / 共231页
c语言上机程序.docx_第12页
第12页 / 共231页
c语言上机程序.docx_第13页
第13页 / 共231页
c语言上机程序.docx_第14页
第14页 / 共231页
c语言上机程序.docx_第15页
第15页 / 共231页
c语言上机程序.docx_第16页
第16页 / 共231页
c语言上机程序.docx_第17页
第17页 / 共231页
c语言上机程序.docx_第18页
第18页 / 共231页
c语言上机程序.docx_第19页
第19页 / 共231页
c语言上机程序.docx_第20页
第20页 / 共231页
亲,该文档总共231页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言上机程序.docx

《c语言上机程序.docx》由会员分享,可在线阅读,更多相关《c语言上机程序.docx(231页珍藏版)》请在冰点文库上搜索。

c语言上机程序.docx

c语言上机程序

1.调用函数rwdata(),从IN.dat文件中读取10组数据(m和k值),并嵌套调用primenum函数分别得出array[]数组。

请编写函数primenum(intm,intk,intarray[]),该函数的功能是:

将紧靠m的k个素数存入数组array并在屏幕上显示。

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

例如,若输入39,则应输出5711131719232931。

注意:

部分程序已经给出。

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

#include

#include

voidrwdata();

voidprimenum(intm,intk,intarray[])

{

}

main()

{intm,n,array[1000];

printf("\nPleaseentertwointegers:

");

scanf("%d%d",&m,&n);

primenum(m,n,array);

for(m=0;m

printf("%d",array[m]);

printf("\n");

rwdata();

}

voidrwdata()

{intm,n,array[1000],i;

FILE*readfile,*writefile;

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

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

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

{fscanf(readfile,"%d%d",&m,&n);

primenum(m,n,array);

for(m=0;m

fprintf(writefile,"%d",array[m]);

fprintf(writefile,"\n");

}

fclose(readfile);

fclose(writefile);

}

【答案】

voidprimenum(intm,intk,intarray[])

{intvalue=m+1;

inthalf,n=0,i;

while

(1)

{half=value/2;

for(i=2;i<=half;i++)

if(value%i==0)

break;

if(i>half)

{array[n]=value;

n++;

}

if(n>=k)

break;

value++;

}

}

2.在文件IN.dat中有200个正整数,且每个数均在1000~9999之间。

函数RData()读取这200个数存放到数组original中。

请编写函数numAscend(),其功能是:

要求按每个数的后3位的大小进行升序排列,然后取出满足此条件的前10个数依次存入数组result中,如果后3位的数值相等,则按原先的数值进行降序排列。

最后调用函数WData(),把结果result输出到文件OUT.dat中。

例如,处理前:

60125099901270258088

处理后:

90126012702580885099

注意:

部分程序已给出。

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

#include

#include

#include

intoriginal[200],result[10];

voidnumascend()

{

}

voidRData()

{FILE*in;

inti;

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

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

fscanf(in,"%d,",&original[i]);

fclose(in);

}

voidWData()

{FILE*out;

inti;

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

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

{printf("%d",result[i]);

fprintf(out,"%d\n",result[i]);

}

fclose(out);

}

voidmain()

{RData();

numascend();

WData();

}

【答案】

voidnumascend()

{inti,j,data;

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

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

{if(original[i]%1000>original[j]%1000)

{data=original[i];

original[i]=original[j];

original[j]=data;

}

elseif(original[i]%1000==original[j]%1000)

{if(original[i]

{data=original[i];

original[i]=original[j];

original[j]=data;

}

}

}

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

result[i]=original[i];

}

3.已知文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。

其中:

金额=单价×数量。

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

请编写函数DescSort(),其功能要求:

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

注意:

部分程序已给出。

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

#include

#include

#include

#include

#defineMAX100

typedefstruct

{charcode[5];/*产品代码*/

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

intuprice;/*单价*/

intamount;/*数量*/

longsum;/*金额*/

}PRO;

PROsell[MAX];

voidRData();

voidWData();

voidDescSort()

{

}

voidmain()

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

RData();

DescSort();

WData();

}

voidRData()

{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].code,str,4);

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

memcpy(ch,str+14,4);

ch[4]=0;

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

memcpy(ch,str+18,5);

ch[5]=0;

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

sell[i].sum=(long)sell[i].uprice*sell[i].amount;

}

fclose(fp);

}

voidWData(void)

{FILE*fp;

inti;

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

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

{printf("%s%s%4d%5d%5d\n",

sell[i].code,sell[i].name,sell[i].uprice,sell[i].amount,sell[i].sum);

fprintf(fp,"%s%s%4d%5d%5d\n",

sell[i].code,sell[i].name,sell[i].uprice,sell[i].amount,sell[i].sum);

}

fclose(fp);

}

【答案】

voidDescSort()

{inti,j;

PROtemp;

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

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

if(strcmp(sell[i].code,sell[j].code)<0)

{temp=sell[i];

sell[i]=sell[j];

sell[j]=temp;

}

elseif(strcmp(sell[i].code,sell[j].code)==0)

{if(sell[i].sum

{temp=sell[i];

sell[i]=sell[j];

sell[j]=temp;

}

}

}

4.函数RData()实现从文件IN.dat中读取一篇英文文章,存入到字符串数组str中;请编写encryptChar()函数,其功能是:

按给定的替代关系对数组str中的所有字符进行替代,仍存入数组str对应的位置上,最后调用函数WData(),把结果str输出到文件OUT.dat中。

替代关系:

f(p)=p*11mod256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于1等于32或大于130,则该字符不变,否则将f(p)所对应的字符进行替代。

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

每行的宽度均小于80个字符。

注意:

部分程序已给出。

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

#include

#include

#include

#include

unsignedcharstr[50][80];

intmaxline=0;/*文章的总行数*/

intRData(void);

voidWData(void);

voidencryptChar()

{

}

voidmain()

{if(RData())

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

\n\007");

return;

}

encryptChar();

WData();

}

intRData(void)

{FILE*fp;

inti=0;

unsignedchar*p;

if((fp=fopen("IN.dat","r"))==NULL)

return1;

while(fgets(str[i],80,fp)!

=NULL)

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

if(p)

*p=0;

i++;

}

maxline=i;

fclose(fp);

return0;

}

voidWData(void)

{FILE*fp;

inti;

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

for(i=0;i

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

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

}

fclose(fp);

}

【答案】

voidencryptChar()

{inti;

char*pf;

for(i=0;i

{pf=str[i];

while(*pf!

=0)

{if(*pf*11%256<=130&&*pf*11%256>32)

*pf=*pf*11%256;

pf++;

}

}

}

5.函数RData()实现从文件IN.dat中读取一篇英文文章存入到字符串数组str中,请编写函数DescSort(),其功能是:

以行为单位对字符按从大到小的顺序进行排序,排序后的结果仍按行重新存入字符串数组str中,最后调用函数WData(),把结果str输出到文件OUT.dat中。

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

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

例如,原文:

dAeBfC.

CcbbAA

结果:

fedCBA.

cbbCAA

注意:

部分程序已给出。

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

#include

#include

#include

charstr[50][80];

intmaxline=0;/*文章的总行数*/

intRData(void);

voidWData(void);

voidDescSort(void)

{

}

voidmain()

{if(RData())

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

\n\007");

return;

}

DescSort();

WData();

}

intRData(void)

{FILE*fp;

inti=0;

char*p;

if((fp=fopen("IN.dat","r"))==NULL)

return1;

while(fgets(str[i],80,fp)!

=NULL)

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

if(p)

*p=0;

i++;

}

maxline=i;

fclose(fp);

return0;

}

voidWData(void)

{FILE*fp;

inti;

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

for(i=0;i

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

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

}

fclose(fp);

}

【答案】

voidDescSort(void)

{inti,j,k,strl;

charch;

for(i=0;i

{strl=strlen(str[i]);

for(j=0;j

for(k=j+1;k

if(str[i][j]

{ch=str[i][j];

str[i][j]=str[i][k];

str[i][k]=ch;

}

}

}

6函数RData()实现从文件IN.dat中读取一篇英文文章存入字符串数组original中,请编写StrCharMove()函数,其功能是:

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

最后把已处理的字符串仍按行重新存入字符串数组original中。

最后调用函数WData(),把结果original输出到文件OUT.dat中。

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

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

注意:

部分程序已给出。

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

#include

#include

#include

charoriginal[50][80];

intmaxline=0;/*文章的总行数*/

intRData(void);

voidWData(void);

voidStrCharMove(void)

{

}

voidmain()

{if(RData())

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

\n\007");

return;

}

StrCharMove();

WData();

}

intRData(void)

{FILE*fp;

inti=0;

char*p;

if((fp=fopen("IN.dat","r"))==NULL)

return1;

while(fgets(original[i],80,fp)!

=NULL)

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

if(p)

*p=0;

i++;

}

maxline=i;

fclose(fp);

return0;

}

voidWData(void)

{FILE*fp;

inti;

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

for(i=0;i

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

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

}

fclose(fp);

}

【答案】

voidStrCharMove(void)

{inti,j,strl;

for(i=0;i

{strl=strlen(original[i]);

for(j=0;j

original[i][j]+=original[i][j]>>4;

}

}

7.编写函数findStr(),其功能是:

统计一个长度为2的子字符串在另一个字符串中出现的次数。

例如,假定输入的字符串为"asdasasdfgasdaszx67asdmklo",子字符串为"as",函数返回值是6。

函数ReadWrite()实现从文件IN.dat中读取两个字符串,并调用函数findStr(),最后,把结果输出到文件OUT.dat中。

注意:

部分程序已经给出。

请勿改动主函数main()和其他函数中的任何内容,仅在函数findStr()的花括号中填入编写的若干语句。

#include

#include

#include

intfindStr(char*str,char*substr)

{

}

voidReadWrite()

{charstr[81],substr[10],ch;

intn,len,i=0;

FILE*rf,*wf;

rf=fopen("IN.dat","r");

wf=fopen("OUT.dat","w");

while(i<25)

{fgets(str,81,rf);

fgets(substr,10,rf);

len=strlen(substr)-1;

ch=substr[len];

if(ch=='\n'||ch==0x1a)

substr[len]=0;

n=findStr(str,substr);

fprintf(wf,"%d\n",n);

i++;

}

fclose(rf);

fclose(wf);

}

main()

{charstr[81],substr[10];

intn;

printf("输入原字符串:

");

gets(str);

printf("输入子字符串:

");

gets(substr);

puts(str);

puts(substr);

n=findStr(str,substr);

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

ReadWrite();

}

【答案】

intfindStr(char*str,char*substr)

{intn;

char*p,*r;

n=0;

while(*str)

{p=str;

r=substr;

while(*r)

if(*r==*p)

{r++;

p++;

}

else

{break;

}

if(*r=='\0')

n++;

str++;

}

returnn;

}

8.请编写函数CountValue(),它的功能是:

求n以内(不包括n),同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。

主函数最后调用函数progReadWrite()从IN.dat文件中读取10组数据,分别得出结果,且把结果输出到文件OUT.dat中。

例如,若n为1000时,函数值应为:

s=153.909064。

注意:

部分程序已经给出。

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

#include

#include

#include

doubleCountValue(intn)

{

}

voidprogReadWrite()

{FILE*fp,*wf;

inti,n;

floats;

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

if(fp==NULL)

{printf("数据文件in.dat不存在!

");

return;

}

wf=fope

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

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2