回 帖 发 新 帖 刷新版面

主题:[讨论]我是新学者,书上的练习不太会做,希望有谁能编出来,我分析一下,谢谢

我是新学者,书上的练习不太会做,希望有谁能编出来,我分析一下,谢谢!~

练  习

  1、输入一个正整数n,将n分解成质因数幂的乘积形式。
     例如:36=22*32
  2、输出如下图形。
           *        *        *
      ***      ***      ***
         *****    *****    *****
        *******  *******  *******
       ***************************



  3、编写一程序,验证角谷猜想。所谓的角谷猜想是:"对于任意大于1的自然数n,若n为奇数,则将n变为3*n+1,否则将n变为n的一半。经过若干次这样的变换,一定会使n变为1。"
  4.有一堆100多个的零件,若三个三个数,剩二个;若五个五个数,剩三个;若七个七个数,剩五个。请你编一个程序计算出这堆零件至少是多少个?

回复列表 (共3个回复)

沙发

第一题可以用循环的方法解决
如果这个数字不是素数就执行如下操作
然后判断素数的问题
不断分解用数组存下来
然后统计个数
如果这个数字是素数直接输出就可以了

第二题可以直接用writeln语句直接实现
如果问方法的话可以从行数与*号的个数以及空格个数等方面来考虑
我就不一一列举了

第三题用模拟法
按照他给你的方法去求
外面加一层循环
程序结构如下:
repeat 
  ……
  if n=1 then break;{注:break是指退出当前循环}
until false;
这样的话它会不断执行知道找到解为止

第四题也可以用模拟法
按照他给你的方法去求
比第三题多加一个计数器
每次加1再进行比较
程序结构如下
repeat 
  n:=n+1;
  if …… then break;{注:break是指退出当前循环}
until false;
如果符合条件就退出循环

板凳


bigchen第2题不应该直接输出.
2:
program sky(input,output);
var i,j,k,x,h,y,z,s,l,e,g,f,b:integer;
begin
z:=5;
for j:=z downto 1 do write(' ');
z:=z-2;
s:=1;
for k:=s to 9 do write('*');
s:=s+2;
y:=8;
for x:= y downto 1 do write (' ');
y:=y-2;
l:=1;
for h:=l to 9 do write ('*');
l:=l+2;
e:=8;
for g:=e downto 1 do write(' ');
e:=e-2;
f:=1;
for b:=f to 9  write('*');
f:=f+2;
writeln;
end;
end.

3 楼

谁都知道不直接输出
但结果如果是静态的
直接输出也没有错呀
比你找规律节省时间

我来回复

您尚未登录,请登录后再回复。点此登录或注册