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
输出样例:![](https://i-blog.csdnimg.cn/blog_migrate/bdf3c6697a03fca8e81ce7d74166eb1f.png)
注意观察,最后多出来一行星号,可以加在后面或者前面都可以(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;
}