标签 源码 下的文章

C 说说折半查找(二分法)

学校的一道上机题:

编写程序,在整数数组中设置10个值(例如学生年龄),然后从键盘输入一个要查找的年龄,并输出查找结果。
[提示]可以利用标志变量表示查找的结果。

因为无聊,所以就用了折半查找,上次说【两分法】被鄙视了,所以这真的是二分法啦。

首先二分法需要先排序,排序可以用各种函数,也可以用冒泡排序,以前我写过关于冒泡排序(PHP实现冒泡排序),因此这里对冒泡排序是什么不多做解释,直接上代码。

- 阅读剩余部分 -

C 转换说明符%g

题目:

编写一个函数,返回一个double数组中最大的和最小的数之间的差值,并在一个简单的程序中测试这个函数。
对于题目无感,很容易,只是有一点疑惑,因为答案写的时候是
printf("The gap between  max and min is: %g\n",gap( array, WIDTH));

感觉很神奇,%g是什么?在我的笔记-说明符中并没有记录,然后翻到书上的章节里,也没有详细介绍,只是把它归类为解释成浮点型。

结果输出:

2.6
9.2
The dif between max and min is : 6.6

没有多余的0,看着很舒服。

- 阅读剩余部分 -

利用.htaccess去除CodeIgniter的index.php

个人用的方法,感觉还不错:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /poster
    RewriteCond $1 !^(index\.php|images|robots\.txt)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
</IfModule>

如果在根目录,那么把/poster改成/就行了,如果在http://xxx.xxx/aaa 则把/poster改成/aaa

注:
第1行 第9行 判断rewrite模块是否加载,没有加载的话这几行代码不起作用
第2行设置Linux软连接
以上几行去掉无妨。

C 循环与递归实现整数幂函数

题目:

函数power()的功能是返回一个double类型数的某个正整数次幂。现在改进该函数,使其能正确地计算负幂。同时,用该函数实现0的任何次幂为0,并且任何数值的0次幂为1。使用循环的方法编写该函数并在一个程序中测试它。

递归在C 关于递归中讲过了一些知识,但是在写的时候我还是遇到了一些麻烦,而普通的循环却比较好想。

- 阅读剩余部分 -

CodeIgniter 分页类的一点总结

这里我们以get与分页的结合为例,因为这点当时我纠结了很久,当然是在M-SHOW时候纠结完的,这次拿来主义了一次,记录一下。

        $this->load->library('pagination');
        $id = $this->input->get('id');

        /**
         *  pagination
         */
        $config['base_url'] = base_url().'poster_admin/works/search';
        $config['per_page'] = 5;
        $config['num_links'] = 7;
        $config['uri_segment'] = '4';
        $config['use_page_numbers'] = TRUE;
        $config['full_tag_open'] = '<ul class="pagination">';
        $config['full_tag_close'] = '</ul>';
        $config['cur_tag_open'] = '<li class="active"><a href="#">';
        $config['cur_tag_close'] = '</a></li>';
        $config['num_tag_open'] = '<li>';
        $config['num_tag_close'] = '</li>';
        $config['prev_tag_open'] = '<li>';
        $config['prev_tag_close'] = '</li>';
        $config['next_tag_open'] = '<li>';
        $config['next_tag_close'] = '</li>';
        $config['first_link'] = FALSE;
        $config['last_link'] = FALSE;
        $config['total_rows'] = $this->works_model->searchNum($id);

        $config['suffix'] = '?id='.$this->input->get('id');
        $config['first_url'] = base_url().'poster_admin/works/search'.'?id='.$this->input->get('id');

        $this->pagination->initialize($config);

- 阅读剩余部分 -

PHP 简单写个install.php

这次顺便做了一个install.php才发现难度其实并不大,还是文件写入操作而已,安装其实主要操作的还是数据库里的内容,先来看看文件里怎么写:(还是用的Codeigiter,对于使用其他框架或者手写而言,仅思路可参考,用了挺多CI自带的helper或者是library的)

                $content = "<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');\n";
                $content .= '$active_group'. "= 'default';\n";
                $content .= '$active_record'." = TRUE;\n";
                $content .= '$db'."['default']['hostname'] = '".$this->input->post('hostname')."';\n";
                $content .= '$db'."['default']['username'] = '".$this->input->post('rootname')."';\n";
                $content .= '$db'."['default']['password'] = '".$this->input->post('pass')."';\n";
                $content .= '$db'."['default']['database'] = '".$this->input->post('book')."';\n";
                $content .= '$db'."['default']['dbdriver'] = 'mysql';\n";
                $content .= '$db'."['default']['dbprefix'] = '';\n";
                $content .= '$db'."['default']['pconnect'] = TRUE;\n";
                $content .= '$db'."['default']['db_debug'] = TRUE;\n";
                $content .= '$db'."['default']['cache_on'] = FALSE;\n";
                $content .= '$db'."['default']['cachedir'] = '';\n";
                $content .= '$db'."['default']['char_set'] = 'utf8';\n";
                $content .= '$db'."['default']['dbcollat'] = 'utf8_general_ci';\n";
                $content .= '$db'."['default']['swap_pre'] = '';\n";
                $content .= '$db'."['default']['autoinit'] = TRUE;\n";
                $content .= '$db'."['default']['stricton'] = FALSE;";

在文件里用\n来换行,因为里面包括了PHP的代码,这导致了我们只能用双引号避免冲突(否则的话就得用\了,感觉工作量更大),针对$db,直接显示必须要用单引号,于是就出现了这个。

- 阅读剩余部分 -

C 猜数字讲讲输入输出

题目:

用两分搜索策略来猜数字(1-100),比如程序最初猜50,让其询问用户该猜测是大还是小,如果猜测值小,那么下一次猜测值为50-100的中值。

两分法查找的思路+练习输入输出,为了作为一个游戏增强一下卖萌性所以……还是先来看看源码吧

- 阅读剩余部分 -

C 输入[0,100]的数,分区间统计数字个数

题目:

输入不知道多少个 [0, 100] 间的整数(直到 -1 结束)[100独立成一段]
以每 10 分为一段([0, 10), [10, 20)...),输出每一区间内整数的个数

很简单的题目……感动哭了(然后自己作死就得到了杨辉三角和分解素因数→不作死就不会死系列)

#include <stdio.h>

int main(void)
{
    int num, i, count[11];

    for (i = 0; i <= 10; i++)
        count[i] = 0;

    printf("请输入[0,100]的数\n");
    scanf("%d", &num);
    while (num != -1) {
        if(num >= 0 && num <=100)
            count[num / 10]++;
        else
            printf("请输入正确范围的数字\n");
        printf("请输入[0,100]的数\n");
        scanf("%d", &num);
    }

    for (i = 0; i <= 10; i++)
        printf("%5d", count[i]);

    return 0;
}

- 阅读剩余部分 -

C 关于递归

经过一道杨辉三角的题,总算差不多知道了关于递归的几个问题。

  1. 递归里怎么看return
  2. 为什么说递归效率低,能不用就不用

方便阅读期间,我们直接在这里再次贴出代码:

#include <stdio.h>

int Yang(int row, int col)
{
    int len = row;
    if (row == 1 || col == 1 || col == len)
        return 1;
    if (col > len)
        return 0;
    return Yang(row - 1, col - 1) + Yang(row - 1, col);
}

int main(void)
{
    int row, i;

    scanf("%d", &row);

    for (i = 1; i <= row; ++i)
        printf("%d ", Yang(row, i));
    printf("\n");

    return 0;
}

- 阅读剩余部分 -