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/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

发表回复

登录后才能评论