这是我写的试图解决这个问题的代码。 我的代码是endl;没有得到循环,似乎只输入任意数字的两颗星。
li $t1,1 #start row at 1
li $t2,1 #start col at 1
li $t3,0 #temp=0
outer:
bgt $t1,$t0,done #row < user input
addi $t1,$t1,1 #row++
inner:
bgt $t2,$t1,done #col<row
addi $t2,$t2,1 #col++
#print star
la $a0,Star
li $v0,4
syscall
addi $t3,$t3,1 #adds 1 to temp after every print
beq $t2,$t3,outer #if col = temp counter jump to outer
j inner #restart loop
#code to endl;
la $a0,endl
li $v0,4
syscall
j outer #restart loop
以下是预期输出的示例:
Please enter the edge length of the base of right triangle: 5
*
**
***
****
*****
答案 0 :(得分:0)
。数据
提示:.asciiz“请输入直角三角形底边的长度:”
ExitMsg:.asciiz“退出程序。”
明星:.asciiz“*”
newLine:.byte'\ n'
。文本
##您的主线程序将询问用户右三角形底边的长度。
输入:
li $ v0,4
la $ a0,提示
系统调用
app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email'] }));
app.get('/auth/facebook/callback',
passport.authenticate('facebook', { failureRedirect: '/auth/fail' }),
function(req, res) {
var responseHTML = '<html><head><title>Main</title></head><body></body><script>res = %value%; window.opener.postMessage(res, "*");window.close();</script></html>'
responseHTML = responseHTML.replace('%value%', JSON.stringify({
user: req.user
}));
res.status(200).send(responseHTML);
});
答案 1 :(得分:0)
您不需要在单个循环中使用多个分支语句。您的代码只打印两颗星的原因是您没有将内部循环的计数器重置为 1。因此它循环两次,然后退出循环。
这是我的代码,它完全符合您的要求:
.data
prompt: .asciiz "Please enter the edge length of the base of right
triangle: "
newLine: .asciiz "\n"
star: .asciiz "*"
.text
main:
li $v0, 4 # print the prompt
la $a0, prompt
syscall
li $v0,5 #take user input
syscall
move $s0, $v0 # move the input to $s0
li $t0, 0 # load 0 at t0
outerLoop:
beq $t0, $s0, end #(for i=0;i<=baseLength;i++)
#if t0=s0 branch to end
addi $t0, $t0, 1 # increment i
li $t1, 1 #load 1 at t1
jal changeLine #jump to changeLine
innerLoop:
bgt $t1, $t0, outerLoop #(for j=0;j<=i;j++)
# if t1=t0 branch to outerLoop
li $v0, 4 # print star
la $a0, star
syscall
addi $t1, $t1, 1 # increment j
j innerLoop # jump to innerLoop
changeLine:
li $v0, 4 # new line
la $a0, newLine
syscall
jr $ra # jump to after the call instruction
end:
li $v0, 10 # end of program
syscall