因此,对于我的作业,我必须接受长度和宽度的输入并打印出" *"的模式。根据输入。最小高度为7,只有奇数整数,宽度是6的任意倍。
输出的基本格式,高度为7,宽度为12:
************
************
*** ***
*** ***
*** ***
************
************
所以基本上第一行和最后两行是直线穿过整个宽度,奇数行包含3个星号,后面跟着3个空格,直到达到宽度的末尾。偶数行以3个空格开始。
我已经弄清楚如何使用以下代码打印前两行:
do
{
printf("*");
++i;
}while(i<width);
printf("\n");
do
{
printf("*");
++j;
}while(j<=width);
printf("\n");
但是对于我的生活,我无法想出使用基本嵌套循环打印出内部模式的正确方法。我问一个不熟悉C的程序员朋友,但用Java编写了一个基本程序。我不了解Java,并试图翻译它,但注意到两种语言之间逻辑上的一些重大差异导致我头痛。这是他的代码:
// LOGGING
var consoleLine = "<p class=\"console-line\"></p>";
console = {
log: function (text) {
$("#console-log").append($(consoleLine).html(text));
}
};
// PATTERN PARAMETERS
var rows = 6;
var cols = 7;
// hard code a space so html respects it
var space = " "
console.log("cols: " + cols + " rows: " + rows);
for (y = 0; y < rows; ++y) {
var line = "";
for (x = 0; x < cols; ++x) {
// First two and last two rows do not have patterns and just print filled
if (y == 0 || y == 1 || y == rows - 1 || y == rows - 2) {
line += "*";
} else {
if (y % 2 == 0) {
// Even row
line += x % 6 < 3 ? "*" : space;
} else {
// Odd row
line += x % 6 >= 3 ? "*" : space;
}
}
}
console.log(line);
}
请帮助我或指出正确的方向!!我在网上搜索过,但似乎无法找到可行的解决方案!
编辑 - 忘了提及所有&#34; printf&#34;用法一次只能打印一个字符......例如单个*
编辑编辑 - 我正在努力工作!!!!谢谢大家,非常感谢您的投入和指导!这就是我所拥有的完美工作:
for (y = 0; y < height; ++y)
{
printf("\n");
for (x = 0; x < width; ++x)
{
// First two and last two rows do not have patterns and just print filled lines
if (y == 0 || y == 1 || y == height - 1 || y == height - 2)
{
printf("*");
}
else
{
if (y % 2 == 0)
{
if(x%6<3)
{
printf("*");
}
else
{
printf(" ");
}
} else {
// Odd row
if(x%6>=3)
{
printf("*");
}
else
{
printf(" ");
}
}
}
}
printf("\n");
答案 0 :(得分:1)
编写一个包含3个参数n,a,b
的函数,可以交替显示n
个参数中的3个a
和b
组。您可以调用此函数来打印4种不同的线条。您可以循环重复打印中间部分。玩得开心!
答案 1 :(得分:0)
更简单的替代方案:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
int row, col, height = atoi(argv[1]), cols = atoi(argv[2]);
for (row = 0; row < height; row++) {
for (col = 0; col < cols; col++) {
putchar(row < 2 || row >= height - 2 ||
col % 6 / 3 == row % 2 ? '*' : ' ');
}
putchar('\n');
}
}