2021PHP算法期末考试-复习试题
Posted 唥小雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021PHP算法期末考试-复习试题相关的知识,希望对你有一定的参考价值。
- 求1-500中能被3整除的数之和,还有统计多少个。
我的答案是 :167
$sum =0;
for($i =0;$i<=500;$i++){
if($i%3==0){
$sum++;
}
}
echo $sum;
- 求 s=1+2-3+4-5+6-7+8-9+10…-99+100
我的答案是 52
$sum = 1;
$flag =true;
for($i =2;$i <= 100; $i++){
if($flag){
$sum +=$i;
$flag =false;
}else{
$sum -=$i;
$flag =true;
}
}
echo $sum;
- 求s=20! s=1!+2!+3!+…+20!
我的答案是 2.4329020081766E+18
//求s=20! s=1!+2!+3!+…+20!
$sum =1;
for ($i =1;$i <= 20; $i++){
$sum *=$i;
}
echo $sum;
//阶乘的结果是 2.4329020081766E+18
- 求在所有四位数(1000-9999)中的含有5的数字是多少个?
我的答案是 3168
$sum =0;
$re =0;
for($i =1000;$i <=9999; $i++){
if(strpos($i,"5") !==false){
$sum++;
}else{
$re++;
// echo "没有";
}
}
echo $sum;
//结果是3168
- 求1000以内的回文数
答案是90个
$sum =0;
for($i =1000;$i<= 9999;$i++){
if( isPalindrome($i)){
echo $i;
echo "\\n";
$sum++;
}
}
echo $sum;
//答案是90个
function isPalindrome($x){
$len = strlen($x);
$str = strrev($x);
if($len > 0 && $str == $x){
return true;
}
return false;
}
- 求1000以内的水仙花
//水仙花
// 1000以内的水仙花数
for($i =100;$i<1000;$i++){
$a =intval($i%10);
$b =intval(($i/10)%10);
$c = intval($i /100);
if($i == $a*$a*$a+$b*$b*$b+$c*$c*$c){
print $i;
echo "\\n";
}
}
- 求s=1/(1+2)+1/(3+4)+1/(5+6)+…+1/(50+51)
1.9476758385739
$sum =0;
for ($i =1;$i <= 50;$i+=2){
$sum += (1/($i+($i+1)));
}
echo $sum;
- 求0-6中能组成的一个四位的整数之和。
100
101
102
103
…
for ($i =1;$i<=6;$i++){
for ($j=0;$j<=6;$j++){
for ($k=0;$k<=6;$k++){
echo ($i*100)+($j*10)+$k;
echo "\\n";
}
echo "\\n";
}
}
- 把任意输入一个学号转化为字母,0=a,1=b,2=c,3=d,4=e,5=f,6=g,7=h,8=i,9=j例如(2017328201====>cabhdcicab),只能用程序完成,不能使用手工。
$id =Array('a','b','c','d','e','f','g','h','i','j');
$handle = fopen('php://stdin','r'); //从控制台输入
$input= fgets($handle); //接受
$arr = str_split($input); //字符串转化为数组
for ($i=0;$i<10;$i++){
$indx =$arr[$i];
echo $id[$indx];
}
echo "\\n";
if($input){
echo $input;
}
fclose($handle);
- 输入如下图形,不能直接字符输出,要使用循环实现。
1
11
111
1111
11111
111111
1111111
11111111
111111111
for ($i =0;$i<10;$i++){
for ($j =0;$j<=$i;$j++){
echo 1;
echo " ";
}
echo "\\n";
}
11.输入如下图形,不能直接字符输出,要使用循环实现。
输出如下
1
11
111
1111
11111
111111
1111111
11111111
111111111
解题思路:第一个现控制好空格,第二个就是进行输出“1”
for($a=1;$a<=10;$a++){
for ($b=10;$b>=$a;$b--){
echo " ";
// echo " ";
}
for($c=1;$c<=$b;$c++){
echo "1"." ";
// echo "*"." ";
}
// echo "<br />";
echo "\\n";
}
12. 输入如下图形,不能直接字符输出,要使用循环实现。
1000000001 a(1,1) a(1,10)
0100000010 a(2,2) (2,9)
0010000100 a(3,3)
0001001000
0000110000
0000110000
0001001000
0010000100
0100000010
1000000001
//待解
- 输入如下图形,不能直接字符输出,要使用循环实现。
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999
for ($i =1;$i<10;$i++){
for ($b =1;$b<10;$b++){
echo $i." ";
}
echo "\\n";
}
- 输入如下图形,不能直接字符输出,要使用循环实现。
效果图
0000000000
0111111110
0100000010
0111111110
0100000010
0100000010
0111111110
0100000010
0111111110
0000000000
//待解
- 输入如下图形,不能直接字符输出,要使用循环实现。
效果图
效果图如下
//待解
- 生成国际象棋棋盘。
效果图
<!DOCTYPE html>
<html>
<head>
<title>国际象棋制作</title>
<style type="text/css">
table,tr{border-collapse: collapse;border:1px solid;}
td{width: 20px;height: 20px;}
.black{background: #000;}
</style>
</head>
<body>
<table>
<?php
for($row=10;$row>=1;$row--)
{
echo '<tr>';
for($column=10;$column >= 1; $column--)
{
if (($row + $column) % 2) {
echo '<td></td>';
} else {
echo '<td class="black"></td>';
}
}
echo '</tr>';
}
?>
</table>
</body>
</html>
- 模拟计算机的简单运行算功能,可以实现加减乘除效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>简单运算器</title>
</head>
<body>
<?php
if(!empty($_POST)){
$num1=$_POST['data1'];
$num2=$_POST['data2'];
$fuhao=$_POST['yunsuanfu'];
if($fuhao == '+'){
$jieguo = $num1+$num2;
}
else if ($fuhao == '-'){
$jieguo = $num1-$num2;
}
else if ($fuhao == '*'){
$jieguo = $num1*$num2;
}
else if ($fuhao == '/'){
$jieguo = $num1/$num2;
}
else if ($fuhao == '%'){
$jieguo = $num1%$num2;
}
}
else{
$jieguo="";
$num1="";
$num2="";
$fuhao="";
}
?>
<h1>我的运算器</h1>
<form action = "" method="post">
<input type ="text" name="data1" value="<?php echo $num1;?>" />
<select name ="yunsuanfu">
<option value="+" <?php if($fuhao=="+"){echo 'selected="selected"';}?> >+</option>
<option value="-" <?php if($fuhao=="-"){echo 'selected="selected"';}?> >-</option>
<option value="*" <?php if($fuhao=="*"){echo 'selected="selected"';}?> >*</option>
<option value="/" <?php if($fuhao=="/"){echo 'selected="selected"';}?> >/</option>
<option value="%" <?php if($fuhao=="%"){echo 'selected="selected"';}?> >%</option>
</select>
<input type="text" name="data2" value="<?php echo $num2;?>"/>
<input type ="submit" value="="/>
<input type="text" name="result" value="<?php echo $jieguo;?>"/>
</form>
</body>
</html>
19 .把你学号转化为16进制的数,在16进制的数中的属于(0-9)取出,从左到右重新排列组成新的一个十进制的数,例如(3D2A1)=(321)。再把这个数进行因式分解。
//待解
- 约瑟夫环的设计
//待解
- 水仙花数变种题目求在所有四位数(1000-9999)中的每一位的四次方之和相等,例如1634=1^4+ 6^4+ 3^4+ 4^4 有多少个?
答案是
634
8208
9474
for($i =1000;$i<9999;$i++){
$a =intval($i%10); //个位
$b =intval(($i/10)%10); //百位
$c = intval(($i /100)%10); //千位
$d = intval(($i/1000)%10);//
if ($i==pow($a,4)+pow($b,4)+pow($c,4)+pow($d,4)){
echo $i;
echo "\\n";
}
- 随机产生10个汕尾地区的小汽车的车牌号(例如:粤.N 2 O N D )]
粤.NqYek
粤.NYoNC
粤.NJpXy
粤.NiO1z
粤.NX8pW
粤.N1iqB
粤.NedEt
粤.NvT7n
粤.N8pHU
粤.NwfiF
function randstr($len=4) {
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
mt_srand((double)microtime()*1000000*getmypid());
$password='';
while(strlen($password)<$len)
$password.=substr($chars,(mt_rand()%strlen($chars)),1);
return $password;
}
for ($i =0;$i<10;$i++){
$num =randstr();
echo "粤.N".$num;
echo "\\n";
}
- 给你一个40斤的西瓜,给3个人分,有多少种分法?
结果是:741
$sum =0;
for ($i =1;$i<=40以上是关于2021PHP算法期末考试-复习试题的主要内容,如果未能解决你的问题,请参考以下文章