【菜鸟先飞】C语言编程练习

同前两篇文章一样,我每天写一个小程序,总有成为大牛的那一天!同样上图上代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <stdio.h>
/*
        自定义函数,循环输出三次句子,自定义函数输出一句话!
                author:楚楚天涯
        C Primer Plus第五版第二章课后编程练习第三题
*/
void number(void);//声明函数
void number1(void);//同上

int main()//main入口
{
        number();//调用函数
        number1();//同上

        return 0;//返回值
}
void number(void)//第一个函数体
{
        int i =0;//声明一个变量
        do{
                printf("For he's a jolly good fellow!\n");
        }while(i++ < 2);//循环输出一句话三遍
}
void number1(void)//第二个函数体
{
        printf("Which nobody can deny!\n");//输出一句话
}

下面上图:

【菜鸟先飞】C语言编程练习2

这次贴的是C Primer Plus第五版第二章课后编程练习的题目答案!是我自己写的!!现在还是蛮简单轻松的,日后会慢慢加深!注释标注好的!看代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
/*
        C Primer Plus第五版 第二章编程练习第一题
                        Author by 楚楚天涯
                 本程序在Ubuntu下运行正常
*/

int main()
{
        //整个题按照书中来的,包括提供的姓名什么的!
        printf("Anton Bruckner\n");     //在一行输出名字
        printf("Anton\nBruckner\n");    //第二行输出一个单词换行输出另一个单词
        printf("Anton ");               //第三行输出一个单词
        printf("Bruckner\n");           //接着在第三行输出另一个单词
        return 0;       //返回值
}

下面是运行效果截图:

backtrack5连接不上ssh

相信很多新手像我一样,在使用putty连接backtrack5的时候发现,尽然连接不上,报错了!很苦逼的是,我们居然不知道怎么去解决它!

本文是我使用putty连接backtrack5的产物,几个小时的工作才让我顺利的连接上,下面我来总结一下这次连接失败的几个原因!

NO.1:没有启动ssh

解决方案:service start sshd

或则可以 /etc/init.d/ssh start

启动不了?通过一些高手的指导,我发现我BT5里并没有安装openssh-server所以连接不上,下面我又安装这个软件

apt-get install openssh-server

在更新了软件列表之后,我开始安装这个openssh-Server!结束之后发现依然不能连接上putty!最后发现原来是没有key!!!ssh-key!!!

生成密钥KEY:

root@linuck:/#ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

root@linuck:/#ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key

root@linuck:/#sshd-generate

最后,终于,连接上了ssh!

上图纪念:

C Primer Plus第五版第一章课后练习

这是《C Primer Plus》第五版第一张课后的编程练习答案,直到今天我才开始做这些练习呵呵!下面是我写的代码。在linux下运行正常!!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>
#define PROPORTION 2.54 //声明常量
/*
author:楚楚天涯
*/

int main() //主函数
{
float inches; //声明一个浮点类型的变量
float centimeter;

printf("请输入英寸大小:\n"); //输出信息
scanf("%f",&amp;inches); //输入信息并存入变量中
centimeter = inches * PROPORTION; //计算
printf("转换的厘米是:%.1f\n",centimeter); //输出
return 0; //返回值
}

[转载]C语言编程—清空键盘缓冲区,Linux和Windows下完美实现

清空键盘缓冲区很多种方法,如用

1
fflush(stdin);

 

1
rewind(stdin);

等,但是在linux这些都不起作用,还得我今天试了半天都没成功,上网搜了一下发现

1
setbuf(stdin, NULL);

就能直接清空键盘缓冲区了。

以下几个实例:

Sample one

1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>

int main()
{
    char ch1;
    char ch2;

    ch1 = getchar();
    ch2 = getchar();
    printf("%d  %d", ch1, ch2);
    return 0;
}

程序的本意很简单,就是从键盘读入两个字符,然后打印出这两个字符的ASCII码值。可是执行程序后会发现出了问题:当从键盘输入一个字符后,就打印出了结果,根本就没有输入第二个字符程序就结束了。例如用户输入字符’a', 打印结果是97,10。这是为什么呢?

【分析】:

scanf()和getchar()函数是从输入流缓冲区中读取值的,而并非从键盘(也就是终端)缓冲区读取。而读取时遇到回车(n)而结束的,这个n会一起读入输入流缓冲区的,所以第一次接受输入时取走字符后会留下字符n,这样第二次的读入函数直接从缓冲区中把n取走了,显然读取成功了,所以不会再从终端读取!其实这里的10恰好是回车符!这就是为什么这个程序只执行了一次输入操作就结束的原因!

【解决办法】:

清空缓冲区的残留数据。

使用 fflush(stdin); 或 rewind(stdin); 均可起到清空键盘缓冲区的作用,这两个函数均包含在stdio.h这个头文件中

修正后的写法:
Sample two

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/*
 * 本程序只适用于 Windows 系统,测试平台:
 * Windows XP,Microsoft Visual C++ 6.0 SP6
*/


#include <stdio.h>

int main()
{
    char ch1;
    char ch2;

    scanf("%c", &ch1);
    printf("ch1 = %d", ch1);

    fflush(stdin);   /*清空缓冲区,也可以使用rewind(stdin);*/

    scanf("%c", &ch2);
    printf("ch2 = %d", ch2);
    return 0;
}

上面的实例只适用于Windows系统,在Linux环境下上面两种写法都是不起作用的,所以还要换个函数。

Sample three

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*
* 本程序适用于 Windows 和 Linux 系统,
* 测试环境:
* Windows XP,Microsoft Visual C++ 6.0 SP6
* Ubuntu Linux 8.04, NetBeans IDE 6.7
*/


#include <stdio.h>

int main()
{
    char ch1;
    char ch2;

    scanf("%c", &ch1);
    printf("ch1 = %d", ch1);

    setbuf(stdin, NULL); /*清空缓冲区*/

    scanf("%c", &ch2);
    printf("ch2 = %d", ch2);
    return 0;
}

本文转载自:露儿博客,地址:http://www.ludou.org/c-clear-buffer-area.html

十大WordPress的SEO优化技巧

WordPress系统本身,默认安装的情况下使用默认模板,实际上对搜索引擎并不友好,并没有针对搜索引擎进行很好的设计,下面我介绍一些技巧和方法可以使得WordPress能否对搜索引擎更为友好。

1、文章URL链接结构的优化

Permalink里面要包含postname.一般的服务器都支持mod_rewrite功能,使用这个功能可以优化Permalink(永久链接),在Option-Permalink里的Common options里进行设置,我比较倾向于使用/%year%/%monthnum%/%postname%.html这种链接结构,一来链接目录只有两级,利于索引,二来这种链接结构和Blogspot和Movable Type的链接结构一致,比较利于系统平滑迁移或切换。postname使用英文,如果是写英文Blog的话,系统会自动将标题的post slug做为postname.

2、文章Post Slug的优化

文章标题中最好包含文章最关键的关键字,不要使用一些没有意义的标题,对于英文Blog来讲,最好启用一个名叫SEO Slugs的插件,该插件能够自动将post slug中的the、in等“没用”的单词删除,有利于SEO.

3、文章Title的优化

WordPress默认的Title是“博客名-文章名”,这对SEO很不好,我觉得应该使用“文章名-博客名”的形式,建议安装一个名叫All in One SEO Pack的插件,可以自动将Title进行优化,并增加Descriptions和Keywords的Meta.

4、robots.txt的优化

在博客根目录下放置一个robots.txt的文件,可以指定搜索引擎只收录指定的内容。 对于WordPress来说,有一些地址是不应该被搜索引擎索引的,比如后台程序、日志文件、FEED地址等,一个针对WordPress的robots.txt的例子如下:

User-agent: *
Disallow: /wp-
Disallow: /feed/
Disallow: /comments/feed
Disallow: /trackback/

5、Sitemap的优化

对于Google搜索引擎来讲,使用Sitemap可以让搜索引擎更为有效的进行索引,安装一个名叫Sitemap Generator的插件可以自动完成Google Sitemap的生成,然后将这个地址提交到Google Webmaster即可。

6、防止垃圾留言评论

垃圾留言评论会影响Blog在搜索引擎中的表现,因此需要安装一个自动过滤垃圾留言评论的的插件,推荐使用Akismet

7、相关文章

通过tag的标记来实现相关文章,不过我建议使用WordPress 2.3里面的tag系统来实现,那样效率会更高一些。

8、搜索引擎来源的优化

安装一个名叫Landing sites的插件,可以让那些从搜索引擎搜索过来的用户体验更好,通过这个插件能够选择显示给用户搜索关键字相关的文章。

9、不要轻易做变动

不要总是草率的变动自己的域名、博客名、链接结构、链接地址等,早期应该做全局的规划,中途进行大的变动是非常不明智的。

10、更新你的博客

记着经常更新,并且写出高质量的内容,这才是SEO中最关键的地方,写出高质量的文章,将会更容易实现SEO的目标。

下面是一些其他中文的WordPress SEO优化技巧文章:

SEO for WordPress 完全指南

10步实现WordPress搜索引擎优化

下面是一些英文的WordPress SEO优化技巧文章:

Top Ten WordPress SEO Tips

Search Engine Optimization (SEO) Tips for WordPress 2.0

8 simple SEO tips for blogs

Optimize WordPress for Search Engines

2012元旦

2012到来了,来临的不是末日,也不是其他,而是元旦节。家家户户都大红大紫的,一片喜气!

昨夜我又一整夜失眠了,不知道为什么,对着手机看了一整夜小说,实在无聊至极,早上起来,一个人喝闷酒!苏丹师傅陪着一个我不认识的男人在网吧通宵上网,来是来不了了,晓孟也一个人在外通宵,更是来不了了!唉!~~~

祝大家元旦节快乐!

【生活】游子思乡

凌晨五点,耳边传来一声轻呼,不知是梦还是什么,父亲的唤我起床的声音久久萦绕在耳旁,如不得眠,睡不安稳!

不知是老了还是怎么,竟然开始怀恋家乡了,出来的豪情壮志逐渐的转换为平淡,心中的理想虽然没有变化,但始终没有了动力!

还记得出门前,父亲在耳边轻声唤我起床的声音,是那么疼惜!哎~~~

【生活】北京惊现紫荆女侠,我的偶像啊!

自香港紫荆女侠出现之后,北京也出现了一个紫荆侠,性感的打扮让人着迷。主要还是她的善举,矮油,这年头,我压根没想过会有那么善良的人!

我支持她,她是我偶像,以后也向她们学习,多做善事,多积阴德,免得我死了还没人给我上香!嘿嘿!