COMP1521 2022T2 Q4 · MIPS数组
COMP1521 2022T2 Q4 · 10 marks · MIPS
知识点: MIPS数组(MASM-A) · 次: 循环/条件 · 难度: 中等
Topic: MIPS arrays · Source: https://cgi.cse.unsw.edu.au/~cs1521/26T1/resources/practice_exams.html
一句话 / Summary: 数组中最长严格递增连续子序列长度
You have been given 22t2final_q4.s ,
a MIPS program that currently reads 10 numbers
and then prints 42 .
Your task is to modify 22t2final_q4.s
so that it is equivalent to this C program:
// Reads 10 numbers into an array
// Prints the length of the longest sequence
// of strictly increasing numbers in the array.
#include <stdio.h>
int main ( void ) {
int i ;
int numbers [ 10 ] = { 0 };
i = 0 ;
while ( i < 10 ) {
scanf ( "%d" , & numbers [ i ]);
i ++ ;
}
int max_run = 1 ;
int current_run = 1 ;
i = 1 ;
while ( i < 10 ) {
if ( numbers [ i ] > numbers [ i - 1 ]) {
current_run ++ ;
} else {
current_run = 1 ;
}
if ( current_run > max_run ) {
max_run = current_run ;
}
i ++ ;
}
printf ( "%d \n " , max_run );
return 0 ;
}
The program 22t2final_q4.c returns the length
of the longest consecutive sequence of strictly
increasing numbers.
For example:
1521 mipsy 22t2final_q4.s
1
2
3
4
5
6
7
8
9
10
10
1521 mipsy 22t2final_q4.s
1
2
3
4
5
6
7
7
8
9
7
1521 mipsy 22t2final_q4.s
1
2
3
1
2
4
5
5
6
6
4
1521 mipsy 22t2final_q4.s
10
9
8
7
6
5
4
3
2
1
1
You can use make(1) to build the provided C code:
make 22t2final_q4
You can use 1521 mipsy to run your MIPS code:
1521 mipsy 22t2final_q4.s
Your program can assume that all integers will fit in a MIPS register.
You may define and call your own functions if you wish.
Your solution must be in MIPS only.
Your solution must not be in C , C++ , Python , or any other language.
No error checking is necessary or required.
🤖 Write MIPS (mipsy). Read exactly 10 integers; print the length of the longest run of strictly increasing consecutive values (minimum 1).
Verified on the sandbox AND cross-checked against an independent oracle (official examples included).
样例
1 2 3 4 5 6 7 8 9 10
10
10 9 8 7 6 5 4 3 2 1
1