69,382
社区成员
发帖
与我相关
我的任务
分享
/*
目的:输入一个字符,输入变长。打印输出其正方形的图形
*/
#include <stdio.h>
void fillCharater(int ,char );
int main()
{
int x;
printf("输入要填充的边长:");
scanf("%d",&x);
char c;
printf("输入要填充的字符:");
scanf("%c",&c);
fillCharater(x,c);
printf("\n");
return 0;
}
void fillCharater(int side,char ch)
{
for(int i=1;i<=side;++i)
{
for(int j=1;j<=side;++j)
{
printf("%c",ch);
}
printf("\n");
}
}
/*
目的:输入一个字符,输入变长。打印输出其正方形的图形
*/
#include <stdio.h>
void fillCharater(int ,char );
int main()
{
int x;
printf("输入要填充的边长:");
scanf("%d",&x);
while(getchar()!='\n');//加上这一句把换行符读掉。。
char c;
printf("输入要填充的字符:");
scanf("%c",&c);
fillCharater(x,c);
printf("\n");
return 0;
}
void fillCharater(int side,char ch)
{
for(int i=1;i<=side;++i)
{
for(int j=1;j<=side;++j)
{
printf("%c",ch);
}
printf("\n");
}
}
scanf("%d",&x);
char c;
printf("输入要填充的字符:");
scanf("%c",&c);
主要是先输入长度时,缓冲区里有垃圾数据(这个垃圾数据就是'\n'符),然后该垃圾数据就被变量c接收,所以会有问题。
如果先输入长度可以再输入字符时改成:
scanf("%*c%c", &c);
建议你试一试。当然也可以在输入长度后在后面加上一句getchar();scanf("%d",&x);后添加getchar()或fflush(stdin)
,或者将scanf("%c",&c);改成scanf(" %c",&c);
没错啊!!! 如果你先输入,边长再输入字符,这样肯定会变化的啊!这程序写的很简单,不可能会自动识别数字和字符,然后把数字赋值给x,字符赋值给c
/* 目的:输入一个字符,输入变长。打印输出其正方形的图形 */ #include <stdio.h> void fillCharater(int ,char ); int main() { int x; printf("输入要填充的边长:"); scanf("%d",&x); getchar(); char c; printf("输入要填充的字符:"); scanf("%c",&c); fillCharater(x,c); printf("\n"); return 0; } void fillCharater(int side,char ch) { for(int i=1;i<=side;++i) { for(int j=1;j<=side;++j) { printf("%c",ch); } printf("\n"); } }测试通过