i,k,n:integer
begin
write('Input n:')
readln(n)
k:=1//k表示行数
for i:=1 to n*n do
begin
if i=(k-1)*(k-1)+1 then write('':n+1-k)//每行,在输出星号前,需要输出空位
write('*') //因为每次循环,只输出一个星号;所以,循环要执行n*n次
if i=k*k then begin writelnk:=k+1 end//每行输出完星号,需要换行;k需要加1,即行数加1
end
end.
一、预备知识
首先我们要先看清楚,题目的分数类型是“假分数”中的“带分数”,带分数的例子:、。
附带分数的加减法方法(摘自百度百科):异分母分数相加减,
先通分,即运用分数的基本性质将异分母分数转化为同分母分数,改变其分数单位而大小不变,
再按同分母分数相加减法去计算,最后要约分。
然后,我们来手动模拟一下分数运算,
+ =( 整数1+4) + ( 分子 5*9+7*7 )/ ( 分母 7*9 )= (整数 5) + ( 分子 94) / ( 分母 63)
= (整数 5 + 94 div 63 ) + ( 分子 94 mod 63) / ( 分母 63) = (整数 6) + ( 分子 31) / ( 分母 63)。
这个例子刚好两个分数相加后分子分母没有最大公约数,如果相加后分子分母有最大公约数,还要再约分一下
然后来看看这个程序吧。
二、
没有题号看得有点费劲哦。function gcd...
1、if r=0 then break//有点多此一举的语句,但感觉只能填这个了
{下面是oier经常用的gcd代码形式的伪代码,不知道会不会给你点启示}
func gcd(a,b)
if a mod b=0 then exit(b)
else exit(gcd(b, a mod b))
function lcm...
2、*b div gcd(a,b)//a和b的最小公倍数当然等于 a*b/a和b的最大公约数
主程序
{
下面几个空请自己模拟一下上面“预备知识”中例子就可以理解。
3和4是进行分数中分子通分的处理
5 还有它下面的那行语句 是 把假分数化为真分数(分子比分母小的分数)
}
3、(l div u)
4、(l div c[i])
5、l
三、声明
上面的所有内容除了注明了的之外都是本人(天蝎的猪)亲手打出来的,鉴于各种原因,不排除会有非智力的错误出现,欢迎指正~
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)