大家帮忙给我讲讲这个!(在线等)

stophere_cn 2003-01-07 08:34:03
/*我的第一个程序的目的是以二进制的格式向zhaoxwen这个文件中输入10个数
第二个程序的目的是以二进制打开,并计算它们的和,输出在屏幕上!

//first program
#include<stdio.h>
#include<iostream.h>
//#include<stderr.h>

void main ()
{
int record[10],sum=0;

for(int i=0;i<10;i++)
{
scanf("%i",&record[i]);
}
FILE* pf1;
pf1=fopen("zhaoxwen","wb");
for(i=0;i<10;i++)fwrite(&record[i],sizeof (int),1,pf1);
// fputc(record[i],pf1);
fclose(pf1);
}
//Second propram
#include<stdio.h>
#include<iostream.h>
//#include<stderr.h>

void main (int argc,char* argr[])
{
int record[10],sum=0;
if(argc!=2)
{
cout<<"You forget to enter the FileName!\n";
}


FILE* pf2;

if ((pf2=fopen(argr[1],"rb"))==NULL)
{
cout<<"Can not open the File!";
// exit(0);
}

for(int i=0;i<10;i++)
{
// record[i]=fgetc(pf2);
fread(&record[i],sizeof(int),1,pf2)
}
fclose(pf2);
cout<<record[0]<<record[1];
cout<<"Sum="<<record[0];
for(i=0;i<10;i++)
{
sum=sum+record[i];
if(i!=0)
cout<<"+"<<record[i];
if(i%5==0)cout<<endl;
}
cout<<"="<<sum;

}

干脆点!原题如下:
一、在硬盘的C:\data\record.dat文件中,以二进制方式存放了100个整型数据。要求编写程序将该文件中的数据以文本文件的形式转存到另外的文件中去,文本文件中每行10个数据,每行中的相临数据用一个空格分隔。为应用方便,需使用命令行参数,其中必须的参数是:转存到的可能带有路径的目标文件名。例如:若你编写的工程文件名是convert.prj,生成的可执行文件名是convert.exe,在DOS提示符下键入convert C:\data\goal.txt ,则应将原文件C:\data\record.dat转存到C:\data\goal.txt中。

二、在硬盘的C:\data\record.dat文件中,以二进制方式存放了100个整型数据。要求编程完成:
(1) [10分]将该文件中的数据求和并打印显示出来。
(2) [10分]将该100个数构成的集合的所有子集合打印显示出来。


问题是:如何实现问题一中的 convert C:\data\goal.txt 和问二中的(2),打印其所有子集合
...全文
15 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
stophere_cn 2003-01-09
  • 打赏
  • 举报
回复
解决了
l_clove 2003-01-08
  • 打赏
  • 举报
回复
还没解决么?
stophere_cn 2003-01-07
  • 打赏
  • 举报
回复
to I_clove:
就是求子集合,例如{1,2,3,4}
子集合是2的4次方个:{}{1}{2}{3}{4}{12}{13}{14}{23}{24}{34}{123}{124}{134}{234}{1234}
dszch 2003-01-07
  • 打赏
  • 举报
回复
我不懂,我也想学学!
virginsoldier 2003-01-07
  • 打赏
  • 举报
回复
int main(int argc, char *argv[])
{
if(argc<2)
return -1;

pf1=fopen(argv[1],wb");

...............
}
就可以实现在dos命令行下输入convert C:\data\goal.txt运行程序。
rafter263 2003-01-07
  • 打赏
  • 举报
回复
mk
l_clove 2003-01-07
  • 打赏
  • 举报
回复
你直接按二进制存当然不能用notebook看了,用sprintf转换成字符型吧,
打印所有子集是什么意思,不会是这样吧:(100选2)+(100选3)+(100选4)+...+(100选99)+(100选100)?
kofkim 2003-01-07
  • 打赏
  • 举报
回复
pf1=fopen("c:\\data\\goal\\zhaoxwen.txt","wb");
stophere_cn 2003-01-07
  • 打赏
  • 举报
回复
我只知道一种解法 用for循环做 利用二进制 判断在不在
l_clove 2003-01-07
  • 打赏
  • 举报
回复
是啊,我就是这意思,组合问题么,不好意思离散数学学的不好,不知道标准的算法该如何,但这个问题用循环总是可以解决的吧?用一个大小100的数组,循环形成它的子集...

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧