c - C中菱形中的线条图案
问题描述
我是 C 的初学者,为了实现菱形,我遇到了一个问题,我正在按照书中的指导练习进行操作,但我被卡住了,我必须实现模式:
我对结构进行了编码,但是当我想实现 @.o.@ 模式时,我只是破坏了一切
#include<stdio.h>
int main(){
int n, space;
printf("Number of sides: ");
scanf("%d", &n);
space = n - 1;
for (int i = 0; i < n; i++){
for (int j = 0;j < space; j++){
printf(" ");
}
// patern @.o should be in this loop
for (int j = 0;j <= i*2; j++){
printf("@");
}
printf("\n");
space--;
}
space = 0;
for (int i = n; i >= 0; i--){
for (int j = 0; j < space; j++){
printf(" ");
}
// patern @.o should be in this loop
for (int j = 0;j < (i*2)-1;j++){
printf("@");
}
printf("\n");
space++;
}
}
如果有人能给我一个提示或帮助,我真的很感激,我在过去的两周里被困在这里。谢谢你。
解决方案
这就是你需要的
#include<stdio.h>
int main(){
int n, space,i,j;
char pattern[]={'@','.','o','.'};
int position;
printf("Number of sides: ");
scanf("%d", &n);
space = n - 1;
for (i = 0; i < n; i++){
position=0;
for (j = 0;j < space; j++){
printf(" ");
}
// patern @.o should be in this loop
for (j = 0;j <= i; j++,position++)
printf("%c",pattern[position%sizeof(pattern)]);
position-=2;
for(;j<=2*i;j++,position--)
printf("%c",pattern[position%sizeof(pattern)]);
printf("\n");
space--;
}
}
某些情况下的输出:
./test
Number of sides: 10
@
@.@
@.o.@
@.o.o.@
@.o.@.o.@
@.o.@.@.o.@
@.o.@.o.@.o.@
@.o.@.o.o.@.o.@
@.o.@.o.@.o.@.o.@
@.o.@.o.@.@.o.@.o.@
./test
Number of sides: 5
@
@.@
@.o.@
@.o.o.@
@.o.@.o.@
./test
Number of sides: 2
@
@.@
对于钻石:
#include<stdio.h>
int main(){
int n, space,i,j;
char pattern[]={'@','.','o','.'};
int position;
printf("Number of sides: ");
scanf("%d", &n);
space = n - 1;
for (i = 0; i < n; i++){
position=0;
for (j = 0;j < space; j++){
printf(" ");
}
for (j = 0;j <= i; j++,position++)
printf("%c",pattern[position%sizeof(pattern)]);
position-=2;
for(;j<=2*i;j++,position--)
printf("%c",pattern[position%sizeof(pattern)]);
printf("\n");
space--;
}
space = 0;
for (int i = n-1; i >= 0; i--){
for (int j = 0; j < space; j++){
printf(" ");
}
position=0;
for (j = 0;j <= i; j++,position++)
printf("%c",pattern[position%sizeof(pattern)]);
position-=2;
for(;j<=2*i;j++,position--)
printf("%c",pattern[position%sizeof(pattern)]);
printf("\n");
space++;
}
}
和输出
./test
Number of sides: 10
@
@.@
@.o.@
@.o.o.@
@.o.@.o.@
@.o.@.@.o.@
@.o.@.o.@.o.@
@.o.@.o.o.@.o.@
@.o.@.o.@.o.@.o.@
@.o.@.o.@.@.o.@.o.@
@.o.@.o.@.@.o.@.o.@
@.o.@.o.@.o.@.o.@
@.o.@.o.o.@.o.@
@.o.@.o.@.o.@
@.o.@.@.o.@
@.o.@.o.@
@.o.o.@
@.o.@
@.@
@
推荐阅读
- php - Laravel 功能测试,但数据直到请求后才会出现
- c# - excel dna插件如何在xll文件中打包非托管dll
- html - 正方形而不是图标 fontawesome
- c++ - C++:如何在使用 BASIC 运算进行除法后进行算术舍入?
- c# - SQL UPSERT QUERY W/基于 3 个字段的唯一重复行 (C# VisStudio)
- html - 翻转卡与 Bootstrap 4 网格库的其余部分相同的高度和宽度
- rule-engine - CodeEffects LoadSettings() 不会在没有硬重新加载的情况下更新新数据(Angular)
- typescript - Typescript 接口特定属性设置函数
- mule - 将具有相同 messageId 的消息发布到 Anypoint MQ
- c# - 将 Windows 窗体 TcpClient 连接转换为异步