数组特殊格式打印{1,2,3,4,5,6}{12,23,34,45,56}{123,234,345,456}{1234,2345,3456}{12345,23456}{123456}

/*
题目要求:给定一个整型数组,要求按照以下给定例子,写出打印函数。
数组:arr[1]={1};
打印结果:
1

数组:arr[2]={1,2};
打印结果:
1 2
12

数组:arr[3]={1,2,3};
打印结果:
1		2		3
12		23
123

数组:arr[4]={1,2,3,4};
打印结果:
1		2		3		4
12		23		34
123		234
1234

数组:arr[6]={1,2,3,4,5,6};
打印结果:
1		2		3		4		5		6
12		23		34		45		56
123		234		345		456
1234	2345	3456
12345	23456
123456
说明:
上例中第五行,12345是第五行得第一块。故,第n行每块中得数据元素得个数就有n个元素。
*/
void PrintArrSpecially(int *arr, int n)
{
	assert(NULL != arr && n > 0);
	int Row = 1;//代表当前在第几行
	int Count = 0;//目前打印了几个数字
	int i;
	do
	{
		for (i = 0; i < n; i++)
		{
			printf("%d", arr[i]); Count++;//目前已经打印了Count个数据
			if (i == n - 1)break;//一旦打印到最后一个元素就退出for循环表示此行打印结束
			if (Row == Count)//第n行,每块的元素的个数就是行数。故在这个条件下做出相应的操作
			{
				printf("\t");//打印制表符,输出的结果更加清晰
				Count = 0;//恢复当前块打印的个数为0
				if (Row > 1)i = i - (Row - 1);//如果不是第一行那么就得移动下次块开始得位置,注意:for循环体完毕之后i还要加1
			}
		}
		printf("\n");
		Count = 0;//每行结束时直接跳出了for循环,所以我们再给Count置0
		Row++;//每次打印完一行,行数加1
	} while (Row <= n);
}

测试用例:

    int arr1[7] = { 1,2,3,4,5,6,7};
	PrintArrSpecially(arr1, 1);
	printf("**************************\n");
	PrintArrSpecially(arr1, 3);
	printf("**************************\n");
	PrintArrSpecially(arr1, 4);
	printf("**************************\n");
	PrintArrSpecially(arr1, 6);
	printf("**************************\n");

 

结果:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值