c语言输出一个菱形

#include "stdio.h"
void main()
{
int i,s,x;
for(x=0;x<=3;x++)
{
for(i=0;i<=2-x;i++)
printf(" ");
for(s=0;s<=2*x;s++)
printf("*");
printf("\n");
}
for(x=0;x<=2;x++)
{
for(i=0;i<=x;i++)
printf(" ");
for(s=0;s<=4-2*x;s++)
printf("*");
printf("\n");
}
}

这个程序for语句里面的 2-x 2*x 4-2*x都是怎么算出来的,看了半天,靠猜的话,没答案的话我估计给我3个小时我都猜不出来。。。。而且这程序科学吗。。。墨迹这么半天用了6个for和6个printf,还不如用7个printf直接打出来算了

用得着6个FOR循环码?
//打印棱形字母
//注意abs(i)+abs(j)<=k
//用数学的角度分析(假设k为2)
//|x|+|y|<=k
//y<=  2 - x
//y<=  x + 2
//y>= -x - 2
//y>=  x - 2
#include <stdio.h>
#include <math.h>

int main(void)
{
int i,j,k;
char ch;

printf("请输入一个代写字母:");
scanf("%c",&ch);

k=ch-'A';

for(i=-k;i<=k;i++)
{
for(j=-k;j<=k;j++)
printf(abs(i)+abs(j)<=k ? "*" : " ");

printf("\n");
}

return 0;
}
不懂追问我
学过数学,自己画个图你就明白了

追问

大神。。。你这个比我那个还难理解,我数学学得非常渣,图我压根不会画的。。。我是不是该重新从高中数学重新学。。?

追答

这是初中数学知识,要学好编程,数学和英语必须会,能学多好就学多好。当然如果想混口饭吃,数学和英语随便学学就行了。


abs(i)+abs(j)<=k你把它成是|x|+|y|<=k。它在坐标轴上画成四条直线(构成一个棱形)

如图

追问

算了。。。初中毕业不喜欢学习就读了个三流技校,现在二十多了才想学点东西。。。数学可以说是初中都及过格,英语比数学还强一点。。。没老师,要从初中数学重新学一直学到大学的,有点难。。编程先学着看吧,能混口饭吃也好了。。不然只能干一辈子粗活了。。。

追答

加油吧。祝你成功!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-11-04
// 程序大体上都差不多,我这是在VC上运行过的,TC上应该也没问题,有错的话欢迎留言指教
#include <stdio.h>
int main()
{
char c;
int n=0,i,j,k;
printf("Please input a letter:");
scanf("%c",&c);
if(c<'A'||c>'Z')
{
printf("Error Input!\n");
return 0;
}
n=c-'A'+1;
for(i=0;i<n;i++)
{
for(j=0;j<n-i-1;j++)/* 输出每行的空格*/
printf(" ");
for(k=0;k<2*i+1;k++)
printf("%c",(char)('A'+i));
printf("\n");
}
for(i=n-2;i>=0;i--)
{
for(j=0;j<n-i-1;j++)/* 输出每行的空格*/
printf(" ");
for(k=0;k<2*i+1;k++)
printf("%c",(char)('A'+i));
printf("\n");
}
}
第2个回答  2008-11-04
# include <stdio.h>

void main()
{
int i, j, k;
/* 变量i从0到3,表示所画菱形图的第一至第四行 */
for(i = 0; i <= 3; i++)
{
/* 当行数为i时,空格数是i的函数,为2-i个 */
for(j = 0; j <= 2-i; j++)
printf(" ");
/* 字母数也是i的函数,为2i+1个 */
for(k = 0; k <= 2*i; k++)
putchar('A'+i); /* 输出字母 */
printf("\n");
}
/* 变量i从0到2,表示所画菱形图的第五至第七行 */
for(i = 0; i <= 2; i++)
{
/* 当行数为i时,空格数是i的函数,此时为i个 */
for(j = 0; j <= i; j++)
printf(" ");
/* 字母数也是i的函数,此时为4-2*i个 */
for(k = 0; k <= 4-2*i; k++)
putchar('C'-i); /* 输出字母 */
printf("\n");
}
}
第3个回答  2018-01-13


可能讲得不是很清楚,有问题再问

第4个回答  2009-11-27
#include<stdio.h>
void main()
{
int i,j,k;
for(i=1;i<=4;i++)
{
for(j=1;j<=4-i;j++)
printf(" ");
for(k=1;k<=i;k++)
{
if(k==1)
printf("*");
else
printf(" *");
}
printf("\n");
}
for(i=1;i<=3;i++)
{
for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=4-i;k++)
{
if(k==1)
printf("*");
else
printf(" *");
}
printf("\n");
}
}
c语言编写,完全可以运行,有问题可以hi我。