有点问题  请大家帮忙
老是运行结果不对?????????????????
--分别用三种循环语句找出所有的水仙花数(所谓的水仙花数是指一个三位数,
--它的各位数字的立方和等于它本身,如153=1*1*1+5*5*5+3*3*3 )
DECLARE  
A INTEGER;
B INTEGER ;
C INTEGER ;  
BEGIN
FOR I IN 100..999 LOOP
A := I/100;
B := (I-A*100)/10;
C := I-A*100-B*10;
IF A*A*A+B*B*B+C*C*C=I
THEN DBMS_OUTPUT.put_line(I);
END IF;
--DBMS_OUTPUT.put_line(A);
--DBMS_OUTPUT.put_line(B);
--DBMS_OUTPUT.put_line(C);
END LOOP;
END;
------解决方案--------------------DECLARE
 A INTEGER;
 B INTEGER ;
 C INTEGER ;
BEGIN
 FOR I IN 100..999
 LOOP
   A                     := I /100;
   B                     := (I-A*100)/10;
   C                     := I -A*100-B*10;
   IF (A*A*A+B*B*B+C*C*C=I) THEN
     DBMS_OUTPUT.put_line(I);
   END IF;
   --DBMS_OUTPUT.put_line(A);
   --DBMS_OUTPUT.put_line(B);
   --DBMS_OUTPUT.put_line(C);
 END LOOP;
END;
--结果
963
999
------解决方案----------------------楼主的截断错了吧
DECLARE
 A INTEGER;
 B INTEGER ;
 C INTEGER ;
BEGIN
 FOR I IN 100..999
 LOOP
   A                     := to_number(substr(i,1,1));
   B                     := to_number(substr(i,2,1));
   C                     := to_number(substr(i,3,1));
   IF (A*A*A+B*B*B+C*C*C=I) THEN
     DBMS_OUTPUT.put_line(I);
     DBMS_OUTPUT.put_line(A);
     DBMS_OUTPUT.put_line(B);
     DBMS_OUTPUT.put_line(C);
   END IF;  
 END LOOP;
END;
--结果
153
1
5
3
370
3
7
0
371
3
7
1
407
4
0
7
------解决方案--------------------需要把小数去掉的哦~
DECLARE 
A NUMBER(1);
B NUMBER(1);
C NUMBER(1);
BEGIN
FOR I IN 100..999 LOOP
A := TRUNC(I/100);
B := CASE WHEN (I-A*100)>9 THEN  TRUNC((I-A*100)/10) ELSE 0 END;
C := MOD(I,10);
IF POWER(A,3)+POWER(B,3)+POWER(C,3)=I
THEN DBMS_OUTPUT.PUT_LINE(I);
END IF;
--DBMS_OUTPUT.PUT_LINE(A);
--DBMS_OUTPUT.PUT_LINE(B);
--DBMS_OUTPUT.PUT_LINE(C);
END LOOP;
END;