请问大家为什么输入顺序变一下,结果就不一样了呢?

CZBKJSJ 2013-05-28 04:22:23
/*
目的:输入一个字符,输入变长。打印输出其正方形的图形
*/
#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");
}
}



[/code]/*
目的:输入一个字符,输入变长。打印输出其正方形的图形
*/
#include <stdio.h>

void fillCharater(char ,int );

int main()
{
char c;
printf("输入要填充的字符:");
scanf("%c",&c);

int x;
printf("输入要填充的边长:");
scanf("%d",&x);

fillCharater(c,x);
printf("\n");

return 0;
}

void fillCharater(char ch,int side)
{
for(int i=1;i<=side;++i)
{
for(int j=1;j<=side;++j)
{
printf("%c",ch);
}
printf("\n");
}
}[/code]为什么这两个程序仅仅变换一下输入字符与边长。输出地结果截然不同呢?请大家帮帮呀……
...全文
228 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
vuqrzk5w 2013-05-29
  • 打赏
  • 举报
回复
引用 4 楼 CZBKJSJ 的回复:
[quote=引用 2 楼 vuqrzk5w 的回复:] /* 目的:输入一个字符,输入变长。打印输出其正方形的图形 */ #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"); } }测试通过
不会吧,我用vc6.0始终无法测试过哎……,你用什么编译器的啊?[/quote]codeblocks 你这个是C语言,不是C++,VS那一套,自从80年代就没更新过对C语言的支持……
hugett 2013-05-29
  • 打赏
  • 举报
回复

/*
目的:输入一个字符,输入变长。打印输出其正方形的图形
*/
#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");
	}	
}
自信男孩 2013-05-29
  • 打赏
  • 举报
回复

scanf("%d",&x);
    char c;
    printf("输入要填充的字符:");
    scanf("%c",&c);
主要是先输入长度时,缓冲区里有垃圾数据(这个垃圾数据就是'\n'符),然后该垃圾数据就被变量c接收,所以会有问题。 如果先输入长度可以再输入字符时改成:
scanf("%*c%c", &c);
建议你试一试。当然也可以在输入长度后在后面加上一句getchar();
赵4老师 2013-05-29
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。
be_yourself_fan 2013-05-28
  • 打赏
  • 举报
回复
引用 5 楼 CZBKJSJ 的回复:
引用 3 楼 lilin_colin 的回复:
没错啊!!! 如果你先输入,边长再输入字符,这样肯定会变化的啊!这程序写的很简单,不可能会自动识别数字和字符,然后把数字赋值给x,字符赋值给c
这个我知道,关键是我用VC6.0就是无法得到正确的结果……
vuqrzk5w和你的程序不同,你可能没注意到,你那程序输入有问题 printf("输入要填充的边长:"); scanf("%d",&x); getchar();
guotianyu2000 2013-05-28
  • 打赏
  • 举报
回复
主要是输入输出缓冲区问题,在输入边长之后留下了换行符在缓冲区内,直接填充到接下来的填充字符中了。要避免这个问题可以在读填充字符时先过滤掉换行符,如
scanf("%d",&x);后添加getchar()或fflush(stdin)
,或者将
scanf("%c",&c);改成scanf(" %c",&c);
CZBKJSJ 2013-05-28
  • 打赏
  • 举报
回复
引用 3 楼 lilin_colin 的回复:
没错啊!!! 如果你先输入,边长再输入字符,这样肯定会变化的啊!这程序写的很简单,不可能会自动识别数字和字符,然后把数字赋值给x,字符赋值给c
这个我知道,关键是我用VC6.0就是无法得到正确的结果……
CZBKJSJ 2013-05-28
  • 打赏
  • 举报
回复
引用 2 楼 vuqrzk5w 的回复:
/* 目的:输入一个字符,输入变长。打印输出其正方形的图形 */ #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"); } }测试通过
不会吧,我用vc6.0始终无法测试过哎……,你用什么编译器的啊?
绯红女王 2013-05-28
  • 打赏
  • 举报
回复
没错啊!!! 如果你先输入,边长再输入字符,这样肯定会变化的啊!这程序写的很简单,不可能会自动识别数字和字符,然后把数字赋值给x,字符赋值给c
vuqrzk5w 2013-05-28
  • 打赏
  • 举报
回复
/* 目的:输入一个字符,输入变长。打印输出其正方形的图形 */ #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"); } }测试通过
whizer 2013-05-28
  • 打赏
  • 举报
回复
程序就是要输入变化输出也变化,你想怎么做?不管输入什么输出都一样?
内容概要:本文研究了基于粒子群算法的风电-水电(抽水蓄能)联合优化调度问题,旨在通过智能优化算法实现新能源与储能系统的协同调度,提升电力系统运行效率与稳定性。研究采用粒子群优化(PSO)算法对风电和抽水蓄能电站的出力进行联合优化,以最小化系统运行成本、减少弃风弃电、提高可再生能源消纳能力为目标,构建了包含风电出力不确定性、水电站水量平衡、抽水蓄能机组运行约束在内的多目标优化模型,并通过Matlab编程实现算法求解与仿真验证。文中详细探讨了算法参数设置、收敛性分析及优化结果的合理性,展示了该方法在实际电力系统调度中的应用潜力与工程价值。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的研究生、科研人员及从事新能源调度、智能优化算法应用的工程技术人员。; 使用场景及目标:①应用于含大规模风电接入的电力系统中,实现风电与抽水蓄能的协调调度;②为电力系统经济调度、可再生能源消纳、储能优化配置等研究提供算法支持与仿真案例;③作为智能优化算法在能源系统中应用的教学与研究参考资料。; 阅读建议:读者应结合Matlab代码与文中模型描述,理解算法实现细节,建议在学习过程中动手调试代码,尝试修改目标函数或约束条件以观察优化结果变化,从而深入掌握粒子群算法在能源调度中的应用方法。

70,040

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧