假期刷题打卡--Day26

1、MT1212乘法表

请编写一个简单程序,输出九九乘法表。输入n,就输出乘法表到n的地方。

格式

输入格式:

输入整型

输出格式:

输出整型。形式如:1*1=1

样例 1

输入:

5

输出:

1*1=1  
2*1=2  2*2=4
3*1=3  3*2=6  3*3=9
4*1=4  4*2=8  4*3=12 4*4=16
5*1=5  5*2=10 5*3=15 5*4=20 5*5=25  
备注

乘式之间一个空格。乘法结果占两格,不足两位的左对齐。

分析过程

本题实现的是我们从小背的九九乘法表的表示,使用的是双重循环。唯一需要注意的是,本题中对于空格的要求是不同的,要注意备注中所说的,不然就算代码是能够输出乘法表的,也无法通过所有用例。

所以,就要按照备注将空格进行修改。

按照备注可得,不足两位的占2个空格,除此之外,乘法之间占用1个空格。

实现代码
#include 

using namespace std;

int main( )
{
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        for(int j=1;j<=i;j++){
            if(i*j>=10){
                printf("%d*%d=%d ",i,j,i*j);
            }else{
                printf("%d*%d=%d  ",i,j,i*j);
            }
            
        }printf("\n");
    }
    return 0;
}

2、MT1213  x个a

求a+aa+aaa+…+a…a(x个a),x和a由键盘输入。

格式

输入格式:

输入为整型,空格分隔

输出格式:

输出为整型

样例 1

输入:

3 1

输出:

123
分析过程

本来想的是,使用一个循环,循环结束条件为x,然后在这个循环中,改变a的值,求出sum。按照这个代码实现的代码如下:

#include 

using namespace std;

int main( )
{
    int x,a,sum;
    cin >> x >> a;
    sum = a;
    for(int i=1;i

但是,这个代码无法通过所有的用例,只能通过一个用例

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

所以,继续分析遗漏点。

是因为,在测试用例的时候,a为1,所以恰巧可以通过,而如果a不为1,按照我上面写的代码,最高位始终为1,所以结果是错误的。要修改为正确答案,就需要在最高位乘以a,实现代码如下:

实现代码
#include 

using namespace std;

int main( )
{
    int x,a,sum,b;
    cin >> x >> a;
    sum = a,b=a;
    for(int i=1;i

需要注意的是,a是随着i的增加而改变的,所以不能直接在高位乘以a,而是要在最初的时候,就把a保存在一个变量当中,在最高位乘以这个数即可。

3、MT1214上三角矩阵

输入3X3的整型矩阵A,输出对应的上三角矩阵。

格式

输入格式:

输入矩阵,元素在0到9之间,空格分隔。

输出格式:

输出矩阵,空格分隔。

样例 1

输入:

1 2 3 4 5 6 7 8 9

输出:

1 2 3  
0 5 6  
0 0 9
解决思路

法一:因为本题要求的矩阵是3*3的矩阵,是固定的,所以可以直接使用一维数组,找出上三角矩阵包含的几位,除了这几位,其余的都直接设置位0即可。

法二:使用二维数组,设置为a[i][j],当i>j时,输入0。然后输出矩阵即可。

实现代码

法一:一维矩阵解决

#include 

using namespace std;

int main( )
{
    int a[9]={0},count=0;
    for(int i=0;i<9;i++){//这里需要注意,数组位数为9位,所以应该是从0~8
        cin >> a[i];
        if(i==3||i==6||i==7){
            a[i]=0;
        }
    }
    
    for(int i=0;i<9;i++){
        // cout << a[i];
        count++;
        cout << a[i] << " ";
        if(count%3==0){
            cout << endl;
        }
    }
    return 0;
}

法二:二维矩阵解决

#include 

using namespace std;

int main( )
{
    int a[3][3]={0};
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            cin >> a[i][j];
            if(i>j) a[i][j]=0;
        }
    }
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            cout << a[i][j] << " ";
        }cout << endl;
    }
    return 0;
}

明天继续吧。

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