越是简单的问题,越是看不出来!!!
int m = 0;
for (int i = 0; i<7; i++)
{
m = i;
if ((m-3)>0)
{
m=6-m;
}
for (int k = 0; k<m; k++)
{
printf(" ");
}
for (int j = 0;j<7; j++)
{
if (j<7-2*i || j<2*i-5)
{
printf("*");
}
}
printf("\n");
}
指向想输出此图案。
*******
*****
***
*
***
*****
*******
但是第一行的7个*居然没有输出。
[解决办法]
vs2005测试通过,输出正常
[解决办法]
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。
[解决办法]
输出这么一个图形你for,用了3次,而且还嵌套。写代码要养成良好习惯。
[解决办法]
#include <stdio.h>
/*
Parameter:
level => the level count of the upside down triangle
*/
void print(int level)
{
int i, space, star, totalLevel = level*2 - 1;
for(i = 0; i < totalLevel; ++i){
/* figure out how many leading spaces and stars in this level */
if(i < level) space = i;
else space = totalLevel-1 - i;
star = (level - space) * 2 - 1;
/* print leading spaces */
for(; space > 0; --space) putchar(' ');
/* print stars */
for(; star > 0; --star) putchar('*');
/* new line */
putchar('\n');
}
}
int main()
{
int level = 4;
print(level);
return 0;
}