當前位置:首頁 » 編程語言 » c語言分段計算水費編程
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言分段計算水費編程

發布時間: 2022-02-08 05:04:36

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;
}