当前位置:   article > 正文

【信息学奥赛】1004:字符三角形(C++)

字符三角形

目录

【题目描述】

【输入】

【输入样例】

 【输出样例】  

【PLAN  A】

 【解题思路】   

【源代码】

【PLAN  B】

【解题思路】

【源代码】

【重要!!!!!】


今天来让我们来继续分析信息学奥赛一本通的第九道题道题,也就是按照题目的要求给一个字符,形成三角形。(并且,看了我的文章的人只有少数人点了赞,如果你觉得我写的好,或对你有帮助的话,请点赞,并收藏。谢谢!)

【题目描述及其目的】

1004:字符三角形

时间限制: 1000 ms 内存限制: 66536 KB
提交数: 135300 通过数: 74606

【题目描述】

给定一个字符,用它构造一个底边长5个字符,高3个字符的等腰字符三角形。

【输入】

输入只有一行,包含一个字符。

【输入样例】

 【输出样例】  

【PLAN  A】

 【解题思路】   

这道题主要考查到了"char"也就是定义了字符,然后输入字符,在按照三角形的样子输出,即可。

【源代码】

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. char a;
  6. cin >> a;
  7. cout << " " << a << endl;
  8. cout << " " << a << a << a << endl;
  9. cout << a << a << a << a << a;
  10. return 0;
  11. }

【PLAN  B】

【解题思路】

这道题还有别的思路,我们可以想,他一共有三行,如果有三行那是不是就是“行数 = 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 ++) 最后输出,即可。

【源代码】

  1. #include<iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int i, j, k;
  6. char c;
  7. cin >> c;
  8. for(i = 0; i <= 2; i ++)
  9. {
  10. for(j = 2 - i;j >= 0;j --)
  11. {
  12. cout << " ";
  13. }
  14. for(k = 1;k <= 2 * i + 1;k ++)
  15. {
  16. cout<< c;
  17. }
  18. cout << endl;
  19. }
  20. return 0;
  21. }

【重要!!!!!】

拒绝白嫖,从你做起,我看谁不点赞,这次一定!!

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/645606
推荐阅读
相关标签
  

闽ICP备14008679号