用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 版权协议,转载请附上原文出处链接和本声明。