c語言清單,c語言清單工具

本文目錄一覽:

列出程序清單(c語言程序設計)

#includestdio.h

main()

{

int a,b,k;

printf(“請輸入 a:\n”);

scanf(“%d”,a);

printf(“請輸入 b:\n”);

scanf(“%d”,b);

k=a;a=b;b=k;

printf(“a=%d b=%d\n”,a,b);

}

C語言輸出清單並統計總金額

#includestdio.h

int main(){

int n,i,shul[100];

double dj[100],sum=0;

printf(“輸入書數\n”);

scanf(“%d”,n);

for(i=0;in;i++){

printf(“輸入單價\n”);

scanf(“%lf”,dj+i);

printf(“輸入數量\n”);

scanf(“%d”,shul+i);

sum+=dj[i]*shul[i];}

for(i=0;in;i++)

printf(“單價 %.3lf 數量 %d\n”,dj[i],shul[i]);

printf(“總價 %.3lf\n”,sum);

return 0;}

C語言 採用文件輸出話費清單

國際、國內、市話的電話號碼識別,我沒有寫。

你想寫,只要在我留的函數getcallType里寫代碼就行,其他不用改。參數:主叫號碼 、 被叫號碼。返回值:0或1或2,對應(國際、國內、市話)。

另外,輸入我沒有寫驗證,測試請規範輸入,時間必須2位數hh:mm:ss,你想寫驗證證,自己添加到我的函數inputInfo中就行。

#includestdio.h

#includestdlib.h

#includemalloc.h

#define n 6//輸入次數

typedef struct callInfo

{

    char calldate[11];//通話日期

    char callCode[15];//主叫碼

    char beCallCode[15];//被叫碼

    char beginTime[10];//起始時間

    char endTime[10];//通話結束時間

    long callTime;//通話時長,單位秒

    double callPay;//通話費用

    int callType;//國際長途:0,國內長途:1,市話:2

    struct callInfo *next;

}CALLINFO;

CALLINFO *inputInfo(int con);//輸入,參數con:輸入的次數  返回首節點

void prfCallInfo(CALLINFO *callInfoHead);//列印鏈表

long getTime(char *beginTime,char *endTime);//計算通話時長,返回秒數,時間格式:小時:分鐘:秒

double getpay(long t,int callType);//計算費用,不足1分鐘按1分鐘算

int getcallType(char *callCode,char *beCallCode);//通過主叫號碼 和 被叫號碼,識別通話類別(國際、國內、市話),返回0或1或2。

void orderByPay(CALLINFO *callInfoHead);//排序 話費從高到低

void wirteFile(FILE *fp,CALLINFO *callInfoHead);

int main()

{

    CALLINFO *callInfoHead=NULL;

    FILE *fp=NULL;

    callInfoHead=(CALLINFO *)malloc(sizeof(CALLINFO));

    callInfoHead-next=NULL;

    fp=fopen(“c:\\list2.txt”,”rt+”);

    if(fp==NULL)

    {

        fp=fopen(“c:\\list2.txt”,”w”);

    }

    callInfoHead-next=inputInfo(n);

    printf(“\n—-測試代碼所有費用默認按照市話計算—-\n”);

    orderByPay(callInfoHead);

    printf(“\n—-按照話費由高到低排序—-\n”);

    prfCallInfo(callInfoHead);

    printf(“\n—-開始寫入文件—-\n”);

    wirteFile(fp,callInfoHead);

    return 0;

}

void wirteFile(FILE *fp,CALLINFO *callInfoHead)

{

    CALLINFO *callInfoNow=NULL;

    fseek(fp, 0, SEEK_SET);//文件流指針重置到開頭

    fprintf(fp,”%s %s %s %s %s\n”,”日期”,”主叫號碼”,”被叫號碼”,”起始時間”,”通話時間”);

    while(callInfoHead-next!=NULL)

    {

        callInfoNow=callInfoHead-next;

        fprintf(fp,”%s %s %s %s %s\n”,callInfoNow-calldate,callInfoNow-callCode,callInfoNow-beCallCode,callInfoNow-beginTime,callInfoNow-endTime);

        callInfoHead=callInfoHead-next;

    }

}

void orderByPay(CALLINFO *callInfoHead)//排序 話費從高到低

{

        CALLINFO *callInfoNext=NULL,*callInfoNow=NULL,callInfoSave;

        while(callInfoHead-next!=NULL)

        {

            callInfoNext=callInfoHead-next-next;

            callInfoNow=callInfoHead-next;

            while(callInfoNext!=NULL)

            {

                if(callInfoNow-callPaycallInfoNext-callPay)//高的往前移動,交換成員值保留鏈表指針

                {

                    callInfoSave=*callInfoNow;

                    *callInfoNow=*callInfoNext;

                    *callInfoNext=callInfoSave;

                    callInfoNext-next=callInfoNow-next;

                    callInfoNow-next=callInfoSave.next;

                }

                callInfoNext=callInfoNext-next;

            }

            callInfoHead=callInfoHead-next;

        }

}

void prfCallInfo(CALLINFO *callInfoHead)//列印鏈表

{

    CALLINFO *callInfoNow=NULL;

    printf(“\n通話日期  主叫碼  被叫碼  起始時間  通話結束時間  通話時長  通話費用\n”);

    while(callInfoHead-next!=NULL)

    {

        callInfoNow=callInfoHead-next;

        printf(“%s  %s  %s  %s  %s  %ld  %lf\n”,callInfoNow-calldate,callInfoNow-callCode,callInfoNow-beCallCode,callInfoNow-beginTime,callInfoNow-endTime,callInfoNow-callTime,callInfoNow-callPay);

        callInfoHead=callInfoHead-next;

    }

}

CALLINFO *inputInfo(int con)//輸入,參數con:輸入的次數  返回首節點

{

    int i;

    CALLINFO *callInfo0=NULL,*callInfoTail=NULL,*callInfoNew=NULL;

    printf(“請分別錄入%d條通話記錄,每行1條\n格式:(通話日期、主叫碼、被叫碼、起始時間、通話時間)\n”,con);

    for(i=0;icon;i++)

    {

        callInfoNew=(CALLINFO *)malloc(sizeof(CALLINFO));

        scanf(“%s%s%s%s%s”,callInfoNew-calldate,callInfoNew-callCode,callInfoNew-beCallCode,callInfoNew-beginTime,callInfoNew-endTime); //輸入我沒有寫驗證,想寫驗證添加在這

    callInfoNew-callTime=getTime(callInfoNew-beginTime,callInfoNew-endTime);//時間

        callInfoNew-callType=getcallType(callInfoNew-callCode,callInfoNew-beCallCode);

        callInfoNew-callPay=getpay(callInfoNew-callTime,callInfoNew-callType);//費用

        callInfoNew-next=NULL;

        if(callInfo0==NULL)

            callInfo0=callInfoNew;

        else

            callInfoTail-next=callInfoNew;

        callInfoTail=callInfoNew;

    }

    return callInfo0;

}

long getTime(char *beginTime,char *endTime)//計算通話時長,返回秒數,時間格式24制:小時:分鐘:秒

{

    int h1,m1,s1,h2,m2,s2;

    long t;

    h1=(beginTime[0]-‘0’)*10+beginTime[1]-‘0’;

    m1=(beginTime[3]-‘0’)*10+beginTime[4]-‘0’;

    s1=(beginTime[6]-‘0’)*10+beginTime[7]-‘0’;

    h2=(endTime[0]-‘0’)*10+endTime[1]-‘0’;

    m2=(endTime[3]-‘0’)*10+endTime[4]-‘0’;

    s2=(endTime[6]-‘0’)*10+endTime[7]-‘0’;

    t=(h2-h1)*60*60+(m2-m1)*60+(s2-s1);

    return t;

}

int getcallType(char *callCode,char *beCallCode)//通過主叫號碼 和 被叫號碼,識別通話類別(國際、國內、市話),返回0或1或2。

{

    //我沒寫,你需要自己寫,測試代碼默認返回類別2,市話

    return 2;

}

double getpay(long t,int callType)//計算費用,不足1分鐘按1分鐘算

{

    //(1) 國際長途1.00元/分鐘,(2) 國內長途0.60元/分鐘,(3) 市話前3分鐘0.20元,3分鐘以後0.10元/分鐘。

    double callpay;

    if(t%60!=0)

        t=t/60+1;

    else

        t=t/60;

    if(callType==0)

        callpay=t*1;

    if(callType==1)

        callpay=t*0.6;

    if(callType==2)

    {

        if(t=3)

            callpay=t*0.2;

        else

            callpay=3*0.2+(t-3)*0.1;

    }

    return callpay;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/192828.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-01 10:30
下一篇 2024-12-01 10:30

相關推薦

  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • 如何通過jstack工具列出假死的java進程

    假死的java進程是指在運行過程中出現了某些問題導致進程停止響應,此時無法通過正常的方式關閉或者重啟該進程。在這種情況下,我們可以藉助jstack工具來獲取該進程的進程號和線程號,…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • 註冊表取證工具有哪些

    註冊表取證是數字取證的重要分支,主要是獲取計算機系統中的註冊表信息,進而分析痕迹,獲取重要證據。本文將以註冊表取證工具為中心,從多個方面進行詳細闡述。 一、註冊表取證工具概述 註冊…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28

發表回復

登錄後才能評論