复杂打印问题(多组多行多列)(pta)

这篇博客介绍了一个C语言编程问题,涉及用星号(*)和点(.)构造特定图案。博主强调了在处理多层循环和变量命名时的注意事项,提醒开发者注意循环内的变量使用以及调试技巧。示例代码展示了如何根据输入的参数打印出星号和点组成的图案,并给出了输入输出样例。
摘要由CSDN通过智能技术生成

tips:这个题涉及到了多个变量,需要分清楚,最好在命名时养成好习惯,并且涉及到了多个循环,debug时需要耐心,建议使用其他编程工具,pta的循环展示实在辣眼睛。

warning:for循环内嵌for循环时注意变量名,不要使用同一个,会出错的(后续看看研究一下)

题干

用'*'(星号)和'.'(点)空格打印如下图案。

输入格式:

第一行为一个整数t(0<t<10),代表测试用例组数。后边为用空格分隔的三个整数l,c和n(0<l,c,n<20)。其中l和c代表格子的行数和列数,n代表格子内点的列数(格子内点的行数固定为3)。具体见输出样例。。

输出格式:

每组测试用例输出一组(请看输出样例)。

输入样例:

3
3 1 2
4 4 4
2 5 1

输出样例:

 

注意观察,最后多出来一行星号,可以加在后面或者前面都可以(for循环看起来更加简洁,推荐使用,但是不要忘记内嵌循环中使用不同的变量,个人比较喜欢在无内嵌循环时使用for,不会导致之前提到的问题,并列for循环中的变量可以相同)

#include <stdio.h>

main() {
	int line, line0, c, c0, n0, zu, zu0, lie, hang, x = 1;

	scanf("%d", &zu0);
	zu = 1;
	line=1;
	while (zu <= zu0) {
		scanf("%d", &line0);
		scanf("%d", &c0);
		scanf("%d", &n0);
		lie = c0 * (n0 + 1) + 1;
		while (line <= line0) {
			for (c = 1; c <= lie; c++) {
				printf("*");
			}
			printf("\n");
			hang = 1;
			while (hang <= 3) {
				printf("*");
				x++;
				while (x < lie) {
					for (c = 1; c <= n0; c++) {
						printf(".");
						x++;
					}
					printf("*");
					x++;
				}
				printf("\n");
				x = 1;
				hang++;
			}
			line++;
		}
		for (c = 1; c <= lie; c++) {
			printf("*");
		}
		printf("\n");
		zu++;
        line=1;
	}
	return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值