程序设计入门-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

[php]
#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;
}

[/php]


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

[php]
#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);
}

[/php]

两道编程题练习

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

1
奇偶个数(5分)

题目内容:

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

输入格式:

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

输出格式:

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

输入样例:

9 3 4 2 5 7 -1

输出样例:

4 2

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


[php]
#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;
}
[/php]


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

[php]
#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;
}
[/php]

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

首先,感谢网易的公开课(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]
<?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);
?>
[/php]