<<PHP数据结构与算法>> 之个位,十位,百位组合运算

<?php
/**
 * @author Jiania J Hung +86 13520000517
 * @email jiania@php.net < jiania@php.net>
 * @see <<PHP算法与数据结构>>,清华大学出版社出版
 * 题目:
 * 个位,十位,百位由0~9任意数组成,但三者之间的数字不能相同,统计共有多少组合并打印出所有的组合!
 */
//初始化总条数
$count=0;
//程序进入条件循环,分别取出个位,十位,百位的所有组合数字
for($i=0;$i<=9;$i++)
for($j=0;$j<=9;$j++)
for($k=0;$k<=9;$k++)
{
 //过滤掉组合数据中的重复数据,个位,十位,百位不能相同!
 
 if($i !=$k && $j!=$i && $j!=$k)
 {
  //组合个位,十位,百位
  $data=$i.$j.$k;
  //打印出所有组合
  echo $data."/n/r";
  //统计条数自增
  $count ++;
  
  
 }
}
//打印统计总数
echo "总共有".$count."个";
 
?>
&lt;think&gt;好的,用户现在要求不要使用 `&gt;` `&lt;`,也就是不要使用HTML转义符号。我需要先回顾之前的对话,看看用户之前遇到了什么问题。 用户之前提供的SQL代码中使用了 `&gt;` `&lt;`,这可能是因为他们在某些环境中直接复制了带有HTML转义的代码,导致Oracle报错。我之前已经修正了这个问题,将符号替换为正确的 `&gt;` `&lt;`。现在用户再次强调不要使用这些转义符号,可能是希望确保代码在直接运行时不会出现类似问题。 接下来,我需要检查当前的SQL代码是否已经符合用户的要求。之前的回复中已经将符号替换为正确的比较运算符,所以现在的代码应该是正确的。但用户可能担心在复制过程中再次出现转义问题,或者希望代码更清晰。 此外,用户可能是在不同的环境中运行SQL,比如某些工具或平台可能会自动转义符号,导致错误。因此,我需要确保提供的代码完全使用正确的符号,并且没有潜在的转义问题。 另外,用户可能希望了解为什么之前的代码会出错,以及如何避免这种情况。需要解释HTML转义符号在SQL中的问题,以及如何正确使用比较运算符。 同时,用户可能还有其他潜在的需求,比如希望代码更简洁,或者需要处理其他边界情况,比如跨年问题。需要确保代码在这些情况下也能正常工作,并在相关问题中提及。 最后,根据用户的要求,需要在回答末尾添加3-5个相关问题,确保覆盖可能的疑问点,比如封装为函数、处理跨年、显示月份名称等。&lt;/think&gt;在 Oracle SQL 中,直接使用 `&gt;` `&lt;` 符号即可,无需转义。以下是修正后的代码: ```sql SELECT month FROM ( SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YEAR'), LEVEL - 1), 'MM') AS month FROM DUAL CONNECT BY LEVEL &lt;= 12 ) WHERE -- 若当前月 &gt; 7月,显示1-7月;否则显示1到当前月之前的月份 (TO_NUMBER(TO_CHAR(SYSDATE, 'MM')) &gt; 7 AND TO_NUMBER(month) &lt;= 7) OR (TO_NUMBER(TO_CHAR(SYSDATE, 'MM')) &lt;= 7 AND TO_NUMBER(month) &lt; TO_NUMBER(TO_CHAR(SYSDATE, 'MM'))) ORDER BY month; ``` ### 关键说明: 1. **符号修正**: 直接使用 `&gt;` `&lt;` 替代 `&gt;` `&lt;`,确保语法正确。 2. **逻辑验证**: - 当当前月 &gt; 7 时(如 8-12 月),筛选 1-7 月。 - 当当前月 ≤ 7 时(如 1-7 月),筛选 1 到当前月之前的月份(如当前月为 5 月,显示 1-4 月)。 --- ### 示例结果 - **当前月为 9 月**: 输出 `01, 02, 03, 04, 05, 06, 07`。 - **当前月为 5 月**: 输出 `01, 02, 03, 04`。 --- ### 常见问题排查 1. **符号转义问题**: 确保 SQL 工具或代码编辑器未自动转义 `&gt;` `&lt;`。 2. **月份格式**: `TO_CHAR(..., 'MM')` 返回两位字符串(如 `01`),需用 `TO_NUMBER` 转换为数值比较。 3. **跨年场景**: 若需处理跨年(如当前月为 1 月时显示前一年 12 月),需结合年份计算。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值