Ⅰ c语言程序设计(周信东版)的综合程序设计如下:编写程序,从键盘输入某楼6家住户某月的水电消耗及水费和电费
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char user[4];
char waterNum[4];
char elecNum[4];
char inlinebuf[32];
char outlinebuf[32];
char pbuf[256];
FILE *fp1;
FILE *fp2;
int WaterNum=0;
int ElecNum=0;
int length =0;
int m=0;
int n=0;
int weishuflag=0;
int flagnum=0;
int i=0;
int j=0;
float waterPrice=0.0;
float elecPrice=0.0;
if((fp1=fopen("./input.dat","r"))==NULL)
{
printf("open input data error!\n");
return -1;
}
if((fp2=fopen("./change.dat","w"))==NULL)
{
printf("open input data error!\n");
return -1;
}
fseek(fp1,0,SEEK_END);
length = ftell(fp1);
fseek(fp1,0,SEEK_SET);
memset(pbuf,0,sizeof(pbuf));
printf("the input data length == %d\n",length);
fread(pbuf,length,1,fp1);
fseek(fp2, 0, SEEK_SET);
sprintf(outlinebuf,"住户\t\t水费\t\t电费\n");
fputs(outlinebuf, fp2);
while(length--)
{
if(pbuf[m]!='\n')
{
inlinebuf[n]=pbuf[m];
n++;
}
else
{
j = 0;
inlinebuf[n++]='\t'; //为处理每一行的最后一个数据(即用电量),需加入一个tab或空格键
inlinebuf[n] = '\0';//一行数据结束
while( inlinebuf[j] != '\0')
{
switch(flagnum)
{
case 0: //用户
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
user[i]=inlinebuf[j];
i++;
}
else
{
user[i]='\0';
flagnum++;//表示之前获取的是住户,下两个数据分别获取用水量与用电量
i=0;
}
break;
case 1: //用水量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
waterNum[i]=inlinebuf[j];
i++;
}
else
{
waterNum[i]='\0';
weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内
flagnum++;//表示下个数据获取的是用电量
if(weishuflag == 1)
{
WaterNum = waterNum[0] - 48;
}
else if(weishuflag == 2)
{
WaterNum = (waterNum[0] - 48)*10 + (waterNum[1] - 48);
}
else
{
WaterNum = (waterNum[0] - 48)*100 + (waterNum[1] - 48)*10 + (waterNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;
case 2: //用电量
if(inlinebuf[j] != ' ' && inlinebuf[j] != '\t')
{
elecNum[i]=inlinebuf[j];
i++;
}
else
{
elecNum[i]='\0';
weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内
flagnum = 0;//表示一行三个数据获取完毕
if(weishuflag == 1)
{
ElecNum = elecNum[0] - 48;
}
else if(weishuflag == 2)
{
ElecNum = (elecNum[0] - 48)*10 + (elecNum[1] - 48);
}
else
{
ElecNum = (elecNum[0] - 48)*100 + (elecNum[1] - 48)*10 + (elecNum[2] - 48);
}
i=0;
weishuflag = 0;
}
break;
default:
break;
}
j++;
}
waterPrice = (float)WaterNum * 1.5;
elecPrice = (float)ElecNum * 0.5;
printf("The user == %s,waterNum == %d,elecNum == %d\n",user,WaterNum,ElecNum);//打印用户,用水量,用电量
printf("The user == %s,waterPrice == %.1f,elecPrice == %.1f\n\n",user,waterPrice,elecPrice);//打印用户,水费,电费
sprintf(outlinebuf,"%3s \t\t%4.1f \t\t%4.1f\n",user,waterPrice,elecPrice);
fputs(outlinebuf, fp2);//写入每一行数据(数据格式为 住户 + 水费 + 电费)
memset(outlinebuf,0,sizeof(outlinebuf));
memset(inlinebuf,0,sizeof(inlinebuf));
n=0; //一行数据处理结束,开始新的一行
}
m++;
}
fclose(fp1);
fclose(fp2);
return 0;
}
input.dat(每一行数据分别为住户 用水量 用电量,以空格或tab键隔开,且每行数据必须以回车结尾)
101 5 150
201 4 90
301 4 120
401 3 78
501 4 60
601 6 105
charge.dat (输出文件格式如下)
住户 水费 电费
101 7.5 75.0
201 6.0 45.0
301 6.0 60.0
401 4.5 39.0
501 6.0 30.0
601 9.0 52.5
Ⅱ c语言编程分段计算水费
#include<stdio.h>
main()
{
float x,y;
scanf("%f",&x);
if(x<0.0) y=0;
else if(x>=0&&x<=15) y=4*x/3;
else if(x>15) y=2.5*x-10.5;
printf("%f\n",y);
}
Ⅲ 怎么用c语言编程一个分段函数
实验报告
1、有一分段函数:
设计一程序完成, 主控函数main()输入X的值并输出Y值.函数VAL计算Y的值。
1.需求规格说明
本题要求掌握C语言的数据类型,程序结构,基本输出输入,函数应用知识,问题的要求用到两个函数,要求利用主控函数main()输入X的值并输出Y值.并用函数VAL计算Y的值。
2.设计
2.1 设计思想
用两个储存空间分别存放主函数和被调用函数,在主函数中控制输入输出,在调用函数中对数据进行处理. 本程序需要用到实型变量作为数据主要数据类型.
2.2 设计表示
本程序有两大模块,主函数MAIN()和被调用函数VAL()
2.3实现注释
程序开发环境为“Windows XP sp2中文版“为操作系统,运行环境turbo c/vc 6.0等等可以运行C语言程
2.4详细设计
3.用户手册
用户打开turbo c/vc 6.0的界面,启动本程序,然后按ALT+R运行程序,用户根据提示输入x值, 然后按回车键,最后用ALT+F5看运行结果。
4.调试报告
在调试过程中,如果在主函数中没有调用函数y=VAL(x),结果可以运行,但不能得到正确的结果.由此可知,我们在做主控函数时,一定要注意调用函数的重要性.
5.源程序清单
#include<stdio.h>
void main()
{float VAL(float x);
float x,y;clrscr();
printf("input x=");
scanf("%f",&x);
y=VAL(x);
printf("y= %f",y);
}
float VAL(float x)
{float y;
if(x<1)
y=x;
else if(x>=1&&x<10)
y=2*x-1;
else
y=3*x-11;
return(y);
}
Ⅳ 水电费管理用C语言进行系统编程
使用习语言, 很完美的中文知识, 有问题还可以在 习语言论坛 请教专家。
Ⅳ 一个C语言程序(阶梯型收水费)
错误的行在y=n*3.5*3.7+n*3.5*(1.2-1)*3.7*2+n*3.5(1.4-1.2)*3.7*3+(t-n*3.5*(1+0.4))*3.7*4; !!
改为y=n*3.5*3.7+n*3.5*(1.2-1)*3.7*2+n*3.5*(1.4-1.2)*3.7*3+(t-n*3.5*(1+0.4))*3.7*4;
n*3.5(1.4-1.2)*3.7*3中3.5(1.4-1.2)之间漏掉了*
Ⅵ C语言程序设计宿舍水电费管理
x语言的程序
水电费管理
好萨
Ⅶ C语言编程设计,分段计算乘坐地铁票价,速度速度~
intGetTicketPrice(intkm)
{
intprice=0;
if(km>=1&&km<=6)
{
price=3;
}
elseif(km>6&&km<=16)
{
price=4;
}
if(km>16&&km<=26)
{
price=5;
}
if(km>26)
{
price=6;
}
returnprice;
}
Ⅷ c语言编程,为鼓励居民节约用水,自来水公司采取按月用水量分段计费的办法,居民应交
分级计费
~~~~~~~~~~~~~~~~
Ⅸ 用C语言,一个数组记录居民的收入、饮食支出、水费支出、电费支出和现金余额。编写一个程序,输入10个
#include#include#includeintmain(){charuser[4];charwaterNum[4];charelecNum[4];charinlinebuf[32];charoutlinebuf[32];charpbuf[256];FILE*fp1;FILE*fp2;intWaterNum=0;intElecNum=0;intlength=0;intm=0;intn=0;intweishuflag=0;intflagnum=0;inti=0;intj=0;floatwaterPrice=0.0;floatelecPrice=0.0;if((fp1=fopen("./input.dat","r"))==NULL){printf("openinputdataerror!\n");return-1;}if((fp2=fopen("./change.dat","w"))==NULL){printf("openinputdataerror!\n");return-1;}fseek(fp1,0,SEEK_END);length=ftell(fp1);fseek(fp1,0,SEEK_SET);memset(pbuf,0,sizeof(pbuf));printf("theinputdatalength==%d\n",length);fread(pbuf,length,1,fp1);fseek(fp2,0,SEEK_SET);sprintf(outlinebuf,"住户\t\t水费\t\t电费\n");fputs(outlinebuf,fp2);while(length--){if(pbuf[m]!='\n'){inlinebuf[n]=pbuf[m];n++;}else{j=0;inlinebuf[n++]='\t';//为处理每一行的最后一个数据(即用电量),需加入一个tab或空格键inlinebuf[n]='\0';//一行数据结束while(inlinebuf[j]!='\0'){switch(flagnum){case0://用户if(inlinebuf[j]!=''&&inlinebuf[j]!='\t'){user[i]=inlinebuf[j];i++;}else{user[i]='\0';flagnum++;//表示之前获取的是住户,下两个数据分别获取用水量与用电量i=0;}break;case1://用水量if(inlinebuf[j]!=''&&inlinebuf[j]!='\t'){waterNum[i]=inlinebuf[j];i++;}else{waterNum[i]='\0';weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内flagnum++;//表示下个数据获取的是用电量if(weishuflag==1){WaterNum=waterNum[0]-48;}elseif(weishuflag==2){WaterNum=(waterNum[0]-48)*10+(waterNum[1]-48);}else{WaterNum=(waterNum[0]-48)*100+(waterNum[1]-48)*10+(waterNum[2]-48);}i=0;weishuflag=0;}break;case2://用电量if(inlinebuf[j]!=''&&inlinebuf[j]!='\t'){elecNum[i]=inlinebuf[j];i++;}else{elecNum[i]='\0';weishuflag=i;//表示当前数据的位数,住户、用水量、用电量均限制为三位数以内flagnum=0;//表示一行三个数据获取完毕if(weishuflag==1){ElecNum=elecNum[0]-48;}elseif(weishuflag==2){ElecNum=(elecNum[0]-48)*10+(elecNum[1]-48);}else{ElecNum=(elecNum[0]-48)*100+(elecNum[1]-48)*10+(elecNum[2]-48);}i=0;weishuflag=0;}break;default:break;}j++;}waterPrice=(float)WaterNum*1.5;elecPrice=(float)ElecNum*0.5;printf("Theuser==%s,waterNum==%d,elecNum==%d\n",user,WaterNum,ElecNum);//打印用户,用水量,用电量printf("Theuser==%s,waterPrice==%.1f,elecPrice==%.1f\n\n",user,waterPrice,elecPrice);//打印用户,水费,电费sprintf(outlinebuf,"%3s\t\t%4.1f\t\t%4.1f\n",user,waterPrice,elecPrice);fputs(outlinebuf,fp2);//写入每一行数据(数据格式为住户+水费+电费)memset(outlinebuf,0,sizeof(outlinebuf));memset(inlinebuf,0,sizeof(inlinebuf));n=0;//一行数据处理结束,开始新的一行}m++;}fclose(fp1);fclose(fp2);return0;}input.dat(每一行数据分别为住户用水量用电量,以空格或tab键隔开,且每行数据必须以回车结尾).dat(输出文件格式如下)住户水费电费1017.575.02016.045.03016.060.04014.539.05016.030.06019.052.5
Ⅹ C语言计算分段函数
1. 代码如下,3)需要实际运行时输入测试
int main(void)
{
double x, y, f;
printf("Please input 2 double number in the form of x y:\n");
scanf("%lf%lf", &x, &y);
if(x>=0 && y>0)
f = 2*x*x + 3*x +1/(x+y);
else if(x>=0 && y<=0)
f = 2*x*x + 3*x +1/(1+y*y);
else
f = 3*sin(x+y)/(2*x*x) + 3*x + 1;
printf("x=%lf, y=%lf, f(x, y)=%lf\n", x, y, f);
return 0;
}
2.代码如下
#include <stdio.h>
#include<math.h>
int main(void)
{
double x, y, f;
printf("Please input 2 double number in the form of x y:\n");
scanf("%lf%lf", &x, &y);
if(x>=0)
{
if(y>0)
f = 2*x*x + 3*x +1/(x+y);
else
f = 2*x*x + 3*x +1/(1+y*y);
}
else
f = 3*sin(x+y)/(2*x*x) + 3*x + 1;
printf("x=%lf, y=%lf, f(x, y)=%lf\n", x, y, f);
return 0;
}
3.代码如下
#include <stdio.h>
int main(void)
{
int score = 0;
printf("Please input a score between 0-100:\n");
scanf("%d", &score);
if(score<0 || score>100)
printf("Wrong input of score!\n");
else if(score>=90 && score<=100)
printf("A\n");
else if(score>=80 && score<=89)
printf("B\n");
else if(score>=70 && score<=79)
printf("C\n");
else if(score>=60 && score<=69)
printf("D\n");
else
printf("E\n");
return 0;
}