How to write a script for the following?

5 次查看(过去 30 天)
1 x 8 + 1 = 9
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321
The script should iterate from 1 to 9 to produce the expressions on the left, then perform the specified operation to get the results on the right, and finally print exactly in the format above
Thank you!

采纳的回答

Stephen23
Stephen23 2017-11-4
>> for k=1:9, n=sscanf(sprintf('%d',1:k),'%d'); fprintf('%d x 8 + %d = %d\n',n,k,n*8+k); end
1 x 8 + 1 = 9
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321
>>
  5 个评论
Stephen23
Stephen23 2017-11-4
编辑:Stephen23 2017-11-4
@Zhuoying Lin: of course, there are always other ways of doing things. You could calculate n without any strings at all, which might even be more efficient:
n = sum((k:-1:1).*10.^(0:k-1));
e.g.
>> for k=1:9, n=sum((k:-1:1).*10.^(0:k-1)); fprintf('%d x 8 + %d = %d\n',n,k,n*8+k); end
1 x 8 + 1 = 9
12 x 8 + 2 = 98
123 x 8 + 3 = 987
1234 x 8 + 4 = 9876
12345 x 8 + 5 = 98765
123456 x 8 + 6 = 987654
1234567 x 8 + 7 = 9876543
12345678 x 8 + 8 = 98765432
123456789 x 8 + 9 = 987654321

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2017-11-4
for loop and use fprintf()

类别

Help CenterFile Exchange 中查找有关 Annotations 的更多信息

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by