使用C语言打印出一个菱形
使用C語言打印出一個菱形:
???? 記得還是上C語課的時候,自己使用過一個比較笨的方法寫過7行的實心菱形,但是今天一同學問我,讓我?guī)退麑戇@個程序時缺一時鍵不知到怎么寫。然后自己就把這個算法模擬了一辯,使用了三種方法實現(xiàn)了打印菱形。
代碼如下:
#include<iostream>
using namespace std;
void diomand(int r)??????? // 打印空心菱形
{
?? ?for (int x=0; x <= 2 * r; x++)
?? ?{
?? ??? ?for (int y=0; y <= 2 * r; y++)
?? ??? ?{
?? ??? ??? ?if (y==x+r||y==x-r||y==-x+r||y==-x+3*r)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("*");
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?printf(" ");
?? ??? ??? ?}
?? ??? ?}
?? ??? ?printf("\n");
?? ?}
}
// 方法一? 分步打印
void rhombus(int len)
{
?? ?int i, j, k;
//?? ?int m = len / 2+1;?? // 記錄前l(fā)en/2+1行;? ?
?// 打印出前l(fā)en/2+1行
?? ?for (i = 0; i <=len / 2 + 1; i++)
?? ?{
?? ??? ?// 光標移到每行開始輸出“ ”的位置
?? ??? ?for (j = 0; j < len / 2 + 1 - i; j++)
?? ??? ?{
?? ??? ??? ?cout<<" ";
?? ??? ?}
?? ??? ?// 開始輸出“*”
?? ??? ?for (k = 0; k < 2 * i + 1; k++)
?? ??? ?{
?? ??? ??? ?cout<<"*";
?? ??? ?}
?? ??? ?cout<<endl;
?? ?}
// 打印出后len/2-1行
?? ?for (i = len/2;i>=0; i--)
?? ?{
?? ??? ?// 光標移到每行開始輸出“ ”的位置
?? ??? ?for (j = 0; j <=len / 2 - i; j++)
?? ??? ?{
?? ??? ??? ?cout << " ";
?? ??? ?}
?? ??? ?// 開始輸出“*”
?? ??? ?for (k = 0; k < 2 * i + 1; k++)
?? ??? ?{
?? ??? ??? ?cout << "*";
?? ??? ?}
?? ??? ?cout << endl;
?? ?}
}
// 方法二:???? // 按條件輸出“*”和“ ”
void rhombus2(int len)
{
?? ?for (int i = 0; i <len; i++)
?? ?{
?? ??? ?for (int j = 0; j < len; j++)
?? ??? ?{
?? ??? ??? ?if (i + j <= len/2-1 || (j - i >= len/2+1 || i - j >= len/2+1) || i + j >=len+len/2)
?? ??? ??? ?{
?? ??? ??? ??? ?cout << " ";
?? ??? ??? ?}
?? ??? ??? ?else
?? ??? ??? ?{
?? ??? ??? ??? ?cout << "*";
?? ??? ??? ?}
?? ??? ?}
?? ??? ?cout << endl;
?? ?}
}
int main(void)
{
?? ?int r = 0;
?? ?int m = 0;
?? ?cin >> r;
?? ? diomand(r);??? // 打印出空心菱形
//?? ?rhombus(7);
?? ?rhombus1(r);??? // 分步打印實心菱形
?? ?cin >> m;
?? ?rhombus2(m);? // 按條件打印出實心菱形
?? ?return 0;
}
總結
以上是生活随笔為你收集整理的使用C语言打印出一个菱形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: day22 Java学习 IO流
- 下一篇: 利用airTest的图像实别技术测试We