西安天朗时代水疗:编程问题,最好使用C或VF,谢谢

来源:百度文库 编辑:高校问答 时间:2024/05/08 10:27:34
设:a,b,c分别为的百位、十位和个位数,若a的立方+b的立方+c的立方=x,则称x为水仙花数,编程求:100到999之间的全部水仙花数
任意给定十个数,编程:将这些数从小到大顺序输出

用VF编写如下
CLEAR &&清屏
FOR i=100 TO 999 &&开始从100到999循环
n1=MOD(i,10) && 个位数
n2=MOD(INT(i/10),10) &&十位数
n3=INT(i/100) &&百位数
IF n1^3+n2^3+n3^3=i &&判断是否相等,相等则打印
?n3,n2,n1,"=",i
ENDIF
ENDFOR

或如下:
CLEAR
FOR i=1 TO 9
FOR j=0 TO 9
FOR k=0 TO 9
IF i*100+j*10+k=i^3+j^3+k^3
?i,j,k,"=",i*100+j*10+k
ENDIF
ENDFOR
ENDFOR
ENDFOR

1.水仙花数 (C版)
#include <stdio.h>
void main()
{
int a,b,c;
int i,j,k;
for(i=1;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if((i*100+j*10+k)==(i*i*i+j*j*j+k*k*k))
printf("\n%d%d%d\n",i,j,k);
}

2. 排反序问题(VF版)
SET UDFPARMS TO REFERENCE &&值传递
DIME AAA(10)
AAA(1) = 23
AAA(2) = 3
AAA(3) = 43
AAA(4) = 3
AAA(5) = 43
AAA(6) = 3
AAA(7) = 43
AAA(8) = 3
AAA(9) = 43
AAA(10) = 43

=MySort(aaa,10) &&调用冒泡排序函数.
i=1
do while i<=10
?aaa(i) &&显示排完序后的数据.
i=i+1
enddo
RETURN

*冒泡排序函数.
*参数: pData: 传入数组, nCount:数组的大小.
function MySort
para pData, nCount
for i=1 to nCount
for j=nCount to i+1 step -1
*?j,i
if pData(j)<pData(j-1)
iTemp = pData[j-1]
pData(j-1) = pData[j]
pData(j) = iTemp
endif
endfor
endfor

上面的人好无聊啊,尽发些无聊的东西.
下面是用C语言编的.
#include <stdio.h>
void main()
{
int a,b,c,d,e;
for (a=100;a<=999;a++)
{
b=a/100;
c=a/10-b*10;
d=a-b*100-a*10;
e=b*b*b+c*c*c+d*d*d;
if (a==e)
{
printf("\n%d",a);
}
}
}
我们才学C语言的,还没教怎么编程,下面这个编不出,没学数组啊,不知道用basic编的行不行,反正算法一样啦.
10 CLS
20 DIM A(10) //定义数组A(n)
30 FOR I=1 TO 10
40 INPUT A(I) //获得这十个数
50 NXET I
60 FOT I=1 TO 9
70 FOR J=I+1 TO 10
80 IF A(I)<A(J) THEN SWAP A(I),A(J) //交换 A(I),A(J)
90 NEXT J
100 NEXT I
110 FOR I= 1 TO 10 //输出这十个数.
120 PRINT A(I)
130 NEXT I
140 END

#include <stdio.h>

void main()
{
int a,b,c;
int i,j,k;

for(i=0;i<10;i++)
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if((i*100+j*10+k)==(i*i*i+j*j*j+k*k*k))
printf("\n%d%d%d\n",i,j,k);

}

1231312