当前位置:编程学习 > C/C++ >>

关于用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语言大程序,谁能帮我看一下

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,