C语言在VS2012中运行一闪而过

  • Post author:
  • Post category:其他


用vs2012来编写C语言,需要注意许多事情,如头文件、代码是否安全等许多事情。方便的就是vs2012可以提示编写错误出现在哪里,可以减轻一点工作量。下面通过约瑟夫问题的例子,来说明怎么解决C语言在VS2012中运行一闪而过的问题。

#include<stdio.h>
#include<windows.h>
int main()
{
	  // 假设k=3为报到计数单位量
    int i,k,m,n,num[50],*p;
    printf("输入人的数量:n=");
    scanf("%d",&n);
    p=num;
     
    for(i=0;i<n;i++)
        *(p+i)=i+1;//以1至n为序给每个人编号
    i=0;//i为每次循环时计数变量
    k=0;//k为按1,2,3报数时的计数变量
    m=0;//m为退出人数
    while (m<n-1)//当退出人数比n-1少时执行循环体
    {
        if(*(p+i)!=0) k++;
        if (k==3)
        {
            printf("出局人序号:%d\n",*(p+i));
			*(p+i)=0;//将退出的人的编号置为0
			k=0;//k报到3后,重置为0
			m++;//退出的人数+1
        }
        i++;
        if (i==n) i=0;//报数到尾后,i恢复为0
    }
    while (*p==0) p++;//如果p所指向的值等于0.那么就执行p++让它指向下一个元素,直到不为0.
    printf("最后留下的人的编号是:%d\n",*p);//经过上面的循环后,*p的指向的编号就是最后留下的人
    system("pause");
    return 1;
	
} 

按照这样编译时会提示,代码不安全,可以在属性的预处理器中,选择预处理定义里面。按照如下图添加_CRT_SECURE_NO_WARNINGS


这样就不会提示警告了。

添加window.h头文件,在主函数末尾添加

system(“pause”);



注意要在return语句前,return是用来结束函数,并返回值的。



版权声明:本文为poxiaosyb原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。