首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印英文标尺的C程序

打印英文标尺的C程序
EN

Stack Overflow用户
提问于 2021-05-01 16:44:03
回答 1查看 126关注 0票数 0

在这方面,我的任务是编写一个C程序来绘制一个英语标尺,它的长度和方向(水平/垂直)由用户给出。我写了一个垂直打印标尺的程序,我想写另一个水平打印标尺的程序,然后我使用if函数连接这两个程序。但是,用于水平打印标尺的程序并不能很好地运行。我需要些帮助。这是垂直打印标尺的程序。

代码语言:javascript
复制
#include<stdio.h>
int main(){
  int q,num,x;
  int y,p,n;
  printf("Enter height of central dashes\n");
  scanf("%d",&n);
  printf("Enter number of inches\n");
  scanf("%d",&num);
  for(x=0;x<num;x++)
  {
    for(q=0;q<n;q++)
    {
      printf("-");
    }
    printf("%d\n",x);
    for(p=0;p<n-3;p++)
    {
      printf("-");
    }
    printf("\n");
    for(p=0;p<n-2;p++)
    {
      printf("-");
    }
    printf("\n");
    for(p=0;p<n-3;p++)
    {
      printf("-");
    }
    printf("\n");
    for(p=0;p<n-1;p++)
    {
      printf("-");
    }
    printf("\n");
    for(p=0;p<n-3;p++)
    {
      printf("-");
    }
    printf("\n");
    for(p=0;p<n-2;p++)
    {
      printf("-");
    }
    printf("\n");
    for(p=0;p<n-3;p++)
    {
      printf("-");
    }
    printf("\n");
  }
  for(y=0;y<n;y++)
  {
    printf("-");
  }
  printf("%d",x);
  printf("\n");
  return 0;
}

我需要一些关于如何水平打印这把尺子的想法。可能是在使用循环。这是我写的水平打印标尺的程序。但只能打印1 inch.Sorry左右的缩进间隔,不能编辑

代码语言:javascript
复制
#include<stdio.h>
int main()
{
int q,num,x;
int y,p,n=9;
printf("Enter number of inches\n");
scanf("%d",&num);
for(x=1;x<=num;x++)
{
for(q=1;q<=n-8;q++)
{
printf(" | ");
}
for(q=2;q<=n-1;q++)
{
printf("   ");
}
for(q=9;q<=n-0;q++)
{
printf(" | ");
}
printf("\n");
for(q=1;q<=n-8;q++)
{
printf(" | ");
}
for(q=2;q<=n-5;q++)
{
printf("   ");
}
for(q=5;q<=5;q++)
{
printf(" | ");
}
for(q=6;q<=n-1;q++)
{
printf("   ");
}
for(q=9;q<=n;q++)
{
printf(" | ");
}
printf("\n");
for(q=1;q<=n-8;q++)
{
printf(" | ");
}
for(q=2;q<=n-7;q++)
{
printf("   ");
}
for(q=3;q<=n-6;q++)
{
printf(" | ");
}
for(q=4;q<=n-5;q++)
{
printf("   ");
}
for(q=5;q<=n-4;q++)
{
printf(" | ");
}
for(q=6;q<=n-3;q++)
{
printf("   ");
}
for(q=7;q<=n-2;q++)
{
printf(" | ");
}
for(q=8;q<=n-1;q++)
{
printf("   ");
}
for(q=9;q<=n;q++)
{
printf(" | ");
}
printf("\n");
for(q=1;q<=n;q++)
{
printf(" | ");
}
printf("");
}
return 0;
}

This is the output for horizontal

this is the output for vertical

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-01 18:23:58

这里是一个开始,而不是给出你的家庭作业问题的完整答案。下面的程序使用递归用C语言打印标尺。尝试使用代码,使其符合您的任务和需求。代码是从一本书中摘录的

代码:

代码语言:javascript
复制
//using recursion to subdivisionside a ruler
#include <stdio.h>
#include <stdlib.h>

const int len = 66;
const int divisions = 5;
void subdivisionside(char ar[], int min, int max, int level);

int main()
{
    char ruler[len];
    int i;
    for (int i = 1; i < (len - 2); i++)
        ruler[i] = ' ';
    ruler[len - 1] = '\0';

    int min = 0;
    int max = len - 2;
    ruler[min] = ruler[max] = '|';

    printf("%s\n", ruler);

    for (i = 1; i <= divisions; i++)
    {
        subdivisionside(ruler, min, max, i);
        printf("%s\n", ruler);
        for (int j = 1; j < len - 2; j++)
            ruler[j] = ' ';
    }

    return 0;
}

void subdivisionside(char ar[], int low, int high, int level)
{
    if (level == 0)
        return;
    int mid = (high + low) / 2;
    ar[mid] = '|';
    subdivisionside(ar, low, mid, level - 1);
    subdivisionside(ar, mid, high, level - 1);
}

当前输出:

代码语言:javascript
复制
|                                                               |
|                               |                               |
|               |               |               |               |
|       |       |       |       |       |       |       |       |
|   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |   |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

参考:C++ Recursive function for printing a ruler not working.

希望这对大家有帮助,祝你编码愉快!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67344380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档