我想打印下面的图案,用户输入n和m(4和6),外面应该是星星,里面应该用圆形填充。
****** ****** ****** ******
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
****** ****** ****** ******
****** ****** ****** ******
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
****** ****** ****** ******
****** ****** ****** ******
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
****** ****** ****** ******
****** ****** ****** ******
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
****** ****** ****** ******
****** ****** ****** ******
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
****** ****** ****** ******
****** ****** ****** ******
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
*oooo* *oooo* *oooo* *oooo*
****** ****** ****** ******
我只能使用此代码打印此内容。我做错了什么?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n,i,j,k,m,n1;
printf("enter table size and enter square size");
scanf("%d %d", &n, &n1);
for (i = 0; i < n; i++) {
for (j = 0; j < n1; j++)
{
for ( k = 0; k < n; k++)
{
for ( m = 0; m < n1; m++)
{
{
if(i==0 || i==n-1)
{
printf("*");
}
else if(j==0 || j==n-1)
{
printf("*");
}
else
{
printf("o");
}
}
}
printf(" ");
}
printf("\n");
}
printf("\n");
}
system("pause");
return 0;
}
答案 0 :(得分:1)
试试这个
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
int j;
int side;
printf("Enter side\n");
scanf("%d",&side);
for(int m=0;m<side;m++)
{
for(j=0;j<side;j++)
{
for(i=0;i<side;i++)
{
for(int k=0;k<side;k++)
printf("*");
printf(" ");
}
printf("\n");
}
printf("\n");
}
system("Pause");
return 0;
}
答案 1 :(得分:1)
算法和逻辑非常简单。
如果以正确的顺序row{height{length{column{...}}}}
包含这些for循环,您将获得所需的结果:
它会打印*
length
次,然后是'空格'。并重复column
次。
然后它将移动到下一行并执行相同的height
次。之后,它将打印换行符\n
。
该计划将重复步骤1(column
次)和2(height
次)row
次。
但是 如果您想要打印一些不同的东西,您可以随意更改此算法。将所有变量重命名为number
并运行它 - 您将获得number
x number
个方格,其边长等于number
。或者将row
和column
重命名为side
并运行它 - 您将获得一个side
x side
个方格,其边height
和length
。等等...
我可以建议您使用以下算法打印各种方块。
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int row, column, height, length;
int i,j,k,m;
scanf("%d %d %d %d", &row, &column, &height, &length);
for (i = 0; i < row; i++) {
for (j = 0; j < height; j++) {
for ( k = 0; k < column; k++) {
for ( m = 0; m < length; m++) {
printf("*");
}
printf(" ");
}
printf("\n");
}
printf("\n");
}
return 0;
}
/* OUTPUT:
2 // rows
4 // columns
3 // height
5 // length
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
***** ***** ***** *****
*/