输出菱形图案c语言
‘壹’ c语言打印菱形详细讲解
/*下面的程序是菱形打印的【终结者】,
改变下设置,就基本可以满足所有菱形打印的题目。
程序主体 for 语句只有9行,简单而强大
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 这个小函数用来输出 repeatTimes 个字符 c
void printChar(char c,int repeatTimes)
{
int i;
for(i=0;i<repeatTimes;i++)
printf("%c",c);
}
/*
特别的函数,获取当前要打印的下一个菱形图案
height : 菱形的高
shapeVariantStep : 变化的步数
baseShape : 菱形的基本图案
row : 当前打印的菱形图案的行坐标。
col : 当前打印的菱形图案的列坐标。
*/
char _buffer_[2]={0};
char* getShape(int height,int shapeVariantStep,char baseShape[],int row,int col)
{
int first = baseShape[0],last = first +(height-1)/2*shapeVariantStep;
if(shapeVariantStep==0 || strlen(baseShape)!=1)
return baseShape;
else
{
if( first>='0'&&first<='9'&&last<='9' ||
first>='a'&&first<='z'&&last<='z' ||
first>='A'&&first<='Z'&&last<='Z'
)
{
_buffer_[0] = first + ((height-2*abs(row)-1)/2 - abs(col))*shapeVariantStep;
_buffer_[1] = '\0';
return _buffer_;
}
else
{
return baseShape;
}
}
}
int main(int argc, char *argv[])
{
// 菱形的图案
char shape[]="*";
// 菱形图案间的空白图案
char space=' ';
// 每个图案之间的最小间隔(以一个字符为单位,不足用空白图案填充)
int interval=5;
// 菱形的高(要求是奇数)
int height=7;
// 菱形是否空心(只有边上的图案)。是:1,否 0
int isHollow=0;
/* 特别的参数:设定菱形的图案是变化。
只有指定 shape 为 :
"0","1",...,"9",
或者 "a","b",...,"z",
或者 "A","B",...,"Z" 其中之一,
并且要保证从指定图形开始,后面至少还有连续的:
(height-1)/2*shapevariantStep
个可选的图形,菱形的图形才会是可变的。
*/
int shapeVariantStep = 0;
int i,j,k,n;
interval = interval < strlen(shape)?strlen(shape):interval;
for(i=-(height-1)/2;i<=(height-1)/2;i++)
{
// 用来输出每行前的空白
printChar(space,abs(i)*interval);
// 这个 for(j) 语句用来输出每行的菱形图案
for(j=-(height-2*abs(i)-1)/2;j<=(height-2*abs(i)-1)/2;j++)
{
// 如果是非空心,输出所有图案;否则只输出两端的图案。
if(!isHollow || (isHollow && (j==0 || j==height-2*abs(i)-1)))
{
n=printf("%s",getShape(height,shapeVariantStep,shape,i,j));
// 补齐为到宽度为 interval
printChar(space,interval-n);
}
// 对于空心的菱形,在本应该输出图案的地方,输出空白。
else
{
printChar(space,interval);
}
}
// 这个 for(j) 语句用来输出每行后的空白
printChar(space,abs(i)*interval);
printf("\n");
}
return 0;
}
/*
运行结果:
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
shape[]="**";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
**
** ** **
** ** ** ** **
** ** ** ** ** ** **
** ** ** ** **
** ** **
**
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=0;
shapevariantStep = 0
...............*...................
..........*....*....*..............
.....*....*....*....*....*.........
*....*....*....*....*....*....*....
.....*....*....*....*....*.........
..........*....*....*..............
...............*...................
shape[]="*";
space[]=" ";
interval=0;
height=7;
isHollow=0;
shapevariantStep = 0
*
***
*****
*******
*****
***
*
shape[]="*";
space[]=" ";
interval=5;
height=11;
isHollow=0;
shapevariantStep = 0
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
shape[]="*";
space[]=" ";
interval=5;
height=7;
isHollow=1;
shapevariantStep = 0
*
* *
* *
* *
* *
* *
*
shape[]="A";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
A
A B A
A B C B A
A B C D C B A
A B C D E D C B A
A B C D E F E D C B A
A B C D E F G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G H I H G F E D C B A
A B C D E F G H G F E D C B A
A B C D E F G F E D C B A
A B C D E F E D C B A
A B C D E D C B A
A B C D C B A
A B C B A
A B A
A
shape[]="a";
space[]=" ";
interval=5;
height=17;
isHollow=0;
shapevariantStep = 1
a
a b a
a b c b a
a b c d c b a
a b c d e d c b a
a b c d e f e d c b a
a b c d e f g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g h i h g f e d c b a
a b c d e f g h g f e d c b a
a b c d e f g f e d c b a
a b c d e f e d c b a
a b c d e d c b a
a b c d c b a
a b c b a
a b a
a
shape[]="1";
space[]=" ";
interval=5;
height=9;
isHollow=0;
shapevariantStep = 2
1
1 3 1
1 3 5 3 1
1 3 5 7 5 3 1
1 3 5 7 9 7 5 3 1
1 3 5 7 5 3 1
1 3 5 3 1
1 3 1
1
*/
‘贰’ 用C语言编写一个程序输出菱形图案
#include<stdio.h>
intmain(void)
{
inti,j,k,n;
printf("n=");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n+1-i;j++)
printf("");
for(k=1;k<=2*i-1;k++)
printf("%c",64+i);
printf(" ");
}
for(i=1;i<=n-1;i++)
{
for(j=1;j<=i+1;j++)
printf("");
for(k=1;k<=2*(n-i)-1;k++)
printf("%c",65+n-i-1);
printf(" ");
}
return0;
}
‘叁’ C语言基础题,输出一个菱形图!
#include <stdio.h>
int main()
{
char diamond[][5]={{' ',' ','*'},{' ','*',' ','*'},{'*',' ',' ',' ','*'},{' ','*',' ','*'},{' ',' ','*'}};//char diamond[5][5]
int i,j;
for(i=0;i<5;i++)//5次循环
{
for(j=0;j<5;j++)//5次循环
printf("%c",diamond[i][j]);//因为是二重循环,此语句执行25次,j增加5次i增加1次
printf("\n");//菱形一共5行,每输出一行换行一次
}
return 0;
}
‘肆’ 如何用c语言编程题输出菱形图形
#include "stdio.h" void PrintDiamend(int n) { int i,j,k; if(n==0) n=1; for(i=1;i<=n;i++) { for(j=i;j<n;j++) printf(" "); for(k=1;k<i+1;k++) printf("*"); for(k=1;k<i;k++) printf("*"); printf("\n"); } for(i=1;i<n;i++) { for(j=0;j<i;j++) printf(" "); for(k=i;k<n;k++) printf("*"); for(k=i;k<n-1;k++) printf("*"); printf("\n"); } } int main() { PrintDiamend(4); return 0; }
‘伍’ c语言程序设计输出菱形图!!!!
此题解法,我将这个菱形放在了一个二维数组中,因为用二维数组可以界定X的边界,比较方便一点。循环输出的时候,特别注意循环跳出的条件,你画个二维数组,体会一下里面的数学关系,多上机改改代码,呵呵。要特别注意q的用途哦。
#include<stdio.h>
voidmain()
{
#defineN7//定义二维数组的行和列
inti,j;
chara[N][N];
intq=N/2;//找到数组的中间列
chart,p;//定义输出字符,t代表X,p代表Y
printf("qingshuruX,Y: ");
scanf("%c,%c",&t,&p);//注意此处输入的时候,不要忘记“,”了哦
for(i=0;i<N;i++)//将二维数组的值全部先赋值为“空格”
for(j=0;j<N;j++)
a[i][j]='';
for(i=0;i<q;i++)//将菱形一分两半,这个是上半部分的输出,以中间列
{
//为开始,向两边扩展,为了输出X,注意i循环到q-1
a[i][q-i]=t;
a[i][q+i]=t;
for(j=(q-i+1);j<(q+i);j++)//以两边的X列为边界,输出Y
a[i][j]=p;
}
for(i=q;i<N;i++)//这个是下半部分的输出,i从q开始循环到最后
{
a[i][q-(N-1-i)]=t;//仍然是从中间列开始向两边扩散,输出X
a[i][q+(N-1-i)]=t;
for(j=(q-(N-1-i)+1);j<(q+(N-1-i));j++)//从X边界开始从做到右输出Y
a[i][j]=p;
}
for(i=0;i<N;i++)
{
{for(j=0;j<N;j++)
printf("%c",a[i][j]);}
printf(" ");
}
}
我这里输出的是标准的菱形,中间的Y的个数和你给的不一样,如果你想要你的那种结果,只需要在输出Y的时候,将循环的边界再减一个,就可以了,不过图形是会变形,不会是菱形了。
上机运行的时候,把这些汉字清理了吧,要不可能编译出问题,好运~
‘陆’ c语言输出菱形图案
‘柒’ c语言 输入一个字符串,输出菱形样式图案,每行包含各子串。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int n,i;
char s[100];
scanf("%s",s);
n=strlen(s);
for(i=0;i<n;++i)
s[n+i]=s[n-i-1];
s[n+i]='