再请教3个php问题(我老是下标溢出)
题目是这样的:
1.编程从一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词,打印出最长的单词(我下面的代码老是溢出)
<body>
<form id="form1" name="form1" method="post" action="">
<table width="509" height="51" border="1" align="center">
<tr>
<td height="45">请输入字符串</td>
<td><input name="str" type="text" id="str" /></td>
<td><input type="submit" name="Submit" value="提交" /></td>
</tr>
</table>
<div align="center"><span class="STYLE1">注:输入字符串以空格分开 </span>
</div>
</form>
<?php
if(isset($_POST['Submit']))
{
echo "<center>";
$str=$_POST['str'];
$str1= explode(" ",$str);//转换成数组
$num=count($str1);
for($k=0;$k<$num;$k++)
{
$sum[$k]=array($str1[$k]);
}
for($i=0;$i<$num;$i++)
{
for($j=$i+1;$i<$num;$j++)
{
if(count($sum[$i])>count($sum[$j]))//下标越界
{
$temp=$sum[$i];
$sum[$i]=$sum[$i+1];
$sum[$i+1]=$temp;
}
}
}
echo "最长字符串为:".$temp."";
}
?>
</body>
再帮帮忙,看看这两道题怎么做,万分感谢!!:
2。从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张。 (输出面额最大值:比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8)。
3。编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。
1.编程从一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词,打印出最长的单词(我下面的代码老是溢出)
<body>
<form id="form1" name="form1" method="post" action="">
<table width="509" height="51" border="1" align="center">
<tr>
<td height="45">请输入字符串</td>
<td><input name="str" type="text" id="str" /></td>
<td><input type="submit" name="Submit" value="提交" /></td>
</tr>
</table>
<div align="center"><span class="STYLE1">注:输入字符串以空格分开 </span>
</div>
</form>
<?php
if(isset($_POST['Submit']))
{
echo "<center>";
$str=$_POST['str'];
$str1= explode(" ",$str);//转换成数组
$num=count($str1);
for($k=0;$k<$num;$k++)
{
$sum[$k]=array($str1[$k]);
}
for($i=0;$i<$num;$i++)
{
for($j=$i+1;$i<$num;$j++)
{
if(count($sum[$i])>count($sum[$j]))//下标越界
{
$temp=$sum[$i];
$sum[$i]=$sum[$i+1];
$sum[$i+1]=$temp;
}
}
}
echo "最长字符串为:".$temp."";
}
?>
</body>
再帮帮忙,看看这两道题怎么做,万分感谢!!:
2。从键盘输入一指定金额(以元为单位,如345.78),然后显示支付该金额的各种面额人民币数量,要求显示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少张。 (输出面额最大值:比如345.78=100*3+10*4+5*1+0.5*1+0.1*2+0.01*8)。
3。编程实现对键盘输入的英文名句子进行加密。用加密方法为,当内容为英文字母时其在26字母中的其后三个字母代替该字母,若为其它字符时不变。
作者: cpmwp 发布时间: 2011-05-31
if(count($sum[$i])>count($sum[$j]))//下标越界
------------------------------------------------
当$i到达了数组最后一个位置,$j = $i+1,那$sum[$j]不就越界了么
------------------------------------------------
当$i到达了数组最后一个位置,$j = $i+1,那$sum[$j]不就越界了么
作者: foolbirdflyfirst 发布时间: 2011-05-31
关键是怎么改呢!!初学者
作者: cpmwp 发布时间: 2011-05-31
你可以多多看看手册里的array_前缀的函数,会有很多收获
方法很多的。。
PHP code
方法很多的。。
PHP code
$array = 'csdn is a good place'; $words = explode(' ',$array); function longestWord( $a,$b) { $al = strlen( $a ); $bl = strlen( $b ); return $al > $bl ? -1 : ($al == $bl ? 0 : 1); } usort($words,'longestWord'); print_r( $words[0]);
作者: foolbirdflyfirst 发布时间: 2011-05-31
for($i=0;$i<$num-1;$i++)
{
for($j=$i+1;$j<$num;$j++)
{
{
for($j=$i+1;$j<$num;$j++)
{
作者: xuzuning 发布时间: 2011-05-31