c++菱形输出问题 请问怎么解决呢?

如题所述

先按照数学几何形式去理解,坐标系原点为菱形图案的中心位置,行为纵轴,列为横轴。

每个字符可以认定为这个坐标系上的一个点,那么一个点的横纵坐标的绝对值之和若是小于边长的,则对应于上图中需要打印字符的地方。否则,对应于打印空格的地方。

如此理解,代码就好写多了

#include <stdio.h>
#define ABS(x) ((x)<0?0-(x):(x))
void main()  
{    
    char ch = '\0';
    int len = 0;
    int i = 0, j = 0;
    scanf("%c%*[ \t\r\n]%d%*[ \t\r]", &ch, &len);

    while(ch != 'q')
    {
        for(i = 1 - len; i <= len - 1; ++i)
        {
            for(j = 1 - len; j <= len - 1; ++j)
            {
                if(ABS(i) + ABS(j) < len)
                    printf("%c", ch);
                else
                    printf(" ");
            }
            printf("\n");
        }
        
        scanf("%*[ \t\r\n]%c%*[ \t\n\r]%d%*[ \t\r]", &ch, &len);
    }
}

温馨提示:内容为网友见解,仅供参考
无其他回答

c++打印出如下图案(菱形)
printf("\\n"); } return 0;}结果如下:

c++,输入一个整数,输出一个由-和*组成的菱形图案。
include "math.h" \/\/由于用到abs函数(取绝对值),如果自己实现该函数可不加此行。int main(){ int i=0;int j=0;int n=9; \/\/改变这个n值可以改变菱形的大小,奇数有效 for(i=0;i<n;i++){ for(j=0;j<abs(n\/2-i);j++){ printf("-");} for(j=0;j<n-abs(n\/2-...

c++输出菱形
main(){int i,j,k;for(i=0;i<=3;i++) { for(j=0;j<=2-i;j++) printf(" "); for(k=0;k<=2*i;k++) printf("*"); printf("\\n"); }for(i=0;i<=2;i++) { for(j=0;j<=i;j++) printf(" "); for(k=0;k<=4-2*i;k++) printf("*");printf("\\...

c语言的数字菱形问题,10以上的不能对整齐,能不能帮忙修改下顺便指点下怎...
第一步:去掉所有printf("%3d ",m); 中d后面的空格;第二步:把所有printf("%d ",m); 改成printf("%3d",m); ,其中d后面不要空格;第三部:把printf(" "); 中引号内的空格弄成三个空格。为什么这么改?第一步:%3d或者%d后面有空格,表示输出的数字后面都是有空格的,这...

C++输出字母菱形
i)) { putchar('A'+n-abs(j)-abs(i)); } else { putchar(' '); } } putchar('\\n'); } return 0;}

c++编程打出空心字母菱形(上下对称) 例如:输入 B(首字母) 5(表示有5...
include<stdio.h>int main(){int i,j,k,line,m;printf("请输入行数:");scanf("%d",&line);m=(line+1)\/2;for(i=1;i<=m;i++){for(k=0;k<m-i;k++){printf(" ");}printf("*");if(i==1){printf("\\n");continue;}for(j=0;j<2*i-3;j++){printf(" ");}printf(...

怎么用c++输出下面菱形星号?
因为不知道你是要输出三角形的星号(根据图形),还是要输出菱形的星号(根据文字),所以两个C++程序我都编写出来给你.按照给出的图形编写的C++程序如下 include <iostream>using namespace std;int main(){ int i,j,N=4; for(i=1;i<=N;i++){ for(j=1;j<=N-i;j++){ cout << " "...

怎么用C++输出一个菱形
这样就行了吧?:include <stdio.h> void main(){ int i,j;for(i=1;i<=4;i++){ for(j=i;j<=4;j++)printf(" ");for(j=1;j<=i*2-1;j++)printf("* ");printf("\\n");} for(i=3;i>=1;i--){ for(j=i-1;j<=3;j++)printf(" ");for(j=1;j<=i*2-1;...

C或C++语言打印一个空心的菱形?
方法一:循环输出n行,每行分5个部分。分别是:左边的空格,字符1,中间的空格,字符2,右边的空格。循环控制空格输出个数,实现打印效果。方法二:根据行数,定义一个字符串表示一行最大宽度(动态申请)。定义2指针,初始指向字符串中间位置。循环,两指针先往两边移动,到头就往回移动。每次循环,指针...

怎么用C++输出一个菱形
int main(){ int i,max,k,x;cout<<"请输入最多*的个数:";cin>>max;\/\/输入的数控制菱形的大小 cout<<endl;for(i=max;i>=0;i--){ for(k=i;k>=0;k--)\/\/k循环控制每行前面的空格 cout<<" ";for(x=i;x<=max-1;x++)\/\/x循环控制每行*和空格的个数 { cout<<"*";cout...

相似回答