1.首先关于这个程序是一个计算一年天数的程序,一开始由于scanf函数的错误,于是对每一行的代码进行了调试,发现错误问题在于scanf函数。
代码:如下
void Question4()
{
int array[]={31,28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int* p;
p= array;
int sum=0;
int day,month,year;
int result = 0;
printf("请输入年份月数和日期:\n");
scanf_s("%d %d %d", &year, &month, &day);
switch(month)
{
case 1: sum = 0; break;
case 2: sum = *p; break;
case 3: sum = *p+*(p+1); break;
case 4: sum = *p + *(p + 1)+*(p+2); break;
case 5: sum = *p + *(p + 1) + *(p + 2)+*(p+3); break;
case 6: sum = *p + *(p + 1) + *(p + 2) + *(p + 3)+*(p+4); break;
case 7: sum = *p + *(p + 1) + *(p + 2) + *(p + 3) + *(p + 4)+*(p+5); break;
case 8: sum = *p + *(p + 1) + *(p + 2) + *(p + 3) + *(p + 4) + *(p + 5)+*(p+6); break;
case 9: sum = *p + *(p + 1) + *(p + 2) + *(p + 3) + *(p + 4) + *(p + 5) + *(p + 6)+*(p+7); break;
case 10: sum = *p + *(p + 1) + *(p + 2) + *(p + 3) + *(p + 4) + *(p + 5) + *(p + 6) + *(p + 7)+*(p+8); break;
case 11: sum = *p + *(p + 1) + *(p + 2) + *(p + 3) + *(p + 4) + *(p + 5) + *(p + 6) + *(p + 7) +*(p + 8)+*(p+9); break;
case 12: sum = *p + *(p + 1) + *(p + 2) + *(p + 3) + *(p + 4) + *(p + 5) + *(p + 6) + *(p + 7) +*(p + 8) + *(p + 9)+*(p+10); break;
}
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
result = sum + day + 1;
else
result = sum + day;
printf("%d", result);
}
由于之前学习c语言的时候使用的是另一个编译器,我在写scanf的时候习惯在sancf格式化“%d”之间加上逗号,不会出现错误,但是vs编译器的scanf会出现错误。这里的正确做法就是每个“%d”之间加空格或者不加
使用逗号 结果:
使用空格或者不使用空格
|