假期刷题打卡--Day3

一.C++刷题

1、MT1016宽度与对齐

输出455、-123、987654,宽度为5,分别左对齐和右对齐

格式

输入格式:

输出格式:

输出为整型,空格分隔。每个数的输出占一行

样例 1

输入:

输出:

455     455   
-123   -123  
987654 987654 
解决思路

使用c++中的setw()函数实现题目对宽度的要求,然后使用left和right控制对齐方式,最后输入题目中所给出的数字。

尝试实现过程

参考网站:C++ setw() 函数 | 菜鸟教程 (runoob.com)

C++中setw() 函数用于设置字段的宽度

语法格式:setw(n)。其中,n 表示宽度,用数字表示。

setw() 函数只对紧接着的输出产生作用。

注意:当后面紧跟着的输出字段长度小于 n 的时候,在该字段前面用空格补齐,当输出字段长度大于 n 时,全部整体输出。

假期刷题打卡--Day3_第1张图片

注意:setw()函数默认向右对齐。

所以,依照上述的学习, 可以得到代码如下:

#include 

using namespace std;

int main( )
{
    cout << "455" << setw(8) << "455" << endl ;
    cout << "-123" << setw(7) << "-123" << endl ;
    cout << "987654" << setw(7) << "987654" << endl ;
    return 0;
}

 虽然上面这串代码可以在码题集通过,但是这串代码是通过预期输出慢慢尝试出来的,所以并不是正确答案,所以,我就开始查询别人的思路了。

网上有位博主的思路是使用setw()函数限制字段的宽度,然后使用left和right进行限制对齐的方式,最后输入题目要求的数字。依据这个思路,实现了题目要求:

代码实现
#include 

using namespace std;

int main( )
{
    // cout << "455" << setw(8) << "455" << endl ;
    // cout << "-123" << setw(7) << "-123" << endl ;
    // cout << "987654" << setw(7) << "987654" << endl ;
//将输出全部修改为整型
    cout << setw(5) << left << 455 << " " << setw(5) << right << 455 << endl ;
    cout << setw(5) << left << -123 << " " << setw(5) << right << -123 << endl ;
    cout << setw(5) << left << 987654 << " " << setw(5) << right << 987654 << endl ;
/*cout<

2、MT1017左右对齐

输出3.1415926、22.3456,宽度为14,精度为6,分别左对齐和右对齐。

格式

输入格式:

输出格式:

输出为实型,空格分隔。每个数的输出占一行。

样例 1

输入:

输出:

3.141593             3.141593  
22.345600           22.345600
解决思路

使用c++中的setw()函数实现题目对宽度的要求,使用left和right控制对齐方式,然后使用fixed进行精度的设置,最后输入题目中所给出的数字。

尝试实现过程

本题比上一道题多设置了一个精度的要求,所以首先需要学习可以控制精度的函数。

通过查找资料,学习了fixed和setprecision(),简单的概括它们的作用,

fixed用来设置浮点数的小数位为6位,fixed和setprecision()连用可以控制浮点数后小数点的位数。

例如:

a = 123

cout << fixed << a << endl ;

结果就为123.000000

a = 123

cout << fixed << setprecision(2) << a << endl ;

结果为123.00

依照上述内容,首先写出代码,如下:
 

#include 

using namespace std;

int main( )
{
    cout << setw(14) << left << fixed << "3.141593" << " " << setw(14) << right << fixed << "3.141593" << endl ;
    cout << setw(14) << left << fixed << "22.3456" << " " << setw(14) << right << fixed << "22.3456" << endl ; 
    return 0;
}

上述代码的思路看起来是正确的,但是却无法输出想要的结果(输出的结果为22.3456),这是因为我在输出的时候设置的是字符串,而不是浮点数,所以导致无法输出想要的结果,前面的代码正确,可能是刚好碰到了特殊情况。发现了这个问题后,将所有的输出进行修改。

#include 

using namespace std;

int main( )
{
 //  double b = 22.3456;
    cout << setw(14) << left << fixed << 3.141593 << " " << setw(14) << right << fixed << 3.141593 << endl ;
    cout << setw(14) << left << fixed << 22.3456 << " " << setw(14) << right << fixed << 22.3456 << endl ; 
//    cout << fixed << b << endl;
    return 0;
}

成功实现题目要求。

二.清零程序。编写程序将 20H 开始的 32 个单元清零。

参考程序

假期刷题打卡--Day3_第2张图片

尝试实现代码
;编写程序将 20H 开始的 32 个单元清零

START:
	MOV R0,#20H
	MOV R2,#32
	
	;MOV 20H,#0  首先给单元赋值,再验证是否成功置零
	;MOV 21H,#1
	;MOV 22H,#2
	;MOV 23H,#3
	;MOV 24H,#4
	;MOV 25H,#5
	
LOOP:
	MOV @R0,#0
	INC R0
	DJNZ R2,LOOP

END
	

成功实现清零。

明天继续吧。

你可能感兴趣的:(假期打卡学习,开发语言,c++,c语言,汇编)