1、MT1204字母三角
请编写一个简单程序,输入正整数n,输出n行F字三角
格式
输入格式:
输入整型
输出格式:
输出n行F字三角
样例 1
输入:
5
输出:
F FFF FFFFF FFFFFFF FFFFFFFFF
分析过程
使用双重循环,内层输出2*i-1(即1、3、5、7、9),然后在内层循环结束后,输出一个换行符。
实现代码
#include<bits/stdc++.h> using namespace std;int main( )
{int n,count=0;cin >> n;for(int i=1;i<=n;i++){for(int j=1;j<=(2*i-1);j++){cout << "F" ;}cout << "\n";}return 0;
}
这些题目真的太考验找规律的能力了。下面的这个题也是一样的。
2、MT1206金字塔
请编写一个简单程序,输入正整数n,输出n行W字金字塔
格式
输入格式:
输入整型
输出格式:
输出n行W字金字塔
样例 1
输入:
3
输出:
W WWW WWWWW
分析过程
以前学的时候,见过这个题目,但是却从来没有亲手分析过,也没有思考过,在这次看到题目的时候,第一反应是使用setw() 函数进行设置空格的宽度,然后使用一个函数输出W的个数,W的个数和前面的一道题的规律是相等的,是2*i-1,但是在本题要注意的是,此次调用的函数实在循环里面的,所以是将双重循环分开写了,所以在子函数中不需要再写双重循环了,只需要写上面一道题目的内层循环。
按照上述思路,写了如下的代码,成功通过所有用例。
实现代码
#include<bits/stdc++.h> using namespace std;void p(int a){// for(int i=1;i<=a;i++){for(int j=1;j<=(2*a-1);j++){cout << "W";}// }
}
int main( )
{int n;cin >> n;for(int i=1;i<=n;i++){if(n!=i){// cout << setw(5) << left << 455 << " " << setw(5) << right << 455 << endl ; 使用不熟练,对照看的cout <<setw(n-i) <<left<< " ";p(i);cout <<setw(n-i) << right <<" "<< endl ;}else{p(i);} }return 0;
}
今天看到这个题目的时候,觉得可以使用setw()函数,但是依然不确定使用的顺序,所以这里再记一下吧,虽然可能还是回望,但是慢慢使用,慢慢记忆吧~
cout << setw()函数 << left/right << 输出内容 (记忆方法:宽度方向内容)
使用自己的方法解决之后,就去评论区看了一下别人的思路:直接使用三个four循环解决,在输出空格的for循环中,循环的条件与setw()函数使用的条件是一样的。按照常见的思路,写出代码如下:
#include<bits/stdc++.h> using namespace std;int main(){int n;cin >> n;for(int i=1;i<=n;i++){for(int j=1;j<=n-i;j++){cout << " ";}for(int j=1;j<=2*i-1;j++){cout << "W";}cout << endl;}return 0;
}
3、MT1207倒金字塔
请编写一个简单程序,输入正整数n,输出n行W字金字塔。(第一行左边不空格)
格式
输入格式:
输入整型
输出格式:
输出n行W字倒金字塔
样例 1
输入:
5
输出:
W W W W W W W W W W W W W W W
解决思路
本题的解决思路和上面的题目思路相同,唯一不同的就是for循环外层循环,金字塔就按照顺序输出(i++),倒金字塔就是按照逆序输出(i--)。
同样这个题目我按照两种方法解决,写出的代码如下:
实现代码
法一:使用setw()函数解决:
#include<bits/stdc++.h> using namespace std;void p(int a){for(int i=1;i<=a;i++){cout << "W ";}
}
int main( )
{int n;cin >> n;for(int i=n;i>=1;i--){if(n!=i){cout << setw(n-i) << left << " ";p(i);cout << setw(n-i) << right << " " << endl;}else{p(i);cout << endl;}}return 0;
}
法二:使用三个for循环解决:
#include<bits/stdc++.h> using namespace std;int main(){int n;cin >> n;for(int i=n;i>=1;i--){for(int j=1;j<=n-i;j++){cout << " ";}for(int j=1;j<=i;j++){cout << "W ";}cout << endl;}return 0;
}
4、MT1208菱形
请编写一个简单程序,输入正整数n,输出n行W字菱形。
格式
输入格式:
输入整型
输出格式:
输出W字菱形
样例 1
输入:
5
输出:
W W W W W W W W W W W W W W W W W W W W W W W WW
分析过程
本题的第一种解决方法是将上面两个题结合起来,然后分别输出。
实现代码
#include<bits/stdc++.h> using namespace std;int main(){int n;cin >> n;for(int i=1;i<=n;i++){for(int j=1;j<=n-i;j++){cout << " ";}for(int j=1;j<=i;j++){cout << "W ";}cout << endl;}for(int i=n-1;i>=1;i--){for(int j=1;j<=n-i;j++){cout << " ";}for(int j=1;j<=i;j++){cout << "W ";}cout << endl;}return 0;
}
5、MT1211给定数字的乘法表
输出给定数字N的乘法表。
格式
输入格式:
输入为整型
输出格式:
输出为整型,空格分隔
样例 1
输入:
9
输出:
9 18 27 36 45 54 63 72 81
本题注意点
本题要求输出的是乘法表,可以对比九九乘法表,最大值应该是*9,而不是*n,即循环条件应该<=9,而不是<=n。
如果不注意这个点,就会出错:(错误的一个是<=n,正确的是<=9)
实现代码
#include<bits/stdc++.h> using namespace std;int main( )
{int n;cin >> n;for(int i=1;i<=9;i++){cout << i*n << " ";}return 0;
}
明天继续吧。