當前位置:首頁 » 編程語言 » c語言用電

c語言用電

發布時間: 2022-09-20 06:51:34

⑴ 請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語言做電路編程設計

本設計是在51單片機與PC機上實現基於RS232串列通訊功能的,制定和實現可靠的上下位機通訊協議,完成顯示數據的下傳和讀取,圖形和文字有靜止、移入移出等多種顯示方式是本設計的最大特點。

第二章 系統組成與工作原理2.1系統設計要求和技術指標
此次設計的系統將由五部分(主要分為上位機部分和下位機部分,其中下位機主要分成,顯示信息存儲器﹑LED顯示屏行驅動電路和LED點陣顯示屏)組成來實現,分別為:上位PC機﹑串列電平轉換器﹑顯示信息存儲器﹑LED顯示屏行驅動電路和LED點陣顯示屏。控制系統的結構框圖如圖2.1所示。
設計要求系統能控制中文LED漢字顯示,主控板採用以單片機為核心的單片機系統。MCS-51單片機具有擴展性強﹑功能強盛﹑價格較低等長處,因此,採用Atmel公司的AT89C52單片機。採用MAX232作為RS-232與TTL電平的轉換器件。PC機發送到下位機的數據先由SBUF(數據緩沖區)接收,再存入EEPROM器件AT24C256中。
漢字點陣顯示屏可分為屏體和控制器兩部分。屏體的主要部分是LED點陣屏,還有行列驅動電路。LED點陣顯示屏採用8*8LED顯示模塊拼接而成。控制電路負責有序地選通各行,選通每一行之前還要把該行該列的數據預備好,一旦該行選通,這一行上的LED發光器件就可以根據列數據進行顯示。
從理論上講,不論顯示圖形還是文字,只要控制這些組成圖形或文字的各個點所在位置相應的LED器件發光,就可以得到想要的顯示結果,這種同時控制各個發光點亮滅的方法稱為靜態驅動顯示方式。16*16點陣共有256個發光二極體,顯然單片機沒有這么多的埠,假如採用鎖存器來擴展埠,按8位的鎖存器來計算,16*16的點陣需要256/8=32個鎖存器。這個數字很大,因為這里僅僅是16*16的點陣,但是在實際應用中的顯示屏往往要大的多,這樣在鎖存器上花的成本也就將是一個很大的數字。因此,在實際應用中的顯示屏幾乎都不採用靜態驅動顯示方式之中設計,而是採用另一種稱為動態掃描的顯示方式。
所謂動態掃描,簡朴地說就是逐行輪流點亮,這樣掃描驅動電路就可以實現多行同名列共用一套列驅動器。以本次設計的16*16點陣為例,把所有的同一行發光管的陽極連在一起,把所有同一列發光管的陰極連在一起(共陽極接法),先發送出對應第一行發光管亮滅的數據並鎖存,然後選通第一行使其點亮一定的時間,然後熄滅;再發送出第二行的數據並鎖存,然後選通第二行使其點亮一定的時間,然後熄滅;……第十六行之後又重新點亮第一行,這樣反復輪回。當這樣輪回的速度足夠快時(每秒24次以上),由於人眼的視覺暫留現象,就能看到顯示屏上穩定的圖形。
採用串列傳輸方案,控制電路可以只用一根信號線,將列數據一位一位傳往列驅動器,在硬體方面,這無疑是十分經濟的。但是,串列傳輸過程較長,數據按順序一位一位地輸出給列驅動器,只有一行的各列數據都已傳輸到位之後,這一行的各列才能並行地進行顯示。這樣,對於一行的顯示過程就可以分解成列數據准備(傳輸)和列數據顯示兩部分。對於串列傳輸方式來說,列數據准備時間可能相稱長,在行掃描周期確定的情況下,留給行顯示的時間就太少了,以至影響LED的亮度。
為解決串列傳輸中列數據准備與列數據顯示的時間矛盾問題,可以採用重疊處理的方法,即在顯示本行各列數據的同時,傳送下一行的列數據。為達到重疊處理的目的,列數據的顯示就需要具有鎖存功能。經過上述的分析,可以歸納出列驅動器電路應具備的主要功能。對於列數據准備來說,它應能實現串入並出的移位功能;對於列數據顯示來說,應具有並行鎖存的功能。這樣,本行已准備好的數據送入並行鎖存器進行顯示時,串並移位寄存器就可以准備下一行的列數據,而會不影響本行的顯示。

⑶ C語言課程設計----設計數據刪除函數和用電收費管理程序

#include<stdio.h>
#include<string.h>
#include<ctype.h>
typedef struct resisdent
{
long num;
char adress[50];
char name[50];
long last_num;
long now_num;
long cost_remain;
struct resisdent *next;
}res;

void main()
{
res *enter();
res *delete(res *);
res *alter(res *);
void display(res *);
void search(res *);
res *jiaofei(res *);
res *chaobiao(res *);
int menu_select();
res *head=NULL;
res *p1,*p2,*p3;
int i,j,k;
for(;;)
{
switch(menu_select())
{
case 1:head=enter();break;
case 2:head=delete(head);break;
case 3:head=alter(head);break;
case 4:display(head);break;
case 5:search(head);break;
case 6:head=jiaofei(head);break;
case 7:head=chaobiao(head);break;
case 8:exit(0);
}
}
}

int menu_select()
{
int ch;
printf("***************Welcome to the eletronic system**********************************\n");
printf("\t1.Enter the static of the resisdent.\n");
printf("\t2.Delete the static of the resisdent.\n");
printf("\t3.Alter the static of the resisdent.\n");
printf("\t4.Display the static of the resisdent.\n");
printf("\t5.Search the static of the resisdent.\n");
printf("\t6.Hand up the cost.\n");
printf("\t7.Updata the reader.\n");
printf("\t8.Quit.\n");
printf("********************************************************************************\n");
do
{
printf("Make a chioce(1--8):");
scanf("%d",&ch);
}while(ch<1 || ch>8);
return(ch);
}

res *enter()
{
res *head;
res *p1,*p2,*p3;
int n=0;
p1=p2=(res *) malloc (sizeof(res));
printf("Enter the static of the resisdent:\n");
printf("num:");
scanf("%ld",&p1->num);
if(p1->num==0)
goto end;
printf("adress:");
scanf("%s",p1->adress);
printf("name:");
scanf("%s",p1->name);
printf("The number of last time:");
scanf("%ld",&p1->last_num);
printf("The number of now:");
scanf("%ld",&p1->now_num);
printf("The cost remain:");
scanf("%ld",&p1->cost_remain);
while(p1->num!=0)
{
n=n+1;
if(n==1)
head=p1;
else
p2->next=p1;
p2=p1;
p1=(res *) malloc (sizeof(res));
printf("num:");
scanf("%ld",&p1->num);
if(p1->num==0)
goto end;
printf("adress:");
scanf("%s",p1->adress);
printf("name:");
scanf("%s",p1->name);
printf("The number of last time:");
scanf("%ld",&p1->last_num);
printf("The number of now:");
scanf("%ld",&p1->now_num);
printf("The cost remain:");
scanf("%ld",&p1->cost_remain);
}
end:
p2->next=NULL;
return(head);
}

res *delete(res *head)
{
res *p1,*p2;
long num;
if(head==NULL)
printf("The list is empty.!\n");
else
{
printf("Enter the num to delete:");
scanf("%ld",&num);
p1=p2=head;
while(p1->num!=num && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(head==p1)
head=p1->next;
else
p2->next=p1->next;
}
else
printf("Not found!\n");
}
return(head);
}

res *alter(res *head)
{
res *p1,*p2;
long num;
if(head==NULL)
printf("Null list.\n");
else
{
printf("Enter the num to alter:");
scanf("%ld",&num);
p1=head;
while(p1->num!=num &&p1->next!=NULL)
p1=p1->next;
if(num==p1->num)
{
printf("new num:");
scanf("%ld",&p1->num);
printf("new adress:");
scanf("%s",p1->adress);
printf("new name:");
scanf("%s",p1->name);
printf("The number of last time:");
scanf("%ld",&p1->last_num);
printf("The number of now:");
scanf("%ld",&p1->now_num);
printf("The cost remain:");
scanf("%ld",&p1->cost_remain);
}
else
printf("Not found!\n");
}
return(head);
}

void display(res *head)
{
res *p1,*p2;
p1=p2=head;
printf("********************************************************************************\n");
printf("\tNUM\tADRESS\tNAME\tNUMBER_LAST\tNUMBER_NOW\tCOST_REMAIN\n");
while(p1!=NULL)
{
printf("\t%-3ld\t%-6s\t%-4s\t%-11ld\t%-10ld\t%-5ld\n",p1->num,p1->adress,
p1->name,p1->last_num,p1->now_num,p1->cost_remain);
p1=p1->next;
}
printf("********************************************************************************\n");
}

void search(res *head)
{
res *p1,*p2;
char ser[50];
int n;
printf("1.search by adress.\n");
printf("2.search by name.\n");
printf("choose 1 || 2:\n");
scanf("%d",&n);
if(head==NULL)
printf("NULL list.\n");
switch(n)
{
case 1:
printf("input the adress:");
scanf("%s",ser);
p1=p2=head;
while(strcmp(p1->adress,ser)!=0 &&p1->next!=NULL)
p1=p1->next;
if(strcmp(p1->adress,ser)==0)
{
printf("\tNUM\tADRESS\tNAME\tLAST_NUM\tNOW_NUM\tCOST_REMAIN\n");
printf("\t%-3ld\t%-6s\t%-4s\t%-11ld\t%-10ld\t%-5ld\n",p1->num,p1->adress,p1->name,
p1->last_num,p1->now_num,p1->cost_remain);
}
else
printf("Not found!\n");break;

case 2:
{
printf("input the name:");
scanf("%s",ser);
p1=p2=head;
while(strcmp(p1->name,ser)!=0 && p1->next!=NULL)
p1=p1->next;
if(strcmp(p1->name,ser)==0)
{
printf("\tNUM\tADRESS\tNAME\tLAST_NUM\tNOW_NUM\tCOST_REMAIN\n");
printf("\t%-3ld\t%-6s\t%-4s\t%-11ld\t%-10ld\t%-5ld\n",p1->num,p1->adress,p1->name,
p1->last_num,p1->now_num,p1->cost_remain);
}
else
printf("Not found!\n");break;
}
default:break;
}
}

res *jiaofei(res *head)
{
res *p1,*p2;
char adress[50];
long cost;
printf("input the adress:");
scanf("%s",adress);
if(head==NULL)
printf("NULL list!\n");
else
{
p1=head;
while(strcmp(p1->adress,adress)!=0 && p1->next!=NULL)
p1=p1->next;
if(strcmp(p1->adress,adress)==0)
{
printf("input the number of the cost:");
scanf("%ld",&cost);
p1->cost_remain+=cost;
}
else
printf("Not found!\n");
}
return(head);
}

res *chaobiao(res *head)
{
res *p1,*p2;
char adress[50];
if(head==NULL)
printf("NULL list!\n");
else
{
printf("input the adress:");
scanf("%s",adress);
p1=head;
while(strcmp(p1->adress,adress)!=0 && p1->next!=NULL)
p1=p1->next;
if(strcmp(p1->adress,adress)==0)
{
p1->last_num=p1->now_num;
printf("input the num:");
scanf("%ld",&p1->now_num);
}
else
printf("Not found!\n");
}
return(head);
}

總算做出來了,總體功能是可以的,我調試過了,只是在輸入編號時,只要輸入0就會結束,另外,對名字,編號等的長度我都作了限制,當時是為了方便我的習慣,你可以改一下,應該會吧!
我也比較菜,程序在容錯方面還是有缺陷的,例如,當輸入倆同樣的地址,倆同樣的名字的時候,你去查找的時候,只可以打出第一個。
有問題你可以反饋回來,我也在學c,在找東西練手呢!

⑷ 誰能幫忙用C語言編寫一個關於電費管理系統的源程序代碼

網上有很多C語言的源碼查考滴

給你找了個這個,對你自己編寫有幫助,要是還有問題自己找幾個編程的QQ群加入交流下。

資源描述:Visual C++ 2005管理系統開發經典案例
文件大小:28.20MB
文件格式:rar
發布日期:2008-02-21 16:35:32

作者: 羅斌

內容簡介

本書根據軟體工程的設計思想,使用Visual C# 2005/SQL Server 2005(SQLEXPRESS)編程語言和資料庫管理系統,以小區物業管理系統、學校教務管理系統、會員消費管理系統、家電維修管理系統、汽車貨運管理系統、餐飲消費管理系統等當今最為經典實用的資料庫開發案例的商業邏輯為基礎,以實際開發流程為線索,詳細地介紹了這些資料庫開發案例的應用背景、業務分析、功能分析、資料庫設計、代碼編寫的過程和方法,以期使讀者迅速了解和掌握使用資料庫開發現代管理信息系統的分析方法和編程技巧,從而全面提升開發管理信息系統的統籌操作能力。本書配套光碟提供了書中所有資料庫開發案例的完整源代碼和資料庫文件。
本書案例典型、結構合理、講解清晰、分析透徹、實用性強,適合作為 Visual C# 2005/SQL Server 2005(SQLEXPRESS)用戶使用資料庫開發管理信息系統的案頭參考書,也可作為高等院校計算機和管理專業學生的畢業設計範例。

目錄

前言
第1章 小區物業管理系統
1.1 小區物業管理系統總體分析
1.2 小區物業管理系統功能分析
1.2.1 登錄管理系統模塊分析
1.2.2 退出管理系統模塊分析
1.2.3 系統幫助信息模塊分析
1.2.4 分配用戶許可權模塊分析
1.2.5 修改用戶密碼模塊分析
1.2.6 小區信息設置模塊分析
1.2.7 樓棟信息管理模塊?治?br> 1.2.8 公共財產管理模塊分析
1.2.9 業主登記管理模塊分析
1.2.10 業主遷出管理模塊分析
1.2.11 車位使用管理模塊分析
1.2.12 公共維修管理模塊分析
1.2.13 業主維修管理模塊分析
1.2.14 服務投訴管理模塊分析
1.2.15 突發事件管理模塊分析
1.2.16 水電氣費登記模塊分析
1.2.17 水電氣費查詢模塊分析
1.2.18 水電氣費交納模塊分析
1.2.19 物管費用登記模塊分析
1.2.20 物管費用查詢模塊分析
1.2.21 物管費用交納模塊分析
1.2.22 其他費用交納模塊分析
1.2.23 業主統計報表模塊分析
1.2.24 投訴統計報表模塊分析
1.2.25 業主維修報表模塊分析
1.2.26 公共維修報表模塊分析
1.2.27 收入統計報表模塊分析
1.3 小區物業管理系統資料庫設討
1.3.1 操作用戶數據表設計
1.3.2 車位使用數據表設計
1.3.3 費用收據數據表設計
1.3.4 服務投訴數據表設計
1.3.5 公共財產數據表設計
1.3.6 公共維修數據表設計
1.3.7 樓棟信息數據表設計
1.3.8 遷出信息數據表設計
1.3.9 水電氣費數據表設計
1.3.10 突發事件數據表設計
1.3.11 物管費用數據表設計
1.3.12 小區信息數據表設計
1.3.13 業主維修數據表設計
1.3.14 業主信息數據表設計
1.4 編寫小區物業管理系統實現代碼
1.4.1 編寫管理系統主窗體代碼
1.4.2 編寫登錄管理系統模塊代碼
1.4.3 編寫小區信息設置模塊代碼
1.4.4 編寫分配用戶許可權模塊代碼
1.4.5 編寫修改用戶密碼模塊代碼
1.4.6 編寫系統幫助信息模塊代碼
1.4.7 編寫樓棟信息管理模塊代碼
1.4.8 編寫公共財產管理模塊代碼
1.4.9 編寫業主登記管理模塊代碼
1.4.10 編寫業主遷出管理模塊代碼
1.4.11 編寫車位使用管理模塊代碼
1.4.12 編寫公共維修管理模塊代碼
1.4.13 編寫業主維修管理模塊代碼
1.4.14 編寫服務投訴管理模塊代碼
1.4.15 編寫突發事件管理模塊代碼
1.4.16 編寫水電氣費登記模塊代碼
1.4.17 編寫水電氣費查詢模塊代碼
1.4.18 編寫水電氣費交納模塊代碼
1.4.19 編寫物管費用登記模塊代碼
1.4.20 編寫物管費用查詢模塊代碼
1.4.21 編寫物管費用交納模塊代碼
1.4.22 編寫其他費用交納模塊代碼
1.4.23 編寫業主統計報表模塊代碼
1.4.24 編寫投訴統計報表模塊代碼
1.4.25 編寫業主維修報表模塊代碼
1.4.26 編寫公共維修報表模塊代碼
1.4.27 編寫收入統計報表模塊代碼
第2章 學校教務管理系統
第3章 會員消費管理系統
第4章 家電維修管理系統
第5章 汽車貨運管理系統
第6章 餐飲消費管理系統

⑸ 用c語言計算電功率w=l∧2R

電功率是用P表示的。計算電功率的函數如下:
double epow(double i,double r)
{return i*i*r;}

⑹ 水電費管理用C語言進行系統編程

使用習語言, 很完美的中文知識, 有問題還可以在 習語言論壇 請教專家。

⑺ C語言設計問題 電費系統

#include<stdio.h>


/*
*計算一層花費
*/
voidper_layer(int*money,inta,intb)
{
intn=0;
n=a-b;
if(n>0)//降
*money=n*10;
else//升
{
n=b-a;
*money=n*20;
}
}
/*
*計算一次(一天)花費
*返回總錢數
*/
intper_time(int*a,intlen)
{
intmoney=0;
inti=0;
intret=0;//sum
for(i=0;i<(len-1);i++)
{
per_layer(&money,a[i],a[i+1]);
ret+=money;
}

returnret;
}

intmain()
{
intnArray[1000]={0};
intSi[101]={0};
inti=0;
intn=0;
intj=0;

// intmoney=0;
// inta1[]={2,8,5};
// inta2[]={2,9,7,3,4,6,1};
// money=per_time(a2,7);

while(scanf("%d",&n),n!=0)
{
while(i!=n)
{
scanf("%d",&(Si[i]));
i++;
}
i=0;
nArray[j++]=per_time(Si,n);
}

for(i=0;i<j;i++)
{
printf("%d ",nArray[i]);
}
return0;
}

運行結果:

⑻ c語言暫停幾秒比連續運行代碼省電嗎

這個是會省一點電的。
但是裡面的單位是毫秒,而不是秒。
關於sleep()函數在windows系統和linux系統下是兩個不同的函數,差別較大,但功能是相同的,都是將進程掛起一段時間。 windows系統下函數名為Sleep(),其函數原型為: #include <windows.h> 函數使用頭文件 void Sleep(DWORD dwMilliseconds); 參數為毫秒 參考代碼: #include <windows.h> //win頭文件 #include<stdio.h> int main() { int i; printf("你"); fflush(stdout); //贊制刷新緩存,輸出顯示 for( i=0;i<10;i++ ) { Sleep(1000); /* windows 使用Sleep,參數為毫秒 */ printf("."); fflush(stdout);//贊制刷新緩存,輸出顯示 } printf("好\n"); /*輸出「你」和「好」之間會間隔10秒,並輸出10個點*/ return 0; } linux系統下函數名為sleep(),其函數原型為: #include <unistd.h> 函數使用頭文件 unsigned int sleep(unsigned int seconds);參數為毫秒 (如果需要更精確可以用usleep,單位為微秒) 修改上面的代碼,以適應linux系統 #include <unistd.h> //1、linux 頭文件 #include<stdio.h> int main() { int i; printf("你"); fflush(stdout);//贊制刷新緩存,輸出顯示 for( i=0;i<10;i++ ) { sleep(1); /*2、linux 使用sleep,參數為秒*/ printf("."); fflush(stdout);//贊制刷新緩存,輸出顯示 } printf("好\n"); /*輸出「你」和「好」之間會間隔10秒,並輸出10個點*/ return 0; } 注意: 1.在VC中使用帶上頭文件#include <windows.h>,在Linux下,gcc編譯器中,使用的頭文件因gcc版本的不同而不同#include <unistd.h> 2.在VC中,Sleep中的第一個英文字元為大寫的"S" ,在linux下不要大寫,在標准C中是sleep, 不要大寫,簡單的說VC用Sleep, 別的一律使用sleep。 3.在VC中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該是Sleep(1000); 在Linux下,sleep()裡面的單位是秒,而不是毫秒。 ======================== delay()是循環等待,該進程還在運行,佔用處理器。 sleep()不同,它會被掛起,把處理器讓給其他的進程,所以會省一點電。

⑼ 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>
int main()
{
float v,i,r;
printf("輸入電壓值:");
scanf("%f",&v);
printf("輸入電流值:");
scanf("%f",&i);
r=v/i;
printf("電阻值為%.2f歐姆\n",r);
return 0;
}

熱點內容
c語言元編程 發布:2025-01-11 09:53:02 瀏覽:342
線切割割圓怎麼編程 發布:2025-01-11 09:52:23 瀏覽:171
怎麼選女孩子的配置 發布:2025-01-11 09:47:33 瀏覽:670
python獲取header 發布:2025-01-11 09:47:32 瀏覽:492
iis7上傳大小 發布:2025-01-11 09:41:38 瀏覽:507
拍攝腳本是什麼工作 發布:2025-01-11 09:39:12 瀏覽:785
魅族安卓8什麼時候更新 發布:2025-01-11 09:27:58 瀏覽:362
電腦板我的世界登錄密碼多少 發布:2025-01-11 09:15:43 瀏覽:284
編譯原理和是非終結符嗎 發布:2025-01-11 09:15:42 瀏覽:252
網路調試助手源碼 發布:2025-01-11 09:14:24 瀏覽:117