CodeSky 代码之空

随手记录自己的学习过程

归档时间:2014-03

C 指针*p++与*++p

2014-03-26 23:22分类: C评论: 0

关于++i与i++,我们这里纠结了不止一次,到了指针,还得接着纠结:

1#include <stdio.h>
2
3int data[2] = {100, 200};
4int moredata[2] = {300, 400};
5int main(void)
6{
7    int * p1, * p2, * p3;
8
9    p1 = p2 = data;
10    p3 = moredata;
11    printf("  *p1 = %d,  *p2 = %d,  *p3 = %d\n", *p1, *p2, *p3);
12    printf("  *p1++ = %d,  *++p2 = %d,  (*p3)++ = %d\n", *p1++, *++p2, (*p3)++);
13    printf("  *p1 = %d,  *p2 = %d,  *p3 = %d\n", *p1, *p2, *p3);
14    return 0;
15}
16
阅读更多 →

MYSQL 再谈JOIN

2014-03-23 11:43分类: SQL评论: 0

以前我们曾经在SQL 关联查找中说过JOIN,现在再次用到又学到了点新的东西。

首先还是这段代码(还是的理由是因为上一篇文章):

1SELECT pr_rates.pid,count(pr_rates.ip),pr_works.title,pr_works.realname,pr_college.name FROM pr_works RIGHT JOIN pr_rates ON pr_rates.pid=pr_works.pid LEFT JOIN pr_college ON pr_works.college=pr_college.id GROUP BY pid ORDER BY count(pr_rates.ip) DESC
2

为什么会有Left Join Right Join,相当于一个人站在中间,左右手拉手,两个人自然是没有感觉的,其实中间一个人起到了连结的左右,他的左手连通着一个人的右手,右手连通着一个人的左手,建立了关联,于是乎因此我们选择一个与两个表都有共同项的表作为中间人,差不多就是这个意思。

阅读更多 →

MYSQL GROUP BY

2014-03-23 11:38分类: SQL评论: 0

GROUP BY有种合并同类项的感觉,其实也就是那个效果,我在这次的POSTER里写了一串:

1SELECT pr_rates.pid,count(pr_rates.ip),pr_works.title,pr_works.realname,pr_college.name FROM pr_works RIGHT JOIN pr_rates ON pr_rates.pid=pr_works.pid LEFT JOIN pr_college ON pr_works.college=pr_college.id GROUP BY pid ORDER BY count(pr_rates.ip) DESC
2

其中就用到了GROUP BY pid 相当于把相同的pid合并。 然后用count()来统计就得出了得票数。

扩展阅读: GROUP BY:http://www.w3school.com.cn/sql/sql_groupby.asp count():http://www.w3school.com.cn/sql/sql_func_count.asp

阅读更多 →

C 猜数字讲讲输入输出

2014-03-16 12:55分类: C评论: 0

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

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

阅读更多 →

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

2014-03-14 15:02分类: C评论: 0

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

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

1#include <stdio.h>
2
3int main(void)
4{
5    int num, i, count[11];
6
7    for (i = 0; i <= 10; i++)
8        count[i] = 0;
9
10    printf("请输入[0,100]的数\n");
11    scanf("%d", &num);
12    while (num != -1) {
13        if(num >= 0 && num <=100)
14            count[num / 10]++;
15        else
16            printf("请输入正确范围的数字\n");
17        printf("请输入[0,100]的数\n");
18        scanf("%d", &num);
19    }
20
21    for (i = 0; i <= 10; i++)
22        printf("%5d", count[i]);
23
24    return 0;
25}
26
阅读更多 →

C 关于递归

2014-03-14 14:54分类: C评论: 0

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

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

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

1#include <stdio.h>
2
3int Yang(int row, int col)
4{
5    int len = row;
6    if (row == 1 || col == 1 || col == len)
7        return 1;
8    if (col > len)
9        return 0;
10    return Yang(row - 1, col - 1) + Yang(row - 1, col);
11}
12
13int main(void)
14{
15    int row, i;
16
17    scanf("%d", &row);
18
19    for (i = 1; i <= row; ++i)
20        printf("%d ", Yang(row, i));
21    printf("\n");
22
23    return 0;
24}
25
阅读更多 →

C 分解素因数

2014-03-14 14:39分类: C评论: 0

比如 输入120,输出120 = 2 * 2 * 2 * 3 * 5

当然结果还是没有完全按照这个来输出,基本思路是实现了的。 可是最终我用的是递归,递归么……咳咳

1#include <stdio.h>
2
3int Prime(int num);
4
5int main(void)
6{
7    int num, array[50];
8
9    printf("请输入一个数: ");
10    scanf("%d", &num);
11    printf("%d = ", num);
12    Prime(num);
13
14    return 0;
15}
16
17int Prime(int num)
18{
19    int i;
20
21    for (i = 2; i <= num; i++)
22        if (num % i == 0) {
23            printf("% d", i);
24            return (Prime(num / i));
25        }
26}
27
阅读更多 →

C 逗号运算符

2014-03-14 14:02分类: C评论: 0

逗号运算符 其实就是从左到右依次执行。

百度百科:

(1) 逗号表达式的运算过程为:从左往右逐个计算表达式。 (2) 逗号表达式作为一个整体,它的值为最后一个表达式(也即表达式n)的值。 (3) 逗号运算符的优先级别在所有运算符中最低。

比如:

1x = (y = 3, (z = ++y + 2) + 5);
2

首先y赋值为3,递增到4后加了2赋值给z,再加5,最后赋值11给x。 结果y为4 z为6 x为11

比如这个

1printf("%d ", (num /= i, i));
2

最终输出的就是i的值。

阅读更多 →

说说循环

2014-03-09 15:25分类: PHP评论: 0

一个脑残竟然有点搞不清for循环是怎么进行的了,故mark一下。

for (initialize; test; update)首先先赋个初值,然后循环前先过一遍test,满足条件则循环,循环完再执行update,当然,可以选择性的写initialize,testupdate,可以用for( ; ; )把条件全变为空,这样也就可以不赋初值。不设置跳出循环的条件(如果写的不好就是死循环了),不累加。

还有两个循环都是whilefor常用于数字递增的话,while则运用于条件,do whilewhile的差别在于do while至少执行一次,一般whilefor更常用。

在我所接触的语言中,都是如此。

阅读更多 →
共 38 篇文章,4 页