求有VC6的朋友帮忙运行一个简单程序
范例:建立一个应用程序,包括数据输入,存盘,读盘,操作数据后存储.通过随机数函数rand()产生20个整数,逐个将这些数以二进制方式写入文件file.dat中.然后读出这...
范例:建立一个应用程序,包括数据输入,存盘,读盘,操作数据后存储.通过随机数函数rand()产生20个整数,逐个将这些数以二进制方式写入文件file.dat中.然后读出这些数,在内存中对它们进行增序排序,再将排序后的数以文本方式逐个写入file.out文件中.
[程序] 用C++的文件流进行文件管理,用流类的函数进行文件读写.
程序
#include //可以不写
#include
#include
using namespace std;
const int n=20;
void sort(int [],int);
int main(){
fstream dat, out; //定义文件流对象
int i,a[n],b[n];
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){ //文件不存在
dat.clear(0); //清状态字
dat.open("file.dat",ios::out|ios::binary);//文件不存在,建立二进制文件
dat.close();
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){
cout<<"cannot open file\n";
return -1;
}
}
for(i=0;i a[i]=rand();
dat.write((char*)&a[i],sizeof(int));//将20个数写入文件
}//因文件打开时,文件指针在头部,所以该操作是刷新文件
dat.seekg(0); //将文件指针移至文件头
for(i=0;i dat.read((char*)&b[i],sizeof(int));//读出20个数
}
sort(b,n); //调用排序函数
for(i=0;i cout< if(i%5==4) cout<<'\n';
}
cout< out.open("file.out",ios::out); //为输出打开文本文件
if(!out){
cout<<"cannot open file\n";
return -1;
}
for(i=0;i out< if(i%5==4) out<<'\n';
}
out< out.close(); //关闭文件
dat.close();
return 0;
}
void sort(int x[],int m){ //排序函数
int i,j,k,t;
for(i=0;i k=i;
for(j=i+1;j if(k!=i){
t=x[i];x[i]=x[k];x[k]=t;
}
}
}
程序可能不是很正确,有能力的麻烦略微修改下.然后把程序发给我 slob@sina.com 或QQ838286(推荐) 展开
[程序] 用C++的文件流进行文件管理,用流类的函数进行文件读写.
程序
#include //可以不写
#include
#include
using namespace std;
const int n=20;
void sort(int [],int);
int main(){
fstream dat, out; //定义文件流对象
int i,a[n],b[n];
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){ //文件不存在
dat.clear(0); //清状态字
dat.open("file.dat",ios::out|ios::binary);//文件不存在,建立二进制文件
dat.close();
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){
cout<<"cannot open file\n";
return -1;
}
}
for(i=0;i a[i]=rand();
dat.write((char*)&a[i],sizeof(int));//将20个数写入文件
}//因文件打开时,文件指针在头部,所以该操作是刷新文件
dat.seekg(0); //将文件指针移至文件头
for(i=0;i dat.read((char*)&b[i],sizeof(int));//读出20个数
}
sort(b,n); //调用排序函数
for(i=0;i cout< if(i%5==4) cout<<'\n';
}
cout< out.open("file.out",ios::out); //为输出打开文本文件
if(!out){
cout<<"cannot open file\n";
return -1;
}
for(i=0;i out< if(i%5==4) out<<'\n';
}
out< out.close(); //关闭文件
dat.close();
return 0;
}
void sort(int x[],int m){ //排序函数
int i,j,k,t;
for(i=0;i k=i;
for(j=i+1;j if(k!=i){
t=x[i];x[i]=x[k];x[k]=t;
}
}
}
程序可能不是很正确,有能力的麻烦略微修改下.然后把程序发给我 slob@sina.com 或QQ838286(推荐) 展开
4个回答
展开全部
#include <fstream.h>
#include <stdlib.h>
//#include
const int n=20;
void sort(int [],int);
int main()
{
fstream dat, out; //定义文件流对象
int i,a[n],b[n];
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat)
{ //文件不存在
dat.clear(0); //清状态字
dat.open("file.dat",ios::out|ios::binary);//文件不存在,建立二进制文件
dat.close();
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat)
{
cout<<"cannot open file\n";
return -1;
}
}
for(i=0;i<n;i++)
{
a[i]=rand();
dat.write((char*)&a[i],sizeof(int));//将20个数写入文件
}//因文件打开时,文件指针在头部,所以该操作是刷新文件
dat.seekg(0); //将文件指针移至文件头
for(i=0;i<n;i++)
{
dat.read((char*)&b[i],sizeof(int));//读出20个数
}
sort(b,n); //调用排序函数
cout<<"排序后"<<endl;
for(i=0;i<n;i++)
{
cout<<b[i]<<endl;
if(i%5==4)
{
cout<<endl;
}
}
// cout<
out.open("file.out",ios::out); //为输出打开文本文件
if(!out)
{
cout<<"cannot open file\n";
return -1;
}
for(i=0;i<n;i++){
// out<
if(i%5==4) out<<'\n';
}
//out<
out.close(); //关闭文件
dat.close();
return 0;
}
void sort(int x[],int m)
{ //排序函数
int i,j,P;//P:暂存
bool exchange;
for(i=0;i<m;i++)
{ //最多做n-1趟排序
exchange=false;
for(j=m-1;j>=i;j--)
if(x[j+1]<x[j])
{//交换记录
P=x[j+1];
x[j+1]=x[j];
x[j]=P;
exchange=true;
}
if(!exchange) //本趟排序未发生交换,提前终止算法
return;
} //endfor(外循环)
}
运行结果:
排序后
41
41
491
2995
4827
5436
5705
6334
9961
11478
11942
15724
16827
18467
19169
23281
24464
26500
26962
28145
Press any key to continue
程序就修改到能运行,没具体猜测原来的功能。
#include <stdlib.h>
//#include
const int n=20;
void sort(int [],int);
int main()
{
fstream dat, out; //定义文件流对象
int i,a[n],b[n];
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat)
{ //文件不存在
dat.clear(0); //清状态字
dat.open("file.dat",ios::out|ios::binary);//文件不存在,建立二进制文件
dat.close();
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat)
{
cout<<"cannot open file\n";
return -1;
}
}
for(i=0;i<n;i++)
{
a[i]=rand();
dat.write((char*)&a[i],sizeof(int));//将20个数写入文件
}//因文件打开时,文件指针在头部,所以该操作是刷新文件
dat.seekg(0); //将文件指针移至文件头
for(i=0;i<n;i++)
{
dat.read((char*)&b[i],sizeof(int));//读出20个数
}
sort(b,n); //调用排序函数
cout<<"排序后"<<endl;
for(i=0;i<n;i++)
{
cout<<b[i]<<endl;
if(i%5==4)
{
cout<<endl;
}
}
// cout<
out.open("file.out",ios::out); //为输出打开文本文件
if(!out)
{
cout<<"cannot open file\n";
return -1;
}
for(i=0;i<n;i++){
// out<
if(i%5==4) out<<'\n';
}
//out<
out.close(); //关闭文件
dat.close();
return 0;
}
void sort(int x[],int m)
{ //排序函数
int i,j,P;//P:暂存
bool exchange;
for(i=0;i<m;i++)
{ //最多做n-1趟排序
exchange=false;
for(j=m-1;j>=i;j--)
if(x[j+1]<x[j])
{//交换记录
P=x[j+1];
x[j+1]=x[j];
x[j]=P;
exchange=true;
}
if(!exchange) //本趟排序未发生交换,提前终止算法
return;
} //endfor(外循环)
}
运行结果:
排序后
41
41
491
2995
4827
5436
5705
6334
9961
11478
11942
15724
16827
18467
19169
23281
24464
26500
26962
28145
Press any key to continue
程序就修改到能运行,没具体猜测原来的功能。
展开全部
以下是修改后正确的程序:
#include <iostream>//可以不写
#include <string>
#include <fstream>
using namespace std;
const int n=20;
void sort(int [],int);
int main(){
fstream dat, out; //定义文件流对象
int i,a[n],b[n];
char buff[10];
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){ //文件不存在
dat.clear(0); //清状态字
dat.open("file.dat",ios::out|ios::binary);//文件不存在,建立二进制文件
dat.close();
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){
cout<<"cannot open file\n";
return -1;
}
}
for(i=0;i < n; i++)
{
a[i]=rand();
memset(buff,'\0',sizeof(buff));
itoa(a[i],buff,10);
dat.write(buff,sizeof(buff));//将20个数写入文件
}//因文件打开时,文件指针在头部,所以该操作是刷新文件
dat.seekg(0); //将文件指针移至文件头
for(i=0;i < n; i++)
{
dat.read(buff,sizeof(buff));//读出20个数
b[i] = atoi(buff);
}
sort(b,n); //调用排序函数
for(i=0;i < n; i++)
{
cout << b[i];
if(i%5==4) cout<<'\n';
}
out.open("file.out",ios::out); //为输出打开文本文件
if(!out){
cout<<"cannot open file\n";
return -1;
}
for(i=0;i < n; i++)
{
out << b[i] << " ";
if(i%5==4) out<<'\n';
}
out.close(); //关闭文件
dat.close();
return 0;
}
void sort(int x[],int m){ //排序函数
int i,j,k,t;
for(i=0;i<n,k=i;i++)
for(j=i+1;j < n; j++)
{
if(k!=i){
t=x[i];x[i]=x[k];x[k]=t;
}
}
}
#include <iostream>//可以不写
#include <string>
#include <fstream>
using namespace std;
const int n=20;
void sort(int [],int);
int main(){
fstream dat, out; //定义文件流对象
int i,a[n],b[n];
char buff[10];
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){ //文件不存在
dat.clear(0); //清状态字
dat.open("file.dat",ios::out|ios::binary);//文件不存在,建立二进制文件
dat.close();
dat.open("file.dat",ios::out|ios::in|ios::binary);//为读写打开二进制文件
if(!dat){
cout<<"cannot open file\n";
return -1;
}
}
for(i=0;i < n; i++)
{
a[i]=rand();
memset(buff,'\0',sizeof(buff));
itoa(a[i],buff,10);
dat.write(buff,sizeof(buff));//将20个数写入文件
}//因文件打开时,文件指针在头部,所以该操作是刷新文件
dat.seekg(0); //将文件指针移至文件头
for(i=0;i < n; i++)
{
dat.read(buff,sizeof(buff));//读出20个数
b[i] = atoi(buff);
}
sort(b,n); //调用排序函数
for(i=0;i < n; i++)
{
cout << b[i];
if(i%5==4) cout<<'\n';
}
out.open("file.out",ios::out); //为输出打开文本文件
if(!out){
cout<<"cannot open file\n";
return -1;
}
for(i=0;i < n; i++)
{
out << b[i] << " ";
if(i%5==4) out<<'\n';
}
out.close(); //关闭文件
dat.close();
return 0;
}
void sort(int x[],int m){ //排序函数
int i,j,k,t;
for(i=0;i<n,k=i;i++)
for(j=i+1;j < n; j++)
{
if(k!=i){
t=x[i];x[i]=x[k];x[k]=t;
}
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sory,我的C已经卸掉了,没机会帮你运行了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询