赞
踩
目录
今天来让我们来继续分析信息学奥赛一本通的第九道题道题,也就是按照题目的要求给一个字符,形成三角形。(并且,看了我的文章的人只有少数人点了赞,如果你觉得我写的好,或对你有帮助的话,请点赞,并收藏。谢谢!)
【题目描述及其目的】
1004:字符三角形
时间限制: 1000 ms 内存限制: 66536 KB
提交数: 135300 通过数: 74606
给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。
输入只有一行,包含一个字符。
这道题主要考查到了"char"也就是定义了字符,然后输入字符,在按照三角形的样子输出,即可。
- #include<iostream>
-
- using namespace std;
-
- int main()
- {
-
- char a;
-
- cin >> a;
-
- cout << " " << a << endl;
-
- cout << " " << a << a << a << endl;
-
- cout << a << a << a << a << a;
-
- return 0;
-
- }
这道题还有别的思路,我们可以想,他一共有三行,如果有三行那是不是就是“行数 = 0;且 <= 2” 如果是的话,就可以用循环写for(i = 0; i <= 2; i ++)然后现在里面写cout << endl;这样是不是就达成三行了呢?那么,大城三行后,需要在这个for里继续编代码,首先我们需要的是空格,我们依旧用到循环,空格的循环用“j”表示。这个时候我们就找到了规律,我们先让”j“ = 2;因为第一行空的是2个,这个时候,肯定会有人问,为什么空格不是for(i = 1; i < 3; i ++)呢?因为"i"在空格的逻辑里也要用空格是第一行空两格,第二行空一格,第三行不空。而行数则是第一行是零,第二行是一,第三行是二,有细心的人可能会发现,用“j” - “i”不就是空的格数吗!没错,所以只需要for(j = 2 - i; j >= 0; j --)。接下来我们需要的是字符,字符的个数分别是1,3,5。这个时候我们又要找逻辑,而逻辑有根行数有关,0是第一行,1是字符的个数,我们套入公式 2 × 0 + 1 = 1,发现靠这个公式将行数变成了字符的个数,接着套公式 2 × 1 + 1 = 3,发现也对,2 × 2 + 1 = 5,十分正确,靠着这个公式我们推出正确的应该是for(k = 1;k <= 2 * i + 1;k ++) 最后输出,即可。
- #include<iostream>
-
- using namespace std;
-
- int main()
- {
-
- int i, j, k;
-
- char c;
-
- cin >> c;
-
- for(i = 0; i <= 2; i ++)
- {
-
- for(j = 2 - i;j >= 0;j --)
- {
-
- cout << " ";
-
- }
-
- for(k = 1;k <= 2 * i + 1;k ++)
- {
-
- cout<< c;
-
- }
-
- cout << endl;
-
- }
-
- return 0;
-
- }
-
拒绝白嫖,从你做起,我看谁不点赞,这次一定!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。