NowTime 发布的文章

C 语言 | 求 3x3 矩阵对角线之和

C 代码如下:

#include <stdio.h>
//求3x3的整型矩阵对角线之和

int main(){
    int i,sum1=0,sum2=0;
    int arr[3][3]={{1,9,5}, {2,6,8}, {4,5,7}};

    //第一个对角线(左上 至 右下):0,0  1,1     2,2
    //第二个对角线(右上 至 左下):0,2  1,1  2,0
    //相加的和为:1+6+7 + 5+6+4  = 29

    for(i=0; i<3; i++){
        sum1 += arr[i][i];//<左上 至 右下> 之和
        sum2 += arr[i][-(i-3)];//<右上 至 左下> 之和。3 指的是数组“列”长度
    }

    printf("两个对角线之和为:%d", sum1+sum2);

    return 0;
}

运行结果:

两个对角线之和为:29
--------------------------------
Process exited after 0.1137 seconds with return value 0
请按任意键继续. . .

C 语言输出 杨辉三角

原理自己看下注释,最好是自己在纸上写出几行(如 6 行),寻找规律(每个数等于它上方两数之和。)

关于`杨辉三角,请查看 杨辉三角-百度百科

C 代码:

#include <stdio.h>

int main() {
    //      row:表示 行
    // column:表示 列
    int row,column;
    
    //设置 <第0行第0列> 值为1
    //设置 <第1行第0列、第1列> 值为1
    int arr[10][10]={{1}, {1,1}};
    
    for(row=2; row<10; row++){
        arr[row][0] = 1;//设置第 row 行第 0 列的值为 0
        for(column=1; column<row; column++){
            //该值 = 上一行<该列-1> + 上一行<该列> 的值
            //例如:row=2, column=1,则 arr[2][1] 的值为
            //arr[2-1][1-1]+arr[2-1][1]
            arr[row][column] = arr[row-1][column-1]+arr[row-1][column];
        }
        arr[row][column] = 1;//设置第 row 行第 column 列的值为 1
    }
    
    printf("输出<10行>杨辉三角:\n");
    for(row=0; row<10; row++){
        for(column=0; column<10; column++){
            if(arr[row][column] != 0){//输出值不为0的数
                printf("%4d", arr[row][column]);
            }
        }
        printf("\n");
    }
}

ThinkPHP 5.1 中间件笔记

在用 ThinkPHP 写 API 的时候,在同一个模块下,有些方法(function)需要校验登录,有一些方法(function)不需要检验登录,然后我使用了“笨方法”,需要进行校验登录的方法(function)上都得写几行判断是否登录的,导致代码冗余,代码质量不高,今天仔细阅读了 ThinkPHP 5.1 开发文档,学习了一个新技能——中间件(https://www.kancloud.cn/manual/thinkphp5_1/564279

在此记录下,因为对 ThinkPHP 框架 了解不够深入,难免有错误之处,请dalao指点更正????


创建中间件

Think PHP 5.1 关于中间件详细用法请查看官方文档:https://www.kancloud.cn/manual/thinkphp5_1/564279

方法一:

使用命令创建快捷创建(需要设置好 PHP 变量,你看不懂这个你看下一个方法吧):

php think make:middleware Auth

不出意外,会返回如下提示:

E:\PhpStorm_Project\x.nowtime.cc>php think make:middleware Auth
Middleware created successfully.

然后就会在 application/http/middleware 路径下创建一个 Auth.php 文件

方法二:

手动创建 application/http/middleware/Auth.php 文件

编写代码

编辑 application/http/middleware/Auth.php 文件,编写业务逻辑:

- 阅读剩余部分 -

C 语言 | 猴子吃桃问题 循环结构程序设计-第12题

题目

猴子吃桃问题。猴子第1天摘下若干个桃子,当即除了一般,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉了一半,有多吃了一个。
以后每天早上都吃了前一天剩下的 一半零一个。到第10天早上想再吃时,就只剩一个桃子了。
求第1天共摘了多少个桃子?

解题思路

1.假设 桃子 总共有 x 个,则可以列出式子:

y1:第1天剩下的桃子数量
y2:第2天剩下的桃子数量
...
y9:第9天剩下的桃子数量
y1 = x/2 - 1
y2 = y1/2 - 1
y3 = y2/2 - 1
y4 = y3/2 - 1
y5 = y4/2 - 1
y6 = y5/2 - 1
y7 = y6/2 - 1
y8 = y7/2 - 1
y9 = y8/2 - 1

2.根据题目得知,第9天还剩一个桃子,故我们可解方程得出:

因为 y9 = 1
所以将 y9=1 带入 y9 = y8/2 - 1,解得方程
y8 = 1+1*2
y8 = 4
然后继续往上解,即可得到第1天摘了多少个桃子

C 代码

#include <stdio.h>

int main() {
    int days=1, peach=1, eat;
    
    do{
        peach = (peach+1)*2;
        days++;
    }while(days<10);
    printf("猴子第 1 天摘了:%d 个桃子", peach);
    
    printf("\n-------------------------------\n");
    printf("验证结果:\n");
    
    days = 1;
    do{
        eat = peach/2+1;//吃了多少个桃子
        peach -= eat;//桃子的剩余数量
        printf("第%2d 天:吃了 %3d 个,剩余 %3d 个桃子\n",days,eat,peach);
        days++;
    }while(days<=10);
    
}

运行结果

猴子第 1 天摘了:1534 个桃子
-------------------------------
验证结果:
第 1 天:吃了 768 个,剩余 766 个桃子
第 2 天:吃了 384 个,剩余 382 个桃子
第 3 天:吃了 192 个,剩余 190 个桃子
第 4 天:吃了  96 个,剩余  94 个桃子
第 5 天:吃了  48 个,剩余  46 个桃子
第 6 天:吃了  24 个,剩余  22 个桃子
第 7 天:吃了  12 个,剩余  10 个桃子
第 8 天:吃了   6 个,剩余   4 个桃子
第 9 天:吃了   3 个,剩余   1 个桃子
第10 天:吃了   1 个,剩余   0 个桃子

Snipaste_2019-04-19_13-56-06.png