输入x和n输出三角形

来源:百度知道 编辑:UC知道 时间:2024/05/31 01:43:07
求解,为什么第一次正确,第二次就空那么多行呢?
#include <stdio.h>
int main(void)
{
int n,i,j,k,u,m;
char x;
while(scanf("%c",&x)!='@')
{
scanf("%d",&n);
i=n;
for(j=0;j<n;j++)
{

k=2*j+1;
for(u=1;u<i;u++)
printf(" ");
for(m=0;m<k;m++)
printf("%c",x);
i--;

printf("\n");

}
}
return 0;
}
这是我所有的分数了。希望认真回答。谢谢。呵呵。

主要是回车符也是字符,所以当你每次按回车时,系统会把x值赋予回车符,所以会有很多行,还有你的scanf("%c",&x)!='@'这个写法不对,scanf函数的返回值是int的,当scanf成功调用时它返回输入值的个数,就是这个原因:
更改如下:
#include <stdio.h>
int main(void)
{
int n,i,j,k,u,m;
char x;
while(scanf("%c",&x)==1&&x!='@')
{
scanf("%d",&n);
getchar();
i=n;
for(j=0;j<n;j++)
{
k=2*j+1;
for(u=1;u<i;u++)
printf(" ");
for(m=0;m<k;m++)
printf("%c",x);
i--;
printf("\n");
}
}
return 0;
}

#include <stdio.h>
int main(void)
{
int n,i,j,k,u,m;
char x;
while(scanf("%c",&x)==1&&x!='@')
{
scanf("%d",&n);
getchar();