當前位置:首頁 » 編程語言 » c語言算電費收取實行階梯制
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言算電費收取實行階梯制

發布時間: 2022-09-18 03:55:52

① 請c語言大神幫忙!

這個題目要點。

1、收費標准必須為可操作修改。

2、收費標准檔位是不確定的,需要動態數組。(當然用常量,每次手改源代碼就不需要了)

3、收費標準的輸入除第一個閥值,其他要求增量(較上一個閥值),不能直接用於運算。

4、輸入范圍需要有驗證。

最簡易做法是將標準定義成常量,然後需要時修改代碼常量,但這樣對用戶夠不友好,所以我這里把標準定義成結構,定義函數動態申請數組,修改收費標准。

#include<stdio.h>

#include<malloc.h>

typedef struct eq

{

int tn;//表示共有幾檔

float **fb;//表示各檔計費標準的二維數組

}EQ;

int newFb(int tn);//構建收費標准數組地址空間,成功返回1,失敗返回2。(成功自動釋放舊地址,無需單獨釋放)

EQ *init();//初始化計費標准

void showEQ();//列印當前收費標准

int setEQ();//修改收費標准,成功返回1,失敗返回0

float ecost(float amount);//計算電費

EQ *eq=NULL;

int main()

{

int n=0;

float at;

eq=init();

if(!eq)

{

printf("異常終止! ");

return 1;

}


while(1)

{

printf("1、列印收費標准;2、修改收費標准;3、計算電費 ");

n=0;

while(n!=1 && n!=2 && n!=3)

scanf("%d",&n);

switch(n)

{

case 1:showEQ();break;

case 2:

if(!setEQ())

printf("異常!修改失敗! ");

else

printf("修改成功! ");

break;

case 3:printf("請輸入年度用電量:");

scanf("%f",&at);

printf("年度用電費用:%.2f ",ecost(at));

break;

}


}

return 0;

}

float ecost(float amount)//計算電費

{

int i;

float sum=0;

if(amount<=eq->fb[0][0])

return 0;


for(i=eq->tn-1;i>=0;i--)

if(amount>eq->fb[i][0])

{

sum+=(amount-eq->fb[i][0])*eq->fb[i][1];

amount=eq->fb[i][0];

}


return sum;

}

EQ *init()//初始化計費標准,

{

if(eq)

return eq;

eq=(EQ *)malloc(sizeof(EQ));

if(!eq)

return NULL;

eq->tn=4;

eq->fb=NULL;

if(!newFb(4))

{

free(eq);

return NULL;

}

eq->fb[0][0]=0,eq->fb[0][1]=0.6;

eq->fb[1][0]=3000,eq->fb[1][1]=0.7;

eq->fb[2][0]=5000,eq->fb[2][1]=0.9;

eq->fb[3][0]=7000,eq->fb[3][1]=1.2;

return eq;

}

int newFb(int tn)//構建收費標准數組地址空間,成功返回1,失敗返回0。(成功自動釋放舊地址,無需單獨釋放)

{

int i,flag=1;

float **fbSave=NULL;

if(!eq)

return 0;

eq->tn=tn;

if(!eq->fb)//如果有舊地址,保存該地址,用於還原

fbSave=eq->fb;

eq->fb=(float **)malloc(sizeof(float *)*tn);

if(!eq->fb)

flag=2;

for(i=0;flag && i<tn;i++)

{

eq->fb[i]=(float *)malloc(sizeof(float)*2);

if(!eq->fb)

flag=3;

}


if(flag==3)//內存申請失敗,釋放已申請的新地址,還原舊地址

{

for(i=0;i<tn;i++)

free(eq->fb[i]);

free(eq->fb);

eq->fb=fbSave;

return 0;

}

if(flag==2)

{

eq->fb=fbSave;

return 0;

}

return 1;

}

void showEQ()//列印當前收費標准

{

int i;

printf("當前共計%d檔計費標准: ",eq->tn);

for(i=0;i<eq->tn;i++)

printf("電量超過%.0f,%s%.1f(實際金額%.1f) ",eq->fb[i][0],i>0?"每度再增加":"每度",i>0?eq->fb[i][1]-eq->fb[i-1][1]:eq->fb[i][1],eq->fb[i][1]);

printf(" ");

}

int setEQ()//修改收費標准,成功返回1,失敗返回0

{

int i,tn;

float money;

printf("請輸入新的計費檔數(輸入0退出修改):");

scanf("%d",&tn);

if(!tn)

return 0;

if(newFb(tn))

{

for(i=0;i<eq->tn;i++)

{

printf("請輸入第%d檔電量閥值(%s%.0f),及%s(單位元)",i+1,i>0?"必須大於":"大於等於",i>0?eq->fb[i-1][0]:0,i>0?"每度增加收費":"每度收費");

scanf("%f%f",&eq->fb[i][0],&money);

if(i==0 && eq->fb[i][0]<0)

{

printf("輸入錯誤!起始閥值不能小於0!請重新輸入 ");

i--;

continue;

}

if(i>0 && eq->fb[i][0]<=eq->fb[i-1][0])

{

printf("輸入錯誤!當前閥值不能小於上一次的閥值!請重新輸入 ");

i--;

continue;

}

if(i==0)

eq->fb[i][1]=money;

else

eq->fb[i][1]=eq->fb[i-1][1]+money;

}

}


return 1;

}

//PS:你說你代碼運算不對,看看是否把增量當金額來用了。

② 階梯電價問題 C語言

#include<stdio.h>
intmain()
{
floatn,cost;
scanf("%f",&n);
if(n<=110)
cost=n*0.5;
elseif(n<=210)
cost=110*0.5+(n-110)*0.55;
elsecost=110*0.5+(210-110)*0.55+(n-210)*0.7;
printf("%.2f",cost);
return0;
}

③ C語言求階梯電價,急急急

#include <stdio.h>
int main()
{
int m;

scanf("%d",&m);

while(m--){
float a,result;

scanf("%f",&a);
if(a>=0 && a<=110)
result=0.5*a;
else if(a>100 && a<=210)

result=0.5*110+0.55*(a-110);
else if(a>210){
int i=1;

while(a-210*i>320)

i++;

if(a-210*i>=110)

result=0.7*210*i+0.55*(a-210*i)+0.5(a-210*i-110);

else

result=0.7*210*i+0.5*(a-210*i);
printf("%.2f\n",result);

}
}
return 0;
}

④ 階梯式電費怎計算的

階梯電價是指按照用戶消費的電量分段定價。根據廣東省目前執行的最新的居民階梯電價標准,每戶每月電量分檔劃分為夏季標准和非夏季標准。其中:
【夏季標准(5月-10月)】第一檔電量為每戶每月0-260度的用電量,其電價不作調整;
第二檔電量為每戶每月261-600度的用電量,其電價每度加價0.05元;
第三檔電量為每戶每月601度及以上的用電量,其電價每度加價0.30元。
【非夏季標准(1-4月、11-12月)】第一檔電量為每戶每月0-200度的用電量,其電價不作調整;
第二檔電量為每戶每月201-400度的用電量,其電價每度加價0.05元;
第三檔電量為每戶每月401度及以上的用電量,其電價每度加價0.30元。
【計算公式】總電費=第一檔電費+第二檔電費+第三檔電費
第一檔電費=第一檔標准以內的電量×第一檔電價
第二檔電費=超出第一檔標准並且在第二檔標准以內的電量×(第一檔電價+0.05元/度)
第三檔電費=超出第二檔標準的電量×(第一檔電價+0.3元/度)計算。
由於不同地市所對應執行的電價都有所不同,若想了解最新的電價信息,建議您可關注「南方電網95598」公眾平台,點擊服務咨詢> 電價信息選擇用電區域的城市>查看詳細電價表,即可查詢到相對應的電價信息。
希望我們的回答能對您有所幫助。

⑤ 電價階梯式收費標準是什麼

階梯電價是按照一個電費結算周期內所使用的電量,再按照階梯電價計算公式計算當期電費的。
最新居民階梯電價從2019年7月1日起執行,分夏季(5-10月)、非夏季(11月-次年4月)兩個計費標准;

夏季:第一檔0-260度,第二檔261-600度,第三檔601度及以上。

非夏季:第一檔:0-200度,第二檔201-400度,第三檔401度及以上

電種價格差別。電有火電(含核電等)和水電(含風能電等)之分。不同種類的電力意味著不同的生產流程,其生產成本也不同。在效用相同、費用不同的情況下,由效用與費用之比所決定的不同種類電力的價值有所差別。這種差別應該在電力價格上得到反映。

如:火電是通過對煤炭(天然鈾等)進行加工取得的,其勞動對象是包含有人類勞動的物質產品,生產性質類似於加工工業,產品成本中包含很大比重的物耗。因而其價格首先必須對這種物質消耗進行完全補償;同時要與所耗煤炭(鈾)的價格保持科學合理的比例關系。

水電是直接利用不可耗竭的自然力而獲得的,其勞動對象(水位落差、風力等)是未經人類勞動的自然資源、不會作為物耗構成成本。這使得水電價格賴以形成的費用基礎在質和量上都與火電有明顯不同。因此,水電和火電的價格也必然有所差別。這種差價的確定原則是:使煤炭資源和水力、風力資源因地制宜,得到最充分的利用。

用電時價差別化。無論是火電還是水電都是不可貯存的產品,即無法通過一個經濟成本來建立電力產品庫存以調節電力供應流量。但是,對電力的需求卻往往因時而異。

為了調節需求,使之供給均衡,一般採用分時電價,即對高峰用電和低谷用電分別計價的方式,高峰用電高價,低谷用電低價,以促使電力用戶錯開用電時間,提高電力使用的效率。

電力產品是基礎產品,涉及面很廣,直接影響一國的產業政策、居民生活甚至能源安全。因而,電力產品價格常常是國家政策干預的重點對象之一,世界各國都實行有不同的電價政策。由於用戶分散,電價政策不僅要科學、周密,還必須簡便易行。

⑥ 大一程序設計C語言問題。

#include <stdio.h>
#include <stdlib.h> //system函數頭文件
int main(void)
{
double cost=0.0, kws=0.0; //變數使用前初始化
printf("Enter Number:");
scanf("%lf", &kws);
while (kws < 0) //當輸入值<0,列印提示信息,並重新輸入值,直到輸入正確
{
printf("Invalid Value!\n");
printf("Enter Number:");
scanf("%lf", &kws);
}
if (kws <= 50){
cost = 0.53*kws;
}
else{
cost = 0.53 * 50 + 0.58*(kws - 50);
}
printf("cost = %.2f\n", cost);
system("PAUSE"); //用來暫停console端
return 0;
}

⑦ c語言階梯電價計費

#include <stdio.h>
int main()
{
int m;

scanf("%d",&m);

while(m--){
float a,result;

scanf("%f",&a);
if(a>=0 && a<=110)
result=0.5*a;
else if(a>100 && a<=210)

result=0.5*110+0.55*(a-110);
else if(a>210){
int i=1;

while(a-210*i>320)

i++;

if(a-210*i>=110)

result=0.7*210*i+0.55*(a-210*i)+0.5(a-210*i-110);

else

result=0.7*210*i+0.5*(a-210*i);
printf("%.2f\n",result);

}
}
return 0;
}

⑧ 聽說電費現在是階梯式收費怎麼個收費法

階梯式電價是階梯式遞增電價或階梯式累進電價的簡稱,也稱為階梯電價,是指把戶均用電量設置為若干個階梯分段或分檔次定價計算費用。

簡單來說,就是在不同的時間段對該階段的用電量用不同的收費方式進行電費收取。

對居民用電實行階梯式遞增電價可以提高能源效率。通過分段電量可以實現細分市場的差別定價,提高用電效率。2012年6月14日,發改委表示居民「階梯電價」將於7月1日在全國范圍內實施。

階梯式電價的具體內容是:

第一階梯為基數電量,此階梯內電量較少,電價也較低;

第二階梯電量較高,電價也較高一些;

第三階梯電量更多,電價更高。

隨著戶均消費電量的增長,每千瓦時電價逐級遞增。對居民用電實行階梯式遞增電價可以提高能源效率。通過分段電量可以實現細分市場的差別定價,提高用電效率。並且能夠補貼低收入居民。

(8)c語言算電費收取實行階梯制擴展閱讀

實行這種電價制度主要基於以下原因:

(1)為了保障低收入群體維持基本生活水平的用電需求,設置第一檔電量和電價,這一檔的電價一般低於單位供電成本。

(2)按照絕大多數居民的戶均用電量或全部居民用戶的戶均用電量設置第二檔電量,此檔電價基本涵蓋單位供電成本,並保證供電企業的應得利潤。

(3)為了促進居民節約用電,設置第三檔及以上分檔電量,此檔電價水平除了涵蓋單位供電成本,並保證供電企業應得利潤外,還要彌補第一檔用戶沒有承擔的供電成本及其他管理成本。

階梯式電價制度適用於政府定價且電力供不應求或供需基本平衡的市場條件,用以引導居民用戶節約用電,促進節能減排。

⑨ <我是新手>C程序設計,使用switch指令編程實現階梯電費計算,並輸出相應結果。 求大神給程序。

#include<stdio.h>
int main()
{
int n = 2;
double a = 0;
printf("請輸入用電度數:");
scanf("%lf", &a);
if ( a > 300 )
n = 0;
else
{
if ( a > 200 )
n = 1;
}
// shitch的參數嚴格來說是接受字元型的, 而case後面則應該接常量表達式, 你之前用的變數
switch( n )
{
case '0': printf ( "你應繳納:%.2f\n" , ( a - 300 ) * 3 + 160 );
break;
case '1': printf("你應繳納:%.2f\n", ( a - 200 ) * 0.6 + 100 );
break;
default:
printf("你應繳納:%.2f\n", a * 0.5 );
}

return 0;
}
望採納w

⑩ 階梯式電費收費標准

現在很多地方都開始試行階梯電價,就是根據使用的電量檔次來決定電價。

第一檔電量:不超過2刊千瓦時的電量,電價標准維持現價不變;對城鄉「低保戶」和農村「五保戶」,設置每戶每月15千瓦時的免費用電量。

第二檔電量:241一400千瓦時之間的電量,電價標准比第一檔電價提高0.05元/千瓦時。

第三檔電量:超過400千瓦時的電量,電價標准比第一檔電價提高0.3元/千瓦時。電價不是統一的,中國城市居民用電一般是0.5元左右一度,工業用電貴一點,農村電價更貴一點。國內各地的電價不是統一的,中國城市居民用電一般價格:0.52元-0.62元一度電,工業用電貴一點,價格:0.86-1.80元一度電。

月均用電量在第一檔時,按照第一檔單價計費;當月均用電量在第二檔時,其中低於第二檔的那部分用電量按照第一檔單價計算,高於第一檔的那部分用電量要按照第二檔單價計算。二者之和才是此時的電費;以此類推。