我已经编写了用C语言打印模式的代码。我期望的答案与我得到的答案非常不同。我对C语言很新。我调试了代码但无法找到错误。请帮我找到错误。我的代码如下。
#include <stdio.h>
int main()
{
//code
int T,i,j;
scanf("%d",&T);
while(T--)
{
char str[5];
for(i=0;i<5;i++)
{
scanf("%c",&str[i]);
}
printf("\n");
for(j=1;j<=5;j++)
{
for(i=0;i<5-j;i++)
{
printf(".");
}
for(i=0;i<j;i++)
{
printf("%c",str[i]);
}
}
printf("\n");
}
return 0;
}
该计划的输入如下:
输入:
1
geeks
该计划的预期产出如下:
预期产出:
....g
...ge
..gee
.geek
geeks
程序的实际输出如下:
实际输出:
....
...
g..
ge.
gee
答案 0 :(得分:3)
纠正您的错误代码
#include <stdio.h>
int main()
{
//code
int T,i,j;
scanf("%d",&T);
while(T--)
{
char str[5];
for(i=0;i<5;i++)
{
scanf(" %c",&str[i]);
}
printf("\n");
for(j=1;j<=5;j++)
{
for(i=0;i<5-j;i++)
{
printf(".");
}
for(i=0;i<j;i++)
{
printf("%c",str[i]);
}
printf("\n");
}
}
return 0;
}
scanf
格式说明符已更改为" %c"
,以便'\n'
向左stdin
消费scanf
5
次,因此条件已更改为<=
,因为1
的起始值printf("\n");
。INPUT
1
geeks
输出
....g
...ge
..gee
.geek
geeks
其他测试
INPUT
2
1234567890
输出
....1
...12
..123
.1234
12345
....6
...67
..678
.6789
67890
答案 1 :(得分:0)
这可以解决您的问题:
int main()
{
//code
int T,i,j;
scanf("%d",&T);
while(T--)
{
char str[5];
for(i=0; i<5; i++)
{
scanf(" %c",&str[i]); //first modification
}
printf("\n");
for(j=1; j<=5; j++) //second modification
{
for(i=0; i<=5-j; i++)
{
printf(".");
}
for(i=0; i<j; i++)
{
printf("%c",str[i]);
}
}
printf("\n");
}
return 0;
}