作者:毛毛-刘庆 | 来源:互联网 | 2023-10-11 05:54
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”之间加空格或者不加
使用逗号 结果:
使用空格或者不使用空格