【发布时间】:2015-07-11 11:54:43
【问题描述】:
我有一个循环的小问题。我必须做一个日历。我创建了一个程序来使用来自其他函数的数据打印日历本身(例如,好像年份是闰年)。我想要的是写入数字的功能,最多可以写一个月的天数,每周插入一个空格。该程序尚未完成(现在它考虑从星期一开始的所有月份)但现在它打印 35 或 36 个数字。如果 31 或 30 是星期一或星期三,则循环不会完成,但它会在整个星期的剩余时间里一直写下去。我预计它会在 30 或 31 结束,month_days 可以具有的值。问题不在于那个变量,当我打印它时,它给了我一个正确的值(30 或 31,取决于月份) 循环结构可能会失败什么?
void imprimir_calendario (int mes, int anho, int month_days, int primer_dia_mes) {
int index = 1;
int printed_days= 1;
printf ("\n%d\n",month_days); /*test sentence returns 30 or 31 as it should*/
printf ("===========================\n");
printf ("== month & year ==\n");
printf ("===========================\n");
printf (" L M X J V S D\n");
while (printed_days < month_days) {
while (index<=7){
printf (" %2d ",printed_days);
printed_days++;
index++;}
index = 1;
printf ("\n");}
printf ("\n%d",printed_days);} /*TEST SENTENCE, RETURNS 35 OR 36*/
【问题讨论】:
-
如果您还没有使用调试器,现在是开始的好时机。在调试器中逐行执行代码,问题应该很明显。提示:需要更改内部循环条件。
-
提示:将 while() 循环重写为 for() 循环。
-
有问题。在 while 内用 if 条件解决它。感谢您的帮助。这很明显,但我看不到它。再次感谢您
标签: c loops while-loop