| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1109 人关注过本帖
标题:求教为什么加(int)
取消只看楼主 加入收藏
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
求教为什么加(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
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 2楼 pgy
我用WIN-TC编译
去掉(int) 结果就不对了
2009-10-22 22:48
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 4楼 m456m654
结果正确吗?

在TC++3.0英文版下编译,若去掉(int),结果也不对。
2009-10-22 23:14
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 7楼 计少
现在运行是正常的
但是把(int)去掉就不正常了
2009-10-23 09:07
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
6楼正解
谢谢各位
2009-10-23 09:34
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 10楼 cjslaser2001
你用的是Visual C++ 6.0吧
谭浩强:“用不同的编译系统时,具体情况可能与表3-1有些差别,例如Visual C++ 6.0为整型数据分配4字节(32位),其取值范围为-2147483648——2147483647。”
2009-10-23 09:43
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
还有一事不明:
#include <stdio.h>
main()
{
  long x;
  long wan,qian,bai,shi,ge;
  scanf("%ld",&x);                         /* x输入98765 */
  while(x>99999||x<=0) {printf("error.\n");scanf("%ld",&x);}
  wan=x/10000;
  printf("%ld %ld\n",wan,wan*10000);       /* 输出9 90000,正确。 */
  printf("%d %ld\n",wan,wan*10000);        /* 为什么会输出9 1603272704 */
  printf("%ld %d\n",wan,wan*10000);        /* 为什么会输出9 24464 */
  getch();
}
2009-10-23 09:58
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 15楼 cjslaser2001

学习了
2009-10-23 10:25
zqb7899
Rank: 4
等 级:业余侠客
帖 子:159
专家分:238
注 册:2009-10-16
收藏
得分:0 
回复 14楼 zqb7899
奇怪
2009-10-23 20:00
快速回复:求教为什么加(int)
数据加载中...
 
   



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

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