程序设计入门-c语言(第4周练习题)

1
素数和(5分)

题目内容:

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。

现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入格式:

两个整数,第一个表示n,第二个表示m。

输出格式:

一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。

输入样例:

2 4

输出样例:

15

时间限制:500ms内存限制:32000kb

#include <stdio.h>

int chackSuShu(int n)
{
    int i;
    if(n == 2)
        return 1;
    for( i =2; i<n; i++)
    {
        if( n%i ==0)
            return 0;
    }
    return 1;
}

int main()
{
    int n,m,i,cut=0;
    int he=0;
    scanf("%d %d", &n, &m);
    i=2;
    while(cut<=m)
    {
        if(chackSuShu(i)==1)
        {
            cut ++;
            if(cut>=n && cut <= m){
                he += i;
            }
        }
        i++;
    }
    printf("%d", he);
    return 0;
}


2
念整数(5分)

题目内容:

你的程序要读入一个整数,范围是[-100000,100000]。然后,用汉语拼音将这个整数的每一位输出出来。

如输入1234,则输出:

  1. yi er san si

注意,每个字的拼音之间有一个空格,但是最后的字后面没有空格。当遇到负数时,在输出的开头加上“fu”,如-2341输出为:

  1. fu er san si yi

输入格式:

一个整数,范围是[-100000,100000]。

输出格式:

表示这个整数的每一位数字的汉语拼音,每一位数字的拼音之间以空格分隔,末尾没有空格。

输入样例:

-30

输出样例:

fu san ling

时间限制:500ms内存限制:32000kb

#include <stdio.h>

void outNum(int num)
{
    switch(num)
    {
        case 1: printf("yi");break;
        case 2: printf("er");break;
        case 3: printf("san");break;
        case 4: printf("si");break;
        case 5: printf("wu");break;
        case 6: printf("liu");break;
        case 7: printf("qi");break;
        case 8: printf("ba");break;
        case 9: printf("jiu");break;
        case 0: printf("ling");break;
    }
}

int chackNum(int num)
{
    int n,tmp,out;
    tmp = num;
    n = tmp %10;
    tmp /= 10;
    if (tmp>0)
    {
        out = chackNum(tmp);
        outNum(out);
        printf(" ");
    }
    return n;
}

int main()
{
    int num,out;
    scanf("%d", &num);
    if( num < 0 )
    {
        printf("fu ");
    }
    num = abs(num);
    out = chackNum(num);
    outNum(out);
}

两道编程题练习

来自 网易云课堂 程序设计入门-c语言

1
奇偶个数(5分)

题目内容:

你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据。程序输出读到的数据中的奇数和偶数的个数。

输入格式:

一系列正整数,整数的范围是(0,100000)。如果输入-1则表示输入结束。

输出格式:

两个整数,第一个整数表示读入数据中的奇数的个数,第二个整数表示读入数据中的偶数的个数。两个整数之间以空格分隔。

输入样例:

9 3 4 2 5 7 -1

输出样例:

4 2

时间限制:500ms内存限制:32000kb


#include <stdio.h>
int main(){
    int num;
    int js = 0;
    int ous = 0;
    while(1)
    {
        scanf("%d",&num);
        if(num == -1)
        {
            break;
        }
        while(num>2){
            num = num - 2;
        }
        if (num==1)
        {
            js++;
        }
        else
        {
            ous++;
        }

    }

    printf("%d %d",js,ous);
    return 0;
}

2
数字特征值(5分)

题目内容:

对 数字求特征值是常用的编码算法,奇偶特征是一种简单的特征值。对于一个整数,从个位开始对每一位数字编号,个位是1号,十位是2号,以此类推。这个整数在 第n位上的数字记作x,如果x和n的奇偶性相同,则记下一个1,否则记下一个0。按照整数的顺序把对应位的表示奇偶性的0和1都记录下来,就形成了一个二 进制数字。比如,对于342315,这个二进制数字就是001101。

这里的计算可以用下面的表格来表示:

数字 3 4 2 3 1 5
数位 6 5 4 3 2 1
数字奇偶
数位奇偶
奇偶一致 0 0 1 1 0 1
二进制位值 32 16 8 4 2 1

按照二进制位值将1的位的位值加起来就得到了结果13。

你的程序要读入一个非负整数,整数的范围是[0,100000],然后按照上述算法计算出表示奇偶性的那个二进制数字,输出它对应的十进制值。

提示:将整数从右向左分解,数位每次加1,而二进制值每次乘2。

输入格式:

一个非负整数,整数的范围是[0,100000]。

输出格式:

一个整数,表示计算结果。

输入样例:

342315

输出样例:

13

时间限制:500ms内存限制:32000kb

#include <stdio.h>
int chacknum(int num)
{
    while(num>=2)
    {
        num -= 2;
    }
    return num;
}

int main()
{
    int num;
    int n,out=0,cut =1;
    int oi = 1;
    scanf("%d",&num);
    while( num != 0)
    {
        n = num%10;
        if ( chacknum(n) == chacknum(cut))
        {
            out += oi;
        }


       ///////////
       oi *= 2;
       cut ++;
        num = num/10;
    }

    printf("%d", out);
    return 0;
}

偶尔思考一下,也是一种幸福

首先,感谢网易的公开课(http://open.163.com/)。

当我想要思考或者接受新的思维方式的时候,我会去看公开课。当然,我的接受能力是有限的:所以,我经常上的公开课之内的网站很多时间是网易公开课。

在无数中无法未知的事物中,我最喜欢看的还是 TED 的演讲,当然还包括很多人的演讲(马云,奥巴马,乔布斯……)。

我目前最后悔的事情是当初没有学好英语,以致我到现在无法去主动的学习,学习那些正在`奋斗`正在研究`以及正在改变时间`的人的思维方式和做法。

我曾想过抛弃一切,然后追逐自我。但是,在这个世界上还有许多我不得不去做的事情!

所以,我只能一边尽力生存,然后一边向我所要到达的地方爬行。

曾有很多次,我想要放弃,想要改变方向。但是,当我将前进的坐标向任何一个方向偏移的时候。我发现,我在消失,不论是肉体还是灵魂,都在渐渐的消失。

我变得十分恐惧,不敢前进。我在原地停留了很久,直到——我发现,时间在倒退。

或许这是件好事情?我会消失?在这个世界上不留一点痕迹的消失:我在哀嚎(我不想这样/这不是我要的结局):我要到达我的目标,然后带给身边的人幸福。最后,我想:我也许会喜欢上自己也说不定呢?当我成功之后:或者痛苦一生。

演讲人的心情,会通过他们的语言/动作/表情,十分准确的传达给我。!没有任何的背景音乐,纯粹的心理呐喊。每一次的聆听,对我来说都是一次冲击。如同受伤之后身体发出的电波一般,我的大脑会在这一刻有些许的变化。

这种变化,对于我来说,像是毒品一般。明明会受伤,会失去现在平常的生活,会变得不成人样!我无法舍弃,这一瞬间对我的改变,就算他以后也会被巨大力量的规则扭曲/改变,然后变成原样。但是,至少——我在这一瞬间,超越了自己。

我喜欢`强者`,这在“少女心”中举足轻重的词汇。很可惜,我是男孩子,我需要成为“强者”。在超越自己的一瞬间,我感觉到:自己现在的状态貌似就是`强者`; 我这一刻成为了我心中的“信仰”,我为此欢呼!

但是,当失去那一刻的时候,忘记了那一刻的感觉。然后,恐怖的`贤者模式`就会降临在我的身上。

我会在这段时刻,不断的训斥自己:为什么?为什么不?你想怎么做?你知道该怎么做了吗?你懂的?垃圾/变态/人渣/失败者!???……???最后,当接受符号EOF出现在我的面前的时候,我发现梦幻的世界支离破碎了。在我面前的,仍然是不得不去多什么事情的现实。

我不断的积累这种痛苦/兴奋的状态,将他们放在记忆中,用来时刻提醒自己—— 尽快改变!!!

理想与现实这种傻瓜问题我不想回答!

我只想问我自己 : 旅行的终点和路上的(优美的风景,美味的食物,留连忘反的诱惑)以及 (路面的不平,修路的绕道,漆黑漫长的隧道,最低生命状态的食物保障):这些东西中,你会选择什么,会抛弃什么?

我的回答是肯定的: 终点必须到达,只要我还活着;融入环境什么的,你不是那些路边的石子,小溪里的水滴,山上的树木,路边村庄里的住户,女孩心中的白马王子,重要桥梁的砖块:你只是一个有自主思维的人类,一个过路的旅人,一个缓慢爬行的弱者!; 在属于你自己的终点,有你想要的一切事物,有你生命最后的站点。

 

脑袋开始隐隐作痛,为什么现在才发现呢?为什么以前没有发现呢?我的大脑告诉我,倒计时已经开始了,该是出发的时候了。作为后行者,你需要找到先行者,观察先行者,与先行者结伴同行,渐渐的他体力不支,你需要帮助他前进,最后——他离你而去,你恐惧愤怒的开始奔跑,然后-筋疲力尽-倒地而亡。随后,你回忆起了一生,然后,你笑了……

 

在这份力量的驱使下,我渐渐的开始准备了——为了我的出发!为了最后能够笑着!为了Rewrite The World。

—— by : Etby

php 验证码学习笔记

我们为什么需要验证码?

  • 需要判断正在执行操作的另一方,是真正的人/或者是非人(机器人/脚本/程序)。

生产验证码的基本步骤?

  1. 产生效验数据
  2. 产生干扰数据
  3. 生成图片
  4. 让用户看到图片
  5. 验证真实性

PHP做验证码主要用GD库来实现。

 

GD

  • resource imagecreatetruecolor(int $width,int $height);
  • 创建一个图片 返回一个图像标示符
  • imagecolorallocate (resource $image, 255, 255, 255);
  • 分配颜色  输入资源标示符+RGB颜色  返回一个标示符
  • // 如果想要显示透明度 可以用 imagecolorallocatealpha() 函数;
  • bool imagefill ( resource $image, int $x, int $y, int $color);
  • 区域填充 在image资源上,开始坐标为x,y 填充 color
  • bool imagesetpixel ( resource $image, int x,int y, int $color);
  • 在image资源上 在x,y坐标产生一个像素的color颜色的点
  • bool imageline ( resourcce $image, int $x1, int $y1, int $x2, int $y2, int $color);
  • 在image资源上,从 x1,y1画到 x2,y2,产生一条颜色color的线段
  • bool imagestring ( resource $image, int $fontsize, int $x,int $y, string $string, int $color );
  • 在image资源上 ,从 x,y开始花上字符串string,并且颜色是color,字体大小是fontsize

其他需要掌握的函数

  •  string substr( string $string , int $start [, int $length ] );
  • 返回 字符串。 从源字符串string上,从start开始 到长度为length处截取 。
  • int rand ( int $min, int $max );
  • 返回min到max直接的随机数。

如果你还要验证的话

  • $_SESSION[]
  •  session 全局变量需要知道
  • bool session_start(void);
  • 创建新会话或者重用现有会话。
  • $_REQUEST[]
  • request 全局变量需要了解

等等 你需要了解更多,请查看 php手册 ,边学习边看手册是一个不错的方法。

最后, 是练习的代码:

<?php
session_start();
// create image
$image = imagecreatetruecolor(100, 30);
// color image
$bgcolor = imagecolorallocate($image, 255, 255, 255);
// put color
imagefill($image, 0, 0, $bgcolor);
// create pixel
for ($i=0; $i < 200; $i++) { 
	$x=rand(0,200);
	$y=rand(0,30);
	$pixcol = imagecolorallocate($image, rand(1,200), rand(1,200), rand(1,200));
	imagesetpixel($image, $x, $y, $pixcol);
}

// create  line 
for ($i=0; $i < 4; $i++) { 
	$linecolor = imagecolorallocate($image, rand(100,200), rand(100,200), rand(100,200));
	imageline($image, rand(0,50), rand(0,30), rand(0,100), rand(0,30), $linecolor);
}

// create unique rand int
for ($i=0; $i < 4; $i++) { 
	$num = rand(0,9);
	$numcolor = imagecolorallocate($image, rand(0,150), rand(0,150), rand(0,150));
	$x = ($i+1)*20;
	$y = rand(0,15);
	imagestring($image, 6, $x, $y, $num, $numcolor);
}

// create unique sting 
$yzmyz = '';
for ($i=0; $i < 4; $i++) { 
	$strcol = imagecolorallocate($image, rand(0,150), rand(0,150), rand(0,150));
	$data='abcdefghijkmnpqrstuvwxy123456789';
	$str = substr($data, rand(0,strlen($data)-1),1);
	$yzmyz .= $str;
	imagestring($image, 6, ($i+1)*20, rand(0,15), $str, $strcol);
}



$_SESSION['yzmyz'] = $yzmyz;


header('Content-type: image/png');

imagepng($image);

// drop image 
imagedestroy($image);
?>