0
点赞
收藏
分享

微信扫一扫

<错误总结>--关于vs编译器的scanf

书呆鱼 2022-03-11 阅读 86

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”之间加空格或者不加

使用逗号
在这里插入图片描述
结果:
在这里插入图片描述

使用空格或者不使用空格
在这里插入图片描述

举报

相关推荐

0 条评论