在这方面,我的任务是编写一个C程序来绘制一个英语标尺,它的长度和方向(水平/垂直)由用户给出。我写了一个垂直打印标尺的程序,我想写另一个水平打印标尺的程序,然后我使用if函数连接这两个程序。但是,用于水平打印标尺的程序并不能很好地运行。我需要些帮助。这是垂直打印标尺的程序。
#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左右的缩进间隔,不能编辑
#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;
}发布于 2021-05-01 18:23:58
这里是一个开始,而不是给出你的家庭作业问题的完整答案。下面的程序使用递归用C语言打印标尺。尝试使用代码,使其符合您的任务和需求。代码是从一本书中摘录的
代码:
//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);
}当前输出:
| |
| | |
| | | | |
| | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |参考:C++ Recursive function for printing a ruler not working.
希望这对大家有帮助,祝你编码愉快!
https://stackoverflow.com/questions/67344380
复制相似问题