You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++控制台中绘制带对角线与对称轴的矩形?

解决矩形对角线绘制问题

你已经完成了矩形边框和对称轴的绘制,现在只需要补充对角线的判断逻辑就能实现需求啦!结合你提供的原始代码和老师指导后的最终版本,我来帮你梳理下完整的实现思路:

原代码分析

你最初的代码已经实现了矩形边框(通过p==1 || l==1 || l==d || s==p判断)和一条对称轴的绘制,但缺少对角线的核心判断条件:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(int argc, char *argv[]) {
 int s,d;
 printf ("the length of the rectangle \n");
 scanf ("%d",&s);
 printf ("width of the rectangle \n ");
 scanf ("%d",&d);
 int l;
 int p;
 int przekatna;
 for (p=1; p<=s; p++) {
 printf ("\n");
 for (l=1;l<=d; l++) {
 if(p==1 || l==1 || l==d || s==p || p==((d+1)/2) )
 printf("*");
 else printf(" ");
 if ( l==(d)/2 && p!=((d+1)/2) && p!=1 && p!=s)
 printf("*");
 else printf("");
 }
 }
 return 0;
}

对角线的核心逻辑

矩形的两条对角线满足行与列的线性比例关系,为了适配整数坐标的精度问题,需要用round函数来取整:

  • 左上角到右下角的对角线:l = p * round(d/s)
  • 右上角到左下角的对角线:l = (s + 1 - p) * round(d/s)

把这两个条件加入到星号的判断逻辑中,就能在对应位置绘制出对角线了。

最终可运行代码

经过老师指导后,你已经完成了正确的实现,整理后的完整代码如下:

#include <stdlib.h>
#include <math.h>
int main() {
 int l;
 int p;
 int s;
 int d;
 printf ("the length of the rectangle \n");
 scanf ("%d",&s);
 printf ("width of the rectangle \n ");
 scanf ("%d",&d);
 for (p=1; p<=s; p++) {
 printf ("\n");
 for (l=1;l<=d; l++) {
 if(p==1 || l==1 || l==d || s==p || p==s/2 || l==l/2 || l==p*round(d/s) || l==(s+1-p)*round(d/s) )
 printf("*");
 else printf(" ");
 }
 }
 return 0;
}

内容的提问来源于stack exchange,提问作者pakson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:08:32