您好我目前正在我的学校练习使用c,我根据用户输入在C中进行交叉签名时遇到问题,我的代码只有在高度为11时才能正常工作 首先我在高度= 11时做了非用户输入的代码(这是我的实际识别)然后在这里进行一些更改 谢谢你的回答
#include <stdio.h>
int main(void)
{
int n, i = 1, j = 9, l = 0, height;
char ch = '#';
printf("Enter the height of cross sign : ");
scanf("%d",&height);
n = (height / 2.0) - 0.5;
while (i <= n)
{
printf("%*c%*c\n", i, ch, (2*n - 2*i + 1), ch);
i++;
}
while (n < j)
{
printf("%*c%*c\n", (j - n), ch, (j - n - 1 + l), ch);
n++;
l += 3;
}
return 0;
}
答案 0 :(得分:0)
首先,您的代码有一些编译器错误。你错过了一些分号。其次你的代码工作正常,直到CPL的11个原因。您可以在下面给出的链接中阅读相关内容:https://en.wikipedia.org/wiki/Characters_per_line
答案 1 :(得分:0)
如果你有两个相反的变量,你不需要看中间位置,比如一个变量减少而另一个变量同时增加。
这是解决该问题的代码:
int height, i , j, l;
char ch = '#', sp = ' ';
printf("Enter the height of cross sign : ");
scanf("%d",&height);
j=height;
for(i=1;i<=height;i++)
{
for(l=1;l<=height;l++)
{
if(l==i||l==j)
{
printf("%c", ch); //if it's suppose to print '#'
}
else
{
printf("%c", sp); //if it's suppose to print space - ' '
}
}
j--;
printf("\n");
}
return 0;