关于用VC++6.0 C语言写程序 对数据的输入输出计算
编写程序:从键盘输入某宿舍楼6家用户某月水电消耗量及水费和电费标准,计算各用户应缴纳的水费和电费。数据及要求如下(最好程序在关键语句用/*。。。。*/解释该语句的作用。因为是作业,所以希望高手们能用初学者简单易懂点的语句,比如,循环,数组,指针,结构体,函数调用,选择……)(1)水费标准:1.5元/吨 电费标准 :0.5元/度 6户人家信息如下
将上表中信息按下面格式组织在文件 input.dat 中;
1.5 0.5
101 5 150
201 4 90
301 4 120
401 3 78
501 5 60
601 6 105
要求程序从文件
input.dat 中读入上述数据。
(2)分别计算每户应该缴纳的电费,水费,以及电费和水费的总和。
(3)汇总全部住户水费,电费的总和。
(4)将计算结果按下表所示格式写入文件 charge.dat 中 ,表格线不必输出,如果实验环境不支持中文,可以用英文代替。
望高手解答 小子感激不尽···
追问:谢谢··辛苦了··大概看得懂,但是我们使用的是VC++6.0软件·····这样写的话老师一看就知道我不是自己写的了····而且我理解也比较难·····能不能改成VC++6.0 环境下的语句?
答案:做了3小时,出来了:#include <iostream>
using namespace std;
int main()
{
double c1=1.5;//水费价格
double c2=0.5;//电费价格
char addr[6][5]={"101","201","301","401","501","601"};//住户地址
double w[6];//消耗水量
double e[6];//消耗电量
double wp[6];//应缴水费
double ep[6];//应交电费
int i;
cout<<"请输入用户的水电消耗量"<<endl;
for(i=0;i<6;i++)
{
cout<<"用户"<<i+1<<endl;
cout<<"耗水量:";
cin>>w[i];
cout<<"耗电量:";
cin>>e[i];
}
FILE *fp; /*文件指针*/
fp=fopen("D:\\input.dat","wb+");//D盘下自动建立文件
if(fp==NULL)
{
cout<<"\n=====>提示:文件input.dat不能打开!\n";
exit(0);
}
cout<<"\n=====>提示:文件input.dat已经打开,正在导入记录......\n";
fprintf(fp,"%.1lf %.1lf",c1,c2);
fprintf(fp,"\r\n");//C++文件里换行
for(i=0;i<6;i++)
{
fprintf(fp,"%s %.0lf %.0lf",addr[i],w[i],e[i]);
fprintf(fp,"\r\n");
}
fclose(fp);//关闭文件input.dat
//计算应交水电费
for(i=0;i<6;i++)
{
wp[i]=w[i]*c1;
ep[i]=e[i]*c2;
}
double p1[6];//水电费之和
double p2[5]={0.0,0.0,0.0,0.0,0.0};//
for(i=0;i<6;i++)
{
p1[i]=wp[i]+ep[i];
p2[0]+=w[i];//各用户耗水量之和
p2[1]+=wp[i];//各用户水费之和
p2[2]+=e[i];//各用户耗电量之和
p2[3]+=ep[i];//各用户电费之和
p2[4]+=p1[i];//所有用户水电费总和
}
fp=fopen("D:\\charge.dat","wb+");//D盘下自动建立文件
if(fp==NULL)
{
cout<<"\n=====>提示:文件charge.dat 不能打开!\n";
exit(0);
}
cout<<"\n=====>提示:文件charge.dat 已经打开,正在导入记录......\n";
fprintf(fp,"%-10s%-8s%-8s%-8s%-8s%-8s","住户地址","水耗(吨)","水费(元)","电耗(度)","电费(元)","合计(元)");
fprintf(fp,"\r\n");//C++文件里换行
for(i=0;i<6;i++)
{
fprintf(fp,"%-12s%-10.0lf%-11.1lf%-8.0lf%-8.1lf%-8.1lf",addr[i],w[i],wp[i],e[i],ep[i],p1[i]);
fprintf(fp,"\r\n");
}
fprintf(fp,"%-12s%-10.0lf%-11.1lf%-8.0lf%-8.1lf%-8.1lf","TATOL",p2[0],p2[1],p2[2],p2[3],p2[4]);
fprintf(fp,"\r\n");
fclose(fp);//关闭文件charge.dat
return 0;
}
运行完毕后用记事本打开文件即可看到数据信息~~
不知道是不是你想要的。。。。^_^
#include <stdio.h>
#define MAX_SIZE 20
#define INPUTDATA "c:\\input.data"
#define CHARGEDATA "c:\\charge.data"
typedef struct _priceinfo_
{
float water;
float power;
}price,*pprice;
typedef struct _userinfo_
{
int addr;
int usewater;
int usepower;
}userinfo, *puserinfo;
price g_value;
userinfo g_user[MAX_SIZE];
int g_count=0;
int readfile()
{
FILE *fp;
int flags=0;
if((fp=fopen(INPUTDATA, "ra+")) == NULL)
{
printf("Cannot open file.\n");
return 0;
}
//读出价格表
fscanf(fp, "%f%f", &g_value.water, &g_value.power);
while(g_count<MAX_SIZE)
{
if(flags==2)
break;
if(-1==fscanf(fp, "%d%d%d", &g_user[g_count].addr, &g_user[g_count].usewater, &g_user[g_count].usepower))
{
flags++;
continue;
}
flags=0;
++g_count;
}
fclose(fp);
return 1;
}
int writefile()
{
int i=0;
FILE *fp;
size_t totalusewater=0;
size_t totalusepower=0;
if((fp=fopen(CHARGEDATA, "wa+")) == NULL)
{
printf("Cannot open file.\n");
return 0;
}
fputs("住户地址\t水耗(吨)\t小费(元)\t电耗(度)\t电费(元)\t合计(元)\n", fp);
for(; i<g_count; i++)
{
totalusewater+=g_user[i].usewater;
totalusepower+=g_user[i].usepower;
fprintf(fp, "%d\t\t%d\t\t%0.1f\t\t%d\t\t%0.1f\t\t%0.1f\n", \
g_user[i].addr, g_user[i].usewater, g_user[i].usewater*g_value.water,
g_user[i].usepower, g_user[i].usepower*g_value.power,
g_user[i].usewater*g_value.water+g_user[i].usepower*g_value.power);
}
fprintf(fp,"TOTAL\t\t%d\t\t%0.1f\t\t%d\t\t%0.1f\t\t%0.1f\n", totalusewater, totalusewater*g_value.water, totalusepower, totalusepower*g_value.power,\
totalusewater*g_value.water+totalusepower*g_value.power);
fclose(fp);
return 1;
}
int main(int argc, char* argv[])
{
readfile();
writefile();
return 0;
}
上一个:Delphi和C++(或者说pascal和C语言)哪个比较好?
下一个:有个C语言大程序,谁能帮我看一下