• 作业训练------通过读取c.txt文件中的内容等号右值,并将右值的最大值、最小值、平均值打印到屏幕上。


    这篇博客是学习传智播客c++教程的作业,通过在网上进行搜集来完成,但是网上有相似的代码,但是结果总是有点问题,所以本文写了这篇记录下。

    #include <stdio.h>
    #include <stdlib.h>
    #include <errno.h>
    #include <string.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    //3.1去除字符串右边的空格
    char *TrimStrR(char *SrcStr)
    {
        if (SrcStr == NULL)
        {
            printf("TrimStrR function is error!");
            return NULL;
        }
        int i = 0;
        int iLen = strlen(SrcStr);
        for(i = (iLen -1);i>=0;i--)
        {
            if(SrcStr[i] == ' ')
                SrcStr[i] = 0;
            else
                break;
        }
        return SrcStr;
    }
    //3.2去掉字符串左边的空格
    char *TrimStrL(char *SrcStr)
    {
        if (SrcStr == NULL)
        {
            printf("TrimStrR function is error!");
            return NULL;
        }
        if(SrcStr[0] != ' ')
        {
            return SrcStr;
        }
        int i = 0;
        int iLen = strlen(SrcStr);
        if(iLen == 0)
        {
            return SrcStr;
        }
        char *stemp = (char*)malloc(iLen+1);
        memset(stemp,0,iLen+1);
        memcpy(stemp,SrcStr,iLen);
        for(i = 0;i<iLen;i++)
        {
            if(SrcStr[i] != ' ')
            {
                strcpy(stemp,SrcStr+i);
                break;
            }
        }
        strcpy(SrcStr,stemp);
        free(stemp);
        return SrcStr;
    }
    //3.3解析带等号的字符串并去掉字符串传尾部空格
    void ParseValueStr(char *Des,char* SrcStr)
    {
        int iLen = strlen(SrcStr);
        if(iLen == 0)
        {
            return ;
        }
        if((SrcStr[iLen -1] == '
    ')||(SrcStr[iLen -1] == '
    '))
        {
            SrcStr[iLen -1] = '';
        }
        if(iLen > 1)
        {
            if((SrcStr[iLen -2] == '
    ')||(SrcStr[iLen -2] == '
    '))
            {
                SrcStr[iLen -2] = '';
            }
        }
        TrimStrR(SrcStr);
        int i = 0;
        for(i= 0;i<iLen;i++)
        {
            if((*SrcStr) == '=')
            {
                strcpy(Des,++SrcStr);
                break;
            }
            ++SrcStr;
        }
        TrimStrL(Des);
    }
    //3.4计算数组buf中的最大值,参数bufsize为参数buf的元素数量
    int max(const int *buf,const int bufsize)
    {
        int tmp = buf[0];
        int i = 0;
        for(i = 0;i<bufsize;i++)
        {
            if(tmp <= buf[i])
                tmp = buf[i];
        }
        return tmp;
    }
    float avg(const int *buf,const int bufsize)
    {
        float sum = 0;
        int i = 0;
        for(i = 0;i<bufsize;i++)
        {
            sum += buf[i];
        }
        return sum/bufsize;
    }
    int min(const int *buf,const int bufsize)
    {
        int tmp = buf[0];
        int i = 0;
        for(i = 0;i<bufsize;i++)
        {
            if(buf[i] == 0)
                continue;
            if(tmp >= buf[i])
                tmp = buf[i];
        }
        return tmp;
    }
    int main(int args, char*argc[])
    {
        if (args < 2)
        {
            printf("parameters is error!
    ");
        }
        char buf[100];
        char value[100];
        int values[32];
        memset(values,0,sizeof(values));
        FILE* fp = fopen(argc[1], "r");
        int i = 0;
        int j = 0;
        while(!(feof(fp)))
        {
            memset(buf,0,sizeof(buf));
            memset(value,0,sizeof(value));
            fgets(buf,sizeof(buf),fp);
            ParseValueStr(value,buf);
            values[i] = atoi(value);
            i++;
    
        }
        for(j = 0;j<i-1;j++)
        {
            printf("%d
    ",values[j]);
        }
        fclose(fp);
        printf("最大值:%d
    ",max(values,i));
        printf("最小值:%d
    ",min(values,i));
        printf("平均值:%f
    ",avg(values,i));
        return 0;
    }

    下面是运行后的结果:

  • 相关阅读:
    jQuery 2.0.3 源码分析 Deferred(最细的实现剖析,带图)
    jQuery 2.0.3 源码分析 Deferrred概念
    jQuery 2.0.3 源码分析core
    jQuery 2.0.3 源码分析core
    JavaScript异步机制
    使用Node.js实现数据推送
    自定义jQuery插件Step by Step
    转 CSS hack:针对IE6,IE7,firefox显示不同效果
    ie6,ie7兼容性总结(转)
    QQ浏览器X5内核问题汇总
  • 原文地址:https://www.cnblogs.com/NongSi-Net/p/6834685.html
Copyright © 2020-2023  润新知