| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1109 人关注过本帖
标题:求教为什么加(int)
只看楼主 加入收藏
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:17 
求教为什么加(int)
输入一个不多于5位的正整数,求它是几位数,分别输出每一位数,按逆序输出各位数字。代码如下:

#include <stdio.h>

main()
{
  long x;
  int n;
  int wan,qian,bai,shi,ge;
  scanf("%ld",&x);
  while(x>99999||x<=0) {printf("error.\n");scanf("%ld",&x);}
  if(x>=10000) n=5;
  else if(x>=1000) n=4;
  else if(x>=100) n=3;
  else if(x>=10) n=2;
  else n=1;
  printf("n=%d\n",n);
  /*求几位数完成*/
  wan=x/10000;
  qian=(int)(x-wan*10000)/1000;
  bai=(int)(x-wan*10000-qian*1000)/100;
  shi=(int)(x-wan*10000-qian*1000-bai*100)/10;
  ge=(int)(x-wan*10000-qian*1000-bai*100-shi*10);    /* 这几句为什么前面要加int,不加就不对了?*/
  switch(n)
  {
   case 5:
     printf("every: %d %d %d %d %d\n",wan,qian,bai,shi,ge);
     printf("fan:%d%d%d%d%d",ge,shi,bai,qian,wan);break;
   case 4:
     printf("every: %d %d %d %d\n",qian,bai,shi,ge);
     printf("fan:%d%d%d%d",ge,shi,bai,qian);break;
   case 3:
     printf("every: %d %d %d\n",bai,shi,ge);
     printf("fan:%d%d%d\n",ge,shi,bai);break;
   case 2:
     printf("every: %d %d\n",shi,ge);
     printf("fan:%d%d\n",ge,shi);break;
   case 1:
     printf("every: %d\n",ge);
     printf("fan: %d\n",ge);
  }
  getch();
}
搜索更多相关主题的帖子: int 
2009-10-22 22:43
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:2 
(int)的作用是把后面表达式的结果强制转换为整型;
但楼主定义的变量都是整型的,所以即使不要(int),编译器也会自动转换为整型。

我可好玩啦...不信你玩玩^_^
2009-10-22 22:47
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 2楼 pgy
我用WIN-TC编译
去掉(int) 结果就不对了
2009-10-22 22:48
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:2 
那就不清楚了,在tc下不加也能运行
2009-10-22 23:04
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 4楼 m456m654
结果正确吗?

在TC++3.0英文版下编译,若去掉(int),结果也不对。
2009-10-22 23:14
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:10 
回复 5楼 zqb7899
qian=(x-wan*10000l)/1000;
bai=(x-wan*10000l-qian*1000)/100;
shi=(x-wan*10000l-qian*1000-bai*100)/10;
ge=(x-wan*10000l-qian*1000-bai*100-shi*10);   
/* 假如输入的是:87654,不加(int)的话,wan*10000会溢出整型范围,或在10000后多加个字母'l',几个语句都可以去掉(int),这样应该好理解了吧。*/

努力—前进—变老—退休—入土
2009-10-22 23:50
计少
Rank: 2
等 级:论坛游民
帖 子:27
专家分:24
注 册:2009-6-23
收藏
得分:2 
我不的不说一件事情。楼主你的程序在我的V6、win-tc、tc都运行正常!你去测试下你的int类型吧,是不是有溢出的可能?
2009-10-23 00:48
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 7楼 计少
现在运行是正常的
但是把(int)去掉就不正常了
2009-10-23 09:07
计少
Rank: 2
等 级:论坛游民
帖 子:27
专家分:24
注 册:2009-6-23
收藏
得分:0 
。。。。。。。。。

[ 本帖最后由 计少 于 2009-10-23 09:26 编辑 ]
2009-10-23 09:21
cjslaser2001
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2009-9-28
收藏
得分:0 
我把int去掉运行正常
2009-10-23 09:30
快速回复:求教为什么加(int)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026944 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved