当前位置:首页 » 编程语言 » 打印空心菱形c语言pta
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

打印空心菱形c语言pta

发布时间: 2022-12-23 10:37:39

A. C或C++语言打印一个空心的菱形

c语言编写,两种思路:

方法一:循环输出n行,每行分5个部分。

分别是:左边的空格,字符1,中间的空格,字符2,右边的空格。

循环控制空格输出个数,实现打印效果。

方法二:根据行数,定义一个字符串表示一行最大宽度(动态申请)。

定义2指针,初始指向字符串中间位置。

循环,两指针先往两边移动,到头就往回移动。

每次循环,指针指向的位置为符号,其余都是空格。并打印输出字符串。

下面是代码(两方法对应两函数):

#include <stdio.h>

#include <string.h>//该头文件只用于方法2

#include <malloc.h>//该头文件只用于方法2

#define CR '*'//用于填充的字符

int show1(int row);//方法1

int show2(int row);//正常打印菱形,异常返回-1

int main()

{

int row;

printf("请输入行数(奇数):"),scanf("%d",&row);

printf("方法一:通过字符遍历打印图形 ");

show1(row);

printf(" 方法二:通过指针移动打印图形 ");

show2(row);

return 1;

}

int show1(int row)//方法1

{

int i,j,len,lk=0,mk=0,rk=0,flag=1;//lk,mk,rk每行左边中间右边的空格数量

if(row%2==0)

{

printf("错误!行数必须为奇数!");

return -1;

}

len=1+(row/2)*2;

lk=rk=len/2,mk=0;

for(i=0;i<row;i++)//每行依次打印左边空格,符号,中间空格,符号,右边空格

{

for(j=0;j<lk;printf("%c",' '),j++);

printf("%c",CR);

for(j=0;j<mk;printf("%c",' '),j++);

if(mk>0)printf("%c",CR);

for(j=0;j<rk;printf("%c",' '),j++);

printf(" ");

if(lk==0)flag=0;

if(flag)

{

lk--,rk--;

if(mk>=1)mk+=2;

else mk++;

}

if(!flag)

{

lk++,rk++;

if(mk>2)mk-=2;

else mk--;

}

}

return 1;

}

int show2(int row)//方法2

{

int len,flag=1;//标识,flag=1两指针往两边移动。flag=0向中间汇合

char *rStr=NULL,*p1=NULL,*p2=NULL;

if(row%2==0)

{

printf("错误!行数必须为奇数!");

return -1;

}

len=1+(row/2)*2;

rStr=(char *)malloc(sizeof(char)*(len+1));//根据行数申请最大行字符串地址

if(!rStr)return -1;

p1=p2=&rStr[len/2];

while(p1<=p2)

{

memset(rStr,' ',len);//填充空格

rStr[len]=0;

*p1=*p2=CR;

printf("%s ",rStr);

if(p1==rStr) flag=0;//指针移动到两头,反向移动

if(flag)p1--,p2++;

if(!flag)p1++,p2--;

}

free(rStr);

return 1;

}

B. 如何用C语言打印空心菱形(要求for循环)

题目错了吧,如果你输入偶数就不会有◇啊,只有这个题目
由键盘输入正数n,要求输出2*n+1行的菱形图案,要求菱形左边紧靠屏幕左边
#include "stdio.h"
main()
{ int i,j;
int n;

scanf("%d",&n);
for(i=0;i<=n+1;i++)
{ for(j=n-i;j>=0;j--)
printf(" ");
for(j=0;j<i;j++)
printf("* ");
printf("\n"); }
for(i=0;i<n;i++)
{ for(j=0;j<i+1;j++)
printf(" ");
for(j=n-i;j>0;j--)
printf("* ");
printf("\n"); }
getch();
}

C. 怎么用C语言打印一个空心的菱形

先拿一张格子纸,把你的空心棱形画在纸上,画到满意为止,然后以左上角为零点,输入电脑,有图形的画图形,没有图形的画空字符,然后输出就行了……

D. 如何用C语言打印空心菱形(要求for循环)

题目错了吧,如果你输入偶数就不会有◇啊,只有这个题目x0dx0a由键盘输入正数n,要求输出2*n+1行的菱形图案,要求菱形左边紧靠屏幕左边x0dx0a#include "stdio.h"x0dx0amain()x0dx0a{ int i,j; x0dx0aint n;x0dx0a x0dx0ascanf("%d",&n); x0dx0a for(i=0;i<=n+1;i++) x0dx0a { for(j=n-i;j>=0;j--) x0dx0a printf(" "); x0dx0a for(j=0;j0;j--) x0dx0a printf("* "); x0dx0a printf("\n"); }x0dx0a getch();x0dx0a}

E. 如何用C语言打印菱形

#include
void
main()
{
int
n,m,i,j,s1,s2,s3,s4;
printf("请输入外菱形与内菱形高度\n");
printf("n=");
scanf("%d",&n);
printf("m=");
scanf("%d",&m);
if(((n%2==0||m%2==0)&&n!=0&&m!=0)||m>=n||n<=0||m<0)
return;
if(n!=0&&m==0)
{m=n/2+1;
for(i=1;i<=m;i++)
{
for(j=1;j<=m-i;j++)
printf("
");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
m--;
for(i=1;i<=m;i++)
{
for(j=1;j<=i;j++)
printf("
");
for(j=1;j<=2*(m-i)+1;j++)
printf("*");
printf("\n");
}
}
else
{s1=(n-m)/2;
s2=(m+1)/2;
s3=(m-1)/2;
for(i=1;i<=s1;i++)
{
for(j=1;j<=(n+1)/2-i;j++)
printf("
");
for(j=1;j<=i*2-1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=s2;i++)
{
for(j=1;j<=s2-i;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
for(j=1;j<=i*2-1;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=s3;i++)
{
for(j=1;j<=i;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
for(j=1;j<=(s3-i)*2+1;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=s1;i++)
{
for(j=1;j<=n/2-s1+i;j++)
printf("
");
for(j=1;j<=(s1-i)*2+1;j++)
printf("*");
printf("\n");
}
}
getch();
}

F. C语言编程:打印空心数字菱形,求救啊,搞了半天还是搞不出来

#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("%d",i);
if(i==1){printf("\n");continue;}
for(j=0;j<2*i-3;j++)
{
printf(" ");
}
printf("%d",i);
printf("\n");
}
for(i=m-1;i>0;i--)
{
for(k=0;k<m-i;k++)
{
printf(" ");
}
printf("%d",i);
if(i==1){printf("\n");continue;}
for(j=0;j<2*i-3;j++)
{
printf(" ");
}
printf("%d",i);
printf("\n");
}
return 0;
}
仅供参考

G. c语言输出空心菱形

1、首先,输入预处理指令#include <stdio.h>与函数原型void print(int n)。其中,n表示行数。

H. 怎么用C语言打印一个空心的菱形

#include <stdio.h>
int main()
{
int i,j,n;
printf("请输入你想要的菱形的边长(小于等于40):");
scanf("%d",&n);

if(n>40)
printf("菱形太大,控制台输出为畸形,为保证美观,不予输出。谢谢合作。^_^ \n");
else
for(i=1-n;i<=n-1;i++)
for(j=1-n;j<=n;j++)//建立直角坐标系
{
putchar(' ');
if(j==n)
putchar('\n');
if(abs(i)+abs(j)==n-1)
putchar('*');
}
}

I. 如何实现C语言编程输出空心菱形

#include<stdio.h>
/*
其实打印三角形啦,菱形啦,思路都是一样一样的,
都是按行找规律,然后按照每行的规律按行打印就好了。。。
比如以下是每条边有n=4个*的菱形(边长是4)。
c语言都是按行输出的,我们只要分析第i行要输出些什么就好了:
0123456
0*
1**
2**
3**
4**
5**
6*
从上图可以看出来,
第0行要输出3个空格,1个*
第1行要输出2个空格,1个*,1个空格,1个*
第2行要输出1个空格,1个*,3个空格,1个*
第3行要输出0个空格,1个*,5个空格,1个*
第4行要输出1个空格,1个*,3个空格,1个*
第5行要输出2个空格,1个*,1个空格,1个*
第6行要输出3个空格,1个*
再看上面得出的规律,除了第0行和第6行,其他的都是同一个模式:
对于第i行,打印k1个空格,1个*,k2个空格,1个*。
而且从第4行开始就跟上面对称了,我们完全可以只分析0~3行:
在第i=[0,3]行内:
对于第i行,打印k1=n-i-1个空格,1个*,k2=2*i-1个空格,1个*。
例外:第0行得到的k2=-1小于0,此时不打印空格也不打印第二个*。
然后我们就可以弄一个小函数啦:
*/
voidprintline(inti,intn){
intk1=n-1-i;
intk2=2*i-1;
intj;
//打印k1个空格
for(j=0;j<k1;j++)
printf("");
//打印一个*
printf("*");
//如果k2小于0就不用打印空格和后面的*啦
if(k2>0){
//打印k2个空格
for(j=0;j<k2;j++)
printf("");
printf("*");
}
printf(" ");
}
intmain()
{
constintn=4;
inti;
//先打印0~n-1
for(i=0;i<n;i++)
printline(i,n);
//然后打印n-2~0
for(i=n-2;i>=0;i--)
printline(i,n);
return0;
}