为什么vc6上可以完美运行的代码到vs2015上编译可通过但不能达到预期效果?

SeasonJoe 2015-10-28 02:34:55
比如下面这段代码(忽略scanf函数等在vs2015上的支持问题),在vc6上可以完美运行,但在vs2015中输入一个数直接程序就结束(不是一闪没了,是无法输出预期的结果)
#include<stdio.h>
#include<string.h>

int main()
{
int i, ok, abc, de, x, y, z, count;
char s[20], buf[99];
//printf("%c\n", 999);?的ASCII码是999.
while(scanf("%s", s) == 1)
{
count = 0;
for(abc = 111; abc <= 999; abc++)
for(de = 11; de <= 99; de++)
{
x = abc*(de%10); //x存储与各位相乘的结果
y = abc*(de/10); //y存储与市十位相乘的结果
z = abc*de; //z存储最终结果
sprintf(buf, "%d%d%d%d%d", abc, de, x, y, z);
ok = 1;
for(i = 0; i < strlen(buf); i++)
if(strchr(s, buf[i]) == NULL)//如果在s中buf[i]不存在,ok置0
ok = 0;
if(ok)
{
printf("<%d>\n", ++count);
printf("%5d\nX%4d\n-----\n%5d\n%4d\n-----\n%5d\n\n", abc, de, x, y, z);
}
}
printf("The number of solutions = %d\n", count);
}
return 0;
}
...全文
1267 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
SeasonJoe 2015-10-30
  • 打赏
  • 举报
回复
都说了不是system("pause")的问题,怎么有这么多人还是回答这个,无语。 自己把问题解决了,还是vs2015的标准问题,为了不用scanf_s特意在工程属性里加了一行_CRT_SECURE_NO_DEPRECATE 结果问题就解决了。
「已注销」 2015-10-29
  • 打赏
  • 举报
回复
引用 5 楼 弓长羊羽的回复:
[quote=引用 4 楼 Ounce1 的回复:] VC6和VS2015的标准不同,举个简单的例子i=5,k=(i++)+(++i)+(++i)在VC中k=13,在VS2015里是15,他们采用的C语言标准不同,建议还是以VS2015为准,VC6太老了
这个问题与C标准无关~[/quote] 诶,那和什么有关?一直觉得是标准的问题,不过好像Dev运行的结果是14,反正我觉得以vs为准没错
bravery36 2015-10-29
  • 打赏
  • 举报
回复
引用 8 楼 Ounce1 的回复:
[quote=引用 5 楼 弓长羊羽的回复:][quote=引用 4 楼 Ounce1 的回复:]
VC6和VS2015的标准不同,举个简单的例子i=5,k=(i++)+(++i)+(++i)在VC中k=13,在VS2015里是15,他们采用的C语言标准不同,建议还是以VS2015为准,VC6太老了

这个问题与C标准无关~[/quote]
诶,那和什么有关?一直觉得是标准的问题,不过好像Dev运行的结果是14,反正我觉得以vs为准没错[/quote]
不管哪个都是错的,在你这么写的时候就注定了没有正确答案.
勤奋的小游侠 2015-10-28
  • 打赏
  • 举报
回复
Ctrl+F5 运行
mewiteor 2015-10-28
  • 打赏
  • 举报
回复
VS2015表示并没有什么问题
苏叔叔 2015-10-28
  • 打赏
  • 举报
回复
引用 4 楼 Ounce1 的回复:
VC6和VS2015的标准不同,举个简单的例子i=5,k=(i++)+(++i)+(++i)在VC中k=13,在VS2015里是15,他们采用的C语言标准不同,建议还是以VS2015为准,VC6太老了
这个问题与C标准无关~
「已注销」 2015-10-28
  • 打赏
  • 举报
回复
VC6和VS2015的标准不同,举个简单的例子i=5,k=(i++)+(++i)+(++i)在VC中k=13,在VS2015里是15,他们采用的C语言标准不同,建议还是以VS2015为准,VC6太老了
ssr奥利奥 2015-10-28
  • 打赏
  • 举报
回复
ctrl+f5运行
paschen 2015-10-28
  • 打赏
  • 举报
回复
Ctrl+F5 运行 或者最后加getchar(); 否则程序运行完竟然退出了
大大大白 2015-10-28
  • 打赏
  • 举报
回复
在return 0;前面加个 getchar() 或者system("pause")

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧