苏嵌学习日志0712

苏嵌                                                                                                                                            项目实战

学习日志                                          姓名:周甜             日期:0712

 

 

 

 

今日学习任务

 

1、辅导老师完成学习内容答疑;

2 3小时完成C语言摸底测试;

今日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

1.      上午按要求完成了老师对前三天内容的回顾;

2.      下午的摸底测试未能及时完成四条编程题

今日开发中出现的问题汇总

 

由于C语言基础不扎实,今天一下午只做了两条编程题,一题是书上的例题,所以花了很多时间在计算器加减乘除上,最后的程序还不完整,不能完全达到老师的要求,在这过程中出现了很多问题,主要问题是对数据类型和行缓冲不够理解导致结果出不来。

 

今日未解决问题

 

C语言的数据类型有基本类型、枚举类型、空类型和派生类型等四大类,主要研究的是基本类型,又分为基本整型(int)、短整型(short int)、长整型(long int)、字符型(char)、单精度浮点型(float)、双精度浮点型(double);格式符有%d 十进制有符号整数 、%u 十进制无符号整数 、%f 浮点数 、%s 字符串 、%c 单个字符 、%p 指针的值
%e 指数形式的浮点数 、%x, %X 无符号以十六进制表示的整数 、%0 无符号以八进制表示的整数 、
%g 自动选择合适的表示法,其中%lf 表示输出double浮点数;

行缓冲:getchar有缓冲区有回显,如果缓冲区中没有内容,那么等待用户输入;如果有内容,哪怕一个字符,也会直接从缓冲区中读取数据,不会等待用户输入。第一次调用 getchar() 时,会等待用户输入,用户输入的所有字符都被放到标准输入(stdin)缓冲区,直到用户按下回车键为止(回车符也被放入缓冲区)。用户按下回车键,getchar() 函数才开始从缓冲区中读取数据,每次读取一个字符。

今日开发收获

大一时C语言不扎实导致今天做编程题的时候编不出来,编出来的问题很多等问题,虽然今天下午并没有做完,但是在老师的指导下我学会了不少编程时容易出现的错误以及应该怎么去修改这些错误,收获还是很大的,也让我深刻的看到自己C语言的不足

 

自我评价

 

 

 

今天的课堂测试让我看到了自己知识上的薄弱点,在接下去的一个月我会重新学习C语言来弥补自己在这方面的缺陷。

其他

 

 

C语言实现简单的计算器(加、减、乘、除)

 

#include <stdio.h>//头文件
float add(float a,float b)  //子函数加
{
     return ( a + b) ;
}
float sub(float a,float b) //子函数减
{
    return ( a - b) ;
}
float mul(float a,float b) //子函数乘
{
    return  (a * b) ;
}
float div(float a,float b) //子函数除
{
    return  (a / b) ;
}
main()                    //主函数
{

        float a;             //定义输入常量

    float b;

    float c;            //定义输出常量

    char f;            //定义运算符号

    while(1)          // 循环
    {

        scanf("%f",&a);//从键盘输入数字常量1
                getchar();     //从缓冲区获得该常量1
                scanf("%f",&b);//从键盘输入数字常量2
                getchar();     //从缓冲区获得该常量2
  switch(f = getchar()) //从缓冲区获得运算符号,进行分支选择
{
    case'+':         //当f='+',即求加法时调用
    c = add(a, b);     // 调用加法函数
    printf("a + b = %f\n",c);   //输出加法结果
    break;             //跳出
   
    case'-':         //当f='-',即求减法时调用
    c = sub(a,b);     //调用减法函数
    printf("a - b = %f",c);    //输出减法结果
    break;            //跳出

    case'*':        //当f='*'时,即求乘法时调用
    c = mul(a,b);     //调用乘法函数
    printf("a * b = %f",c);  //输出乘法结果
    break;            //跳出

    case'/':        //当f='/'时,即求除法时调用

    c = div(a,b);    //调用除法函数
    printf("a / b = %f",c);  //输出除法结果
    break;           //跳出
         }
    }
}

用C语言打印出杨辉三角

 

杨辉三角形是形如:

1

1   1

1   2   1

1   3   3   1

1   4   6  4   1

的三角形,其实质是二项式(a+b)n次方展开后各项的系数排成的三角形,它的特点是左右两边全是1,从第二行起,中间的每一个数是上一行里相邻两个数之和。


#include <stdio.h>                           //头文件
main()                                      //主函数
{
    int a[100][100] = {0};   //定义二维数组
    int i;         //定义变量
    int j;
    int n;          //定义杨辉三角的行数
    while(1)         //循环,可以求多个杨辉三角
    {
        printf("请输入杨辉三角的行数:");//输出显示界面
        scanf("%d",&n); //输入要求的杨辉三角的行数
    for(i = 0;i < n;i ++)     //第一列全置一
a[i][0] = 1;
    for(i = 1;i < n;i ++)//杨辉三角中每个数所上面两数之和
    for(j = 1;j <= i;j ++)
    a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
   for(i = 0;i <= n;i ++)     //输出杨辉三角
   {
       for(j = 0;j <= i;j ++)
       printf("%5d",a[i][j]);
       printf("\n");
   }
    }
}

利用递归方法实现一个函数
,该函数能够实现n的阶乘,n! =n*(n-1)**3*2*1;


#include <stdio.h>   //头文件
int main()           //主函数
{
    int fac(int n); //fac函数声明
    int n;          //定义输入的阶乘的阶数
    int y;          //定义输出的阶乘
    printf("input an integer number:");//输出界面信息
    scanf("%d",&n);       //输入要求阶乘的数
    y=fac(n);           //fac函数调用 
    printf("%d != %d\n",n,y);   //输出阶数和阶乘
    return 0;
}
int fac(int n)       //定义fac函数  
{
    int f;          //定义阶乘
if(n < 0)       //n不能小于0
        printf("n < 0,data error!");
    else if(n == 0 || n == 1) //n=0或1时,n!=1
        f = 1;
    else f = fac(n - 1) * n; //n>1时,采用函数的递归调用,n!=n*(n-1)
    return(f);
}

输入一个字符串,计算字符串中子串出现的次数

 

#include <stdio.h>        //头文件
#include <string.h>       //字符的头文件
int main()                //主函数
{
    char string1[50];     //定义主串
    char string2[30];     //定义子串
    int i;                //定义变量
    int j;
    int count = 0;        //定义子串在主串中出现的次数
    printf("input string1:");//输出主串的界面
    scanf("%s",string1);     //从键盘输入主串
    printf("input string2:");//输出子串的界面
    scanf("%s",string2);     //从键盘输入子串
    for(i = 0;string1[i];i ++) //扫描主串
    {
        for(j = 0;string2[j];j ++) //扫描子串
{
20:59:39
我的手机 2018/7/12 20:59:39

    if(string1[i] == string2[j]) //当主串与子串首字母相同时开始继续扫描下面的字符
    {
        i ++;
j ++;
if(string2[j] == '\0')  //当子串扫描结束
{
    count ++;           //子串在主串中出现的次数加1
    break;
}
    }
}
    }
    printf("字符串出现的次数:%d",count); //输出子串在主串中出现的次数
    return 0;


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Linux系统自带的Logrotate工具来实现按日志大小切割日志。 Logrotate是一个日志文件管理工具,它可以周期性地检查、分析、压缩和删除日志文件。这个工具可以通过配置文件来实现对日志文件的管理。 以下是一个示例配置文件,你可以根据需要进行修改: ``` /path/to/log/file.log { rotate 7 # 保留最近7个日志文件 daily # 每天执行一次日志轮转 missingok # 如果文件不存在也不报错 notifempty # 如果文件为空也不轮转 copytruncate # 复制并截断原始日志文件,防止日志写入被断 compress # 压缩轮转后的日志文件 delaycompress # 压缩上一次轮转后的日志文件 size 100M # 超过100M时进行轮转 } ``` 上面的配置文件将指定`/path/to/log/file.log`文件按照每天进行轮转,保留最近7个日志文件,如果文件不存在或者文件为空也不报错,同时在复制原始日志文件时进行截断,防止日志写入被断,压缩轮转后的日志文件,延迟压缩上一次轮转后的日志文件,并且当日志文件大小超过100M时进行轮转。 将上面的配置文件保存为`/etc/logrotate.d/mylog`,然后执行以下命令来测试轮转: ``` logrotate -d /etc/logrotate.d/mylog ``` 如果一切正常,执行以下命令来进行轮转: ``` logrotate -f /etc/logrotate.d/mylog ``` Logrotate工具还可以实现其他功能,你可以查看其官方文档来了解更多信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值