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<bits/stdc++.h>
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<bits/stdc++.h>
using namespace std;
int main( )
{
int x,a,sum;
cin >> x >> a;
sum = a;
for(int i=1;i<x;i++){
// cout << a << "&" << sum << "^";
a = a + pow(10,i);
// cout << a <<"*";
sum += a;
}
cout << sum;
return 0;
}
但是,这个代码无法通过所有的用例,只能通过一个用例
所以,继续分析遗漏点。
是因为,在测试用例的时候,a为1,所以恰巧可以通过,而如果a不为1,按照我上面写的代码,最高位始终为1,所以结果是错误的。要修改为正确答案,就需要在最高位乘以a,实现代码如下:
实现代码
#include<bits/stdc++.h>
using namespace std;
int main( )
{
int x,a,sum,b;
cin >> x >> a;
sum = a,b=a;
for(int i=1;i<x;i++){
// cout << a << "&" << sum << "^";
a = a + b*pow(10,i);
// cout << a <<"*";
sum += a;
}
cout << sum;
return 0;
}
需要注意的是,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<bits/stdc++.h>
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<bits/stdc++.h>
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;
}
明天继续吧。