为了账号安全,请及时绑定邮箱和手机立即绑定

c语言怎么用二维数组输出实心的菱形?

c语言怎么用二维数组输出实心的菱形?

C C++
Leo也叫做夹子 2016-11-10 19:26:12
rt,最好加上注释,谢谢了
查看完整描述

2 回答

?
心有猛虎_细嗅蔷薇

TA贡献119条经验 获得超250个赞

#include "stdio.h"
int main(){
	int a[][5]={{1,3,5,7},{9,7,5,3,1}};
 	int index=5;
 	for(int j=0;j<4;j++)//打印菱形上半部
 	{  
 		for(int i=0;i<index;i++)
  			printf(" ");
 			index--;
 			for(int k=0;k<a[0][j];k++)
 			{   
  				printf("*");
 			}
 	printf("\n");
 	}
 index=1;
 	for(int j=0;j<5;j++)//打印菱形下半部
 	{  
 		for(int i=0;i<index;i++)
  		printf(" ");
 		index++;
 		for(int k=0;k<a[1][j];k++)
 		{   
    		printf("*"); 
 		}
	printf("\n");
 }
}

还有不懂的,我会抽时间给你回复^_^

查看完整回答
3 反对 回复 2016-11-10
已采纳
?
心有猛虎_细嗅蔷薇

TA贡献119条经验 获得超250个赞

#include "stdio.h"
int main(){
	int n;
	printf("请输入◇的边数:\n");
	scanf("%d",&n);
	//实心上半部分
	for(int i=0;i<n;i++){                      //数据 i 它代表的是行数
		for(int j=1;j<n-i;j++){            //数据 j 它控制输出每行前的空格
			printf(" ");        
		    }
		for(int k=0;k<2*i+1;k++){           //数据 k 它控制输出每行*号的个数
			printf("*");        
		    }
		printf("\n");
	}
	//实心下半部分
	for(int i=0;i<n;i++){
		for(int j=0;j<i+1;j++){
			printf(" ");
		}
		for(int k=0;k<(n-i-1)*2-1;k++){
			printf("*");	
		}
		printf("\n");
	}
	return 0;
}

//img1.sycdn.imooc.com//58245d8700015a4505070531.jpg

上半部分执行过程:

当i=0,j等于1时,此时判断第二个for循环里的条件,即1<4成立(因为输入的边数是5),输出空格,j再加1(也就是j++)此时j=2,再判断条件,直到j=4,第二个for循环停止(因为j受i的控制,i<5),这时已经输出4个空格

开始执行第三个for循环,k=2*i+1(为什么是2*i+1?这个公式是可以观察出来的,就像找规律),k=0,判断条件,1<2*i+1,满足条件,输出*,接着k++,该轮循环结束,换行输出。

同理,i=1、2、3、4、5也一样。

P.S.

建议使用编程工具调试下程序,理解会更深刻些。

希望能帮助到你o(* ̄▽ ̄*)ブ


查看完整回答
反对 回复 2016-11-10
?
Leo也叫做夹子

TA贡献1条经验 获得超0个赞

要那种可以自己定义大小(行列数相等)的那种

查看完整回答
反对 回复 2016-11-10
  • 2 回答
  • 0 关注
  • 4818 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信