Triangle Wave |
In this problem you are to generate a triangular wave form according to a specified pair ofAmplitude and Frequency.
Input and Output
The input begins with a single positive integer on a line by itself indicatingthe number of the cases following, each of them as described below. This line isfollowed by a blank line, and there is also a blank line between two consecutiveinputs.
Each input set will contain two integers, each on a separate line. The first integer is the Amplitude; thesecond integer is the Frequency.
For each test case, the output must follow the description below. The outputs oftwo consecutive cases will be separated by a blank line.
For the output of your program, you will be printing wave forms each separated by a blank line.The total number of wave forms equals the Frequency, and the horizontal ``height'' of each waveequals the Amplitude. The Amplitude will never be greater than nine.
The waveform itself should be filled with integers on each line which indicate the ``height'' of thatline.
NOTE: There is a blank line after each separate waveform, excluding the last one.
Sample Input
1 3 2
Sample Output
1 22 333 22 1 1 22 333 22 1
原本是希望将打印一个波形放在一个双重循环里完成,后来发现很困难,所以改用两个循环完成。不过还是WA了一次,原因就是空行的问题。
每个波形之间都有一个空行,但是最后一个波形结尾没有空行!就是错在最后一个波形也输出了空行。。
AC代码:
#include <stdio.h>
draw(int n)
{
int i, j;
for (i=1; i<=n; ++i) {
for (j=1; j<=i; ++j)
printf("%d", i);
putchar('\n');
}
for (i=n-1; i>=1; --i) {
for (j=1; j<=i; ++j)
printf("%d", i);
putchar('\n');
}
}
/**************************/
int main(void)
{
int n, i;
int a, f;
scanf("%d", &n);
while (n--) {
scanf("%d%d", &a, &f);
for (i=1; i<=f; ++i) {
draw(a);
if (n==0 && i==f)
return 0;
putchar('\n');
}
}
return 0;
}