如果我的第二个输入是星期日,则日历只能正常工作。我如何使它实际上空间到正确的一天?有没有办法让代码更简单,更好,更少混淆,并使日历的格式看起来更好?
#include<stdio.h>
int main()
{
int i,number,startday;
//getting user input
printf("Enter Total Number of Day in the Month:",number);
scanf("%d", &number);
printf("Enter Starting Day of The Month (0-6 Sunday-Saturday):",startday);
scanf("%d", &startday);
//formatting
printf(" Sun Mon Tue Wed Thu Fri Sat \n");
printf("_______________________________________ \n");
//loop
for(i=1;i<=number;i++)
{
printf("%5d", i);
if(i == 7 || i == 14 || i == 21 || i == 28)
{
printf("\n");
printf("\n");
}
}
//formatting
printf("\n_______________________________________");
return 0;
}
答案 0 :(得分:3)
首先阅读并了解printf()
和scanf()
的真实格式
image from a journal。
你写道:
printf("Enter Total Number of Day in the Month:",number);
应该是:
printf("Enter Total Number of Day in the Month: ");
并且您的来源几乎没有变化:
#include <stdio.h>
int main(void)
{
int i, number, startday;
//getting user input
printf("Enter Total Number of Day in the Month: ");
scanf("%d", &number);
printf("Enter Starting Day of The Month (0-6 Sunday-Saturday): ");
scanf("%d", &startday);
//formatting
printf(" Sun Mon Tue Wed Thu Fri Sat\n");
printf("______________________________________\n");
///fill calendar with proper space " "
i=0;
while (i<startday){
printf("%5c", ' ');
i++;
}
for(i=1;i<=number;i++){
printf("%5d", i);
if((startday+i)%7==0){
printf("\n\n");
}
}
//formatting
printf("\n_______________________________________\n");
return 0;
}
此代码有效,但我建议您检查用户输入
在整数数据类型和真实范围内具有适当的格式
使用简单if (day < 28 || day > 31)
或if (startday < 0 || startday > 6)
,并检查每个scanf()
是否成功,如果不成功,可能会退出(带有消息)。