c语言中两种常见代码编写错误,“写入位置 0x00000000 时发生访问冲突”和“语法错误 : 缺少“;”(在“{”的前面)”

编程工作者在编程的时候,由于编程不够细心经常出现这样或那样的错误。今天,我在这里说下我所遇到的错误。

如下面这个代码就出现了文章标题中的俩个错误:

#define _CRT_SECURE_NO_DEPRECATE
#include
#include
#include
int is_prime(int m)
{
	int i = 0;
	for (i = 2; i <= sqrt(m); i++)
	if (m%i == 0)
	{
		return 0;
	}
	else
	{
		return 1;
	}
int main()
{
	int m=0 ;
	scanf("%d", m);
	int ret = is_prime( m);
	if (ret == 1)
	{
		printf("是素数\n");
	}
	else
	{
		printf("不是素数\n");
	}
	system("pause");
	return 0;
}

当你调试时就会出现这样的提示:


这是因为缺少大括号,即大括号不匹配,没有成对出现,当你在第16行是下面添加一个大括号时,进行运行程序,再随机输入一个数后,就会出现这样的情况:


c语言中两种常见代码编写错误,“写入位置 0x00000000 时发生访问冲突”和“语法错误 : 缺少“;”(在“{”的前面)”_第1张图片


这是由于在scanf("%d\n",m)中应在m前加一个&,即scanf("%d\n",&m),即取m的地址。当这俩个错误被修改后,程序就能正常执行了。下面为修改后的代码:


#define _CRT_SECURE_NO_DEPRECATE
#include
#include
#include
int is_prime(int m)
{
	int i = 0;
	for (i = 2; i <= sqrt(m); i++)
	if (m%i == 0)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}
int main()
{
	int m=0 ;
	scanf("%d",& m);
	int ret = is_prime( m);
	if (ret == 1)
	{
		printf("是素数\n");
	}
	else
	{
		printf("不是素数\n");
	}
	system("pause");
	return 0;
}

本人新手,如有错误,欢迎各位留言指正。

你可能感兴趣的:(C语言)