用c语言打印*写各种平面的图形,如正方形,菱形等!

供稿:hz-xin.com     日期:2025-01-12
用C语言输出如下图形(一个正方形,一个菱形,菱形最好具有通用性)???

#include
void diamond(int n);
void square(int n);
int main()
{
int i,j;
printf("输入菱形与正方形的边数,用空格分开:");
scanf("%d %d",&i,&j);
diamond(i);
square(j);
return 1;
}
void diamond(int n)
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=n-i;j>0;j--)
{
printf(" ");
}
for(j=0;j<i;j++)
printf("* ");
printf("
");
}
for(i=1;i<n;i++)
{
for(j=n-i;j<n;j++)
printf(" ");
for(j=n-i;j>0;j--)
{
printf("* ");
}
printf("
");
}
}
void square(int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("* ");
printf("
");
}
} 这个可以啊 哈哈 不懂的话加我 870662874

/*下面的程序是菱形打印的【终结者】,
改变下设置,就基本可以满足所有菱形打印的题目。
程序主体 for 语句只有9行,简单而强大
*/
#include
#include
#include

// 这个小函数用来输出 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("
");
}
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

*/

我这儿有一些关于图形输出的程序,前一段时间做的,都给你吧:

#include<stdio.h>//菱形
void main()
{
int a,b;
if(a<=4)
{for(a=1;a<=4;a++)
{for(b=1;b<=15-2*a;b++) printf(" ");
for(b=1;b<=2*a-1;b++) printf(" *");
printf("\n");
}
}
if(a>4&&a<=7)
{for(a=5;a<=7;a++)
{for(b=1;b<=2*a-1;b++) printf(" ");
for(b=1;b<=15-a*2;b++) printf(" *");
printf("\n");
}
}
}

#include<stdio.h>//三角形图案
void main()
{
int a=1,b;
for(;a<=5;a++)
{for(b=1;b<=20-a;b++) printf(" ");
for(b=1;b<=2*a-1;b++) printf("*");
printf("\n");
}
}

我已经给四个人回答过这类问题了...

这些都是考你循环语句啦.
注意看下这些图案的规律,你OK的

c语言打印数字金字塔
给,已经编译运行通过:include<conio.h> include<stdio.h> void main(){ int n;\/\/这个就是定义的你需要输出的行数 int i,j;printf("please input the n: ");scanf("%d",&n);\/\/输入需要输出的行数 for(i=0;i<n;i++){ for(j=0;j<2*(n-1-i);j++) printf(" ");for(j=0...

怎么用c语言计算圆周长和面积
代码如下:include<stdio.h> int main(){ int radius;float area,perimeter;radius=6;perimeter=2*3.14*radius;printf("圆的周长=%f英寸\\n",perimeter);area=3.14*radius*radius;printf("圆的面积=%f平方英寸\\n",area);return(0);} 2、c语言计算矩形的周长和面积 include<stdio.h> \/*长...

c语言编程:编程输出n行图形。(n值通过键盘输入)
include <stdio.h> main( ){ int i,j,k,n,m=0;printf("请输入需要打印的图形的行数:");scanf("%d",&n);for (i=1;i<=n;i++){ for (j=n;j>i;j--)printf(" ");for (k=0;k<2*i-1;k++){ m++;if (m>26)m=0;else printf("%c",96+m);} printf("\\n");...

c语言编程题:输入n值,输出如下图所示图形
楼主得意思应该不光是6排把 还有 没排6个 * #include <stdio.h> include <stdlib.h>int main(){ int n,a,b;scanf("%d",&n);for(b=n;b!=0; b--){ for(a=n;a!=0;a--){ if(a!=1)printf("*");else if(a=1) printf("*\\n");};};} 我试过了 没问题!

急急急C语言中怎么用*等符号输出一种图形 如心形
可以通过循环语句和预先定义的图形模板来实现自定义的图形。具体实现方法可以参考如下程序:include <stdio.h>#define WIDTH 9 \/\/ 宽也即列数#define HEIGHT 7 \/\/ 高也即行数#define CHAR "*" int Modal[HEIGHT][WIDTH]= \/\/ 定义形状的模板{{0,1,1,1,0,1,1,1,0},{1,0,0,0...

会跳动的心代码c语言
3、数据结构丰富 C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

c语言程序杨辉三角
我很久之前写过这个,但是当时用的是栈区数组固定长度,你改成动态数组即可。void main(){ int a[10] = { 1 };for (int i = 0; i < 10; i++) \/\/用循环打印第一行 { if (a[i] == 0){ printf("%4c",' ');} else printf("%4d", a[i]);} \/\/先输出第一行之后再进...

C语言空心菱形流程图?
include <stdio.h> void Lozenge0(int n,char ch) { \/\/ 空心菱形 int i,j; for(i = 0;i < n; ++i) { \/\/ 上半部分 for(j = 0;j <= n - i; ++j) printf(" "); \/\/ 输出每行前导空格 printf("%c",ch); for(j = 0; j < 2 * i - 1; ++j) ...

用c语言求圆的面积,怎么算?
用c语言求圆的面积编程如下:include <stdio.h> include <math.h> define PI 3.14 void main(){ float r;double c;double s;printf("请输入半径的值:");scanf("%f",&r);s=PI*r*r;printf("这个圆的面积是:%f\\n",s);

编写一个程序,以笛卡尔平面上一个点为坐标输入,打印出位于哪一个象限...
以下是一个用C语言编写的程序示例,根据输入的点的坐标判断其位于哪个象限并打印相应的消息:include <stdio.h> int main() { int x, y;printf("请输入点的x坐标:");scanf("%d", &x printf("请输入点的y坐标:");scanf("%d", &y);if (x > 0 && y > 0) { printf("该点位于...