这是我写的一个打印菱形的代码,但是呢我发现在我的电脑上按Ctrl+F5执行的结果与F10一步步调试的结果不同,前者输出不符合预期,后者则正确,而在学校机房执行则两者都是正确的,请问为什么?又该如何解决?这是CtrlF5不符合预期的。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int main()
{
char k[]=" ";
char arr1[]=" ";
char arr2[]="*******************";
int len=strlen(arr1);
int left=0;
int right=len;
char* p=&arr1[len/2];
int i,j;
for(i=0;p+i<&arr1[len];i++)//打印行(指针写法)
{
*(p+i)=arr2[0];//准备要打印的行,即替换arr1中元素
*(p-i)=arr2[0];
printf("%s\n",arr1);
}
while(left<=right)//(下标写法)
{
arr1[left+1]=k[0];
arr1[right-1]=k[0];
printf("%s\n",arr1);
left+=1;
right-=1;
}
return 0;
}
这是F10正确的
只是 Ctrl+F5 的时候控制台显示得有问题而已,不是代码的问题。估计是 vs 自己的 bug。