大佬救命!打印一个空心正方形c语言

按要求,给定边长,打印一个正方形。输入输入数据有多组,每组占一行,每行一个偶数n(4<=n<=100),表示正方形的边长。以EOF结束。输出按照样例格式输出正方形。由于行... 按要求,给定边长,打印一个正方形。

输入
输入数据有多组,每组占一行,每行一个偶数n(4<=n<=100),表示正方形的边长。
以EOF结束。
输出
按照样例格式输出正方形。由于行间距比列间距大,我们输出的列数为正方形边长,而行数只有列数的一半再加1(近似正方形)。
四个角落的符号为+,水平方向使用"-"符号,垂直方向使用"|"符号,中间为空格,末尾没有多余空格。
如下
输入4
输出图形
+--+
| |
+--+
展开
 我来答
听不清啊
高粉答主

2018-09-10 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

用一个二重循环就解决了。


#include <stdio.h>
int main()
{int i,j,n;
 scanf("%d",&n);
 for(i=1;i<=n/2+1;i++)
 {for(j=1;j<=n;j++)
    if(i==1 || i==n/2+1)
  printf("%c",(j==1 || j==n)?'+':'-');
    else
  printf("%c",(j==1 || j==n)?'|':' ');
  printf("\n");
 }
 return 0;
}
追问
输入数据多组,n为偶数
谢谢
White_MouseYBZ
2018-09-10 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6700万
展开全部
#include "stdio.h"
int main(int argc,char *argv[]){
int n,i,j;
printf("Please enter n(int 3<n<101)...\nn=");
while(scanf("%d",&n)==1 && n>3 && n<101)
for(i=0;i<n;i++){
for(j=0;j<n;j++)
if((i==0 || i==n-1) && (j==0 || j==n-1))
printf("+");
else if((i==0 || i==n-1) && j>0 && j<n-1)
printf("-");
else if(i>0 && i<n-1 && (j==0 || j==n-1))
printf("|");
else
printf(" ");
printf("\n");
}
printf("\n");
return 0;
}

运行样例:

更多追问追答
追问
n=4是一边只有一个|
追答
#include "stdio.h"
int main(int argc,char *argv[]){
int n,i,j,m;
  printf("Please enter n(int 3<n<101)...\nn=");
while(scanf("%d",&n)==1 && n>3 && n<101)
for(m=(n>>1)+1,i=0;i<m;i++){
for(j=0;j<n;j++)
if((i==0 || i==m-1) && (j==0 || j==n-1))
printf("+");
else if((i==0 || i==m-1) && j>0 && j<n-1)
printf("-");
else if(i>0 && i<m-1 && (j==0 || j==n-1))
printf("|");
else
printf(" ");
printf("\n");
}
printf("\n");
return 0;
}

运行样例:

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式