看不太明白,谁给我解释一下啊?
/*
输出以下图案:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
*/
#include<stdio.h>
main()
{
int i,j,k;
int N=4;
int M=7;
for(i=1;i<=M/2+1;i++){
for(k=0; k<=M/2-i;k++){
for(j=0;j<N;j++){
printf(" ");
}
}
for(k=1;k<=2*i-1;k++){
printf("*");
for(j=1;j<N;j++){
printf(" ");
}
}
printf("\n");
}
for(i=M/2;i>=1;i--){
for(k=0;k<=M/2-i;k++){
for(j=0;j<N;j++){
printf(" ");
}
}
for(k=1;k<=2*i-1;k++){
printf("*");
for(j=1;j<N;j++){
printf(" ");
}
}
printf("\n");
}
return 0;
}
[解决办法]
#include <stdio.h>
main()
{
int i,j,k;
int N=4;
int M=7;
//输出菱形的上半部分,共四行
for(i=1;i <=M/2+1;i++){
//输出前导空格,依次为3,2,1,0个
for(k=0; k <=M/2-i;k++){
for(j=0;j <N;j++){
printf( " ");
}
}
//输出*,依次为1,3,5,7个
for(k=1;k <=2*i-1;k++){
printf( "* ");
for(j=1;j <N;j++){
printf( " ");
}
}
//换行
printf( "\n ");
}
//输出菱形的下半部分
for(i=M/2;i> =1;i--){
for(k=0;k <=M/2-i;k++){
for(j=0;j <N;j++){
printf( " ");
}
}
for(k=1;k <=2*i-1;k++){
printf( "* ");
for(j=1;j <N;j++){
printf( " ");
}
}
printf( "\n ");
}
return 0;
}
[解决办法]
#include <stdio.h>
int main()
{
int len,i,j,k;
//i控制行,j控制列,len用于接受用户输入的长度
printf("输入要打印菱形的边长\n:");
scanf("%d",&len);
for(i=1;i <=len;++i)
{
for(j=len-i;j>0;--j)
{
printf(" ");//2个空格
}//打印空格
for(j=1; j <=2*i-1;++j)
{
printf(" *");//空格,星号
}//打印星号
printf("\n");
}
/*以上打印上半部分及中间一行*/
/*以下打印下半部分*/
for(i=len-1;i>0;--i)
{
for(j=len-i;j>0;--j)
{
printf(" ");
}
for(j=1; j <=2*i-1;++j)
{
printf(" *");
}
printf("\n");
}
system("pause");
return 0;
}