在此,我的任务是编写一个 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 英寸的间隔。抱歉缩进,无法编辑
#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
这里不是给出你家庭作业问题的全部答案,而是一个良好的开端。的程序使用递归在 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);
}
电流输出:
| |
| | |
| | | | |
| | | | | | | | |
| | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Ref:C++ Recursive function for printing a ruler not working.
希望这有助于和快乐的编码!
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(41条)