c语言问题,请各位帮忙看看

[复制链接]
 楼主| zjgtan 发表于 2009-10-5 08:48 | 显示全部楼层 |阅读模式
#include<stdio.h>
void main()
{
int i,flag=0;
long s;
scanf("%ld",&s);
  for(i=2;i<s/2;i++)
   {
     if(s%i==0)
     flag=1;
   }
  printf("%d\n",flag);
  }
输入1310171
运行结果为何是divided error
想学ARM 发表于 2009-10-5 09:59 | 显示全部楼层
我觉得是数据类型的问题。
你用一个int 和 一个long 比大小,肯定会出错。
你把int i,flag=0; 改成 long  i,flag=0; 应该就行了
 楼主| zjgtan 发表于 2009-10-5 18:41 | 显示全部楼层
3q la
沉默寡言 发表于 2009-10-6 21:09 | 显示全部楼层
i,s的数据内型不一样的
消失在冬季 发表于 2009-10-6 22:17 | 显示全部楼层
我用VC6.0运行楼主的程序,结果为:0
我觉得定义long没什么错啊。不过我觉得有时会出些问题。例如当输入是“2”“3”“4”“5”等时,for(i=2;i<s/2;i++)本身就不符合,所以不进入循环,所以输出flag=0
dinghuanai920 发表于 2009-10-8 10:37 | 显示全部楼层
i 和s类型不匹配,而且不知道你的版本中如何处理INT的,如果是short的话,就超出INT范围了(按照你所输入的S)
hujiangdong 发表于 2009-10-9 17:06 | 显示全部楼层
数据类型不匹配
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

92

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

36

主题

92

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部