作业帮 > 综合 > 作业

用pascal编写程序 如果一个4位数等于它的每一位数字4次方之和,则称为玫瑰花数,求所有的玫瑰花数.

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/10 17:34:33
用pascal编写程序 如果一个4位数等于它的每一位数字4次方之和,则称为玫瑰花数,求所有的玫瑰花数.
用pascal编写程序
如果一个4位数等于它的每一位数字4次方之和,则称为玫瑰花数,求所有的玫瑰花数.
用pascal编写程序 如果一个4位数等于它的每一位数字4次方之和,则称为玫瑰花数,求所有的玫瑰花数.
程序:
var
  i,k,x:longint;
begin
  for i:=1000 to 9999 do//枚举所有的四位数,因为玫瑰花数一定是四位数
    begin
      k:=0;
      x:=i;
      while x>0 do
        begin
          k:=k+sqr(sqr(x mod 10));//这里可能太快了.这样子,设n表示目前x的各位,则n的四次方为n*n*n*n,而sqr为求平方数,所以sqr(sqr(n))=sqr(n*n)=n*n*n*m.将结果累加到k上比较
          x:=x div 10;//截去当前的个位

        end;//以上为求该数每一位数字4次方之和,扫描就是从个位到千位的顺序
      if k=i then writeln(i);//相等就输出
    end;
end.

输出应该是这样,不懂再追问

再问: 一、i,k,x分别代表什么? 二、不是要每一位的数字4次方之和嘛,为什么只算个位呢? 三、k:=0; x:=i; 是什么意思?为什么要这样赋值? 四、while x>0 do 是什么意思? (麻烦解答一下,答完后采纳。谢谢) 你很厉害,如果可以请帮我解答一下此题: 输入一个4位整数,将其十位和千位上的数字对调后输出。(输入:1234 输出:3214) 用pascal 编写程序
再答: 一、i表示当前正在判断的数 k表示它的每一位数字4次方之和 x表示正在处理的数经过若干次截取末尾后的数 二、其实并不是只算个位,细细分析,你会发现 while x>0 do begin write(x mod 10) x:=x div 10; end; 就是从右往左分别输出x的每一位!上机试试看 三、如果k不等于0,那么这时k就是上一次求值的值!再次求值之后就变成了两次求值结果的和!只有赋为0才能保证从0开始累加,结果正确。 x赋为i,因为i是循环变量,不能再次在循环内改变,不然就会发生错误!不信上机试试看 四、联系 二 即可,就是x是否被截完。 慢慢体会吧,直到有一天你会明白的 其实这道题目用字符串解决更加简单,就是读入一个字符串,然后把它的第三位先输出,然后输出第二位,然后输出第一位,最后输出第四位 var s:string; begin readln(s); writeln(s[3],s[2],s[1],s[4]);//s[i]表示字符串s的第i位,你可以把字符串看成是一个类型为字符的数组 end.
用pascal编写程序 如果一个4位数等于它的每一位数字4次方之和,则称为玫瑰花数,求所有的玫瑰花数. 如果一个四位数等于它的各数位上的数字的4次方的和,则称这个四位数为“玫瑰花数”,如 ,设计一个程序, 如果一个四位数等于它的各数位上的数字4次方的和,称这个四位数为玫瑰花数 。 如1634=14+64+34+44 设计一个 C语言:一个数如果恰好等于它的所有因子之和,这个数就称为“完数”.编写程序找出1000之内的所有完数 一个数如果恰好等于它的因子之和,这个数就称为“完数”.编写一程序找出1000以内的所有完数 27、写一个函数,判断某一个四位数是不是玫瑰花数(所谓玫瑰花数即 该四位数各位数字的四次方和恰好等于该 一个数如果恰好等于它的因子之和,这个数就称为”完数.编程序找出1000之内的所有完数 编写程序,求在四位数的奇数中,所有各位数字之和是25倍数的数的和. 一个完全数等于他的所有因数(不保含自身)之和,例如:28=1+2+4+7+14.编写程序,计算并输出3位数 急求用C#编写一个程序:求2-100中的完数(因子之和等于它本身的数称为完数,如6=1+2+3). 如果一个自然数各个数位之和与各位数字之积的和恰好等于这个自然数,我们称为幸运数,求所有幸运数的和 编写程序,求在四位数的奇数中,所有各位数字之和是25的倍数的数的和.我的错在哪里,看下面