| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1071 人关注过本帖
标题:【求助】int
只看楼主 加入收藏
写在人生边上
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-11-8
收藏
 问题点数:0 回复次数:9 
【求助】int
# include <stdio.h>
void main()
{
    int num;
    /* 下面定义的各变量,分别代表个位,十位,百位,千位,万位,十万位以及位数 */
    int indiv, ten, hundred, thousand;
    int ten_thousand, hundred_thousand, place;

    printf("请输入一个整数(0~999999):");
    scanf("%d", &num);

    /* 判断变量num的位数 */
    if(num > 99999)
        place = 6;
    else if(num > 9999)
        place = 5;
    else if(num > 999)
        place = 4;
    else if(num > 99)
        place = 3;
    else if(num > 9)
        place = 2;
    else
        place = 1;
    printf("place = %d\n", place);
    
    printf("每位数字为:");

    /* 求出num在各位上的值 */
    hundred_thousand = num/100000;
    ten_thousand = (num - hundred_thousand*100000)/10000;
    thousand = (num - hundred_thousand*100000 - ten_thousand*10000)/1000;
    hundred = (num - hundred_thousand*100000 - ten_thousand*10000
              - thousand*1000)/100;
    ten = (num - hundred_thousand*100000 - ten_thousand*10000
          - thousand*1000 - hundred*100)/10;
    indiv = num - hundred_thousand*100000 - ten_thousand*10000
            - thousand*1000 - hundred*100 - ten*10;

    /* 判断变量num的位数,并根据位数做出相应的输出 */
    switch(place)
    {
    case 1: printf("%d", indiv);
            printf("\n反序数字为:");
            printf("%d\n", indiv);
            break;
    case 2: printf("%d, %d", ten, indiv);
            printf("\n反序数字为:");
            printf("%d%d\n", indiv, ten);
            break;
    case 3: printf("%d, %d, %d", hundred, ten, indiv);
            printf("\n反序数字为:");
            printf("%d%d%d\n", indiv, ten, hundred);
            break;
    case 4: printf("%d, %d, %d, %d", thousand, hundred, ten, indiv);
            printf("\n反序数字为:");
            printf("%d%d%d%d\n", indiv, ten, hundred, thousand);
            break;
    case 5: printf("%d, %d, %d, %d, %d", ten_thousand, thousand,
                   hundred, ten, indiv);
            printf("\n反序数字为:");
            printf("%d%d%d%d%d\n", indiv, ten, hundred,
                    thousand, ten_thousand);
            break;
    case 6: printf("%d, %d, %d, %d, %d, %d", hundred_thousand,
                   ten_thousand, thousand, hundred, ten, indiv);
            printf("\n反序数字为:");
            printf("%d%d%d%d%d%d\n", indiv, ten, hundred, thousand,
                    ten_thousand, hundred_thousand);
            break;
    default: printf("Not find.\n");
             break;
    }
}
搜索更多相关主题的帖子: int 
2008-05-04 22:18
写在人生边上
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-11-8
收藏
得分:0 
我们都知道 ,int 型变量的范围是 -32767 - 32767 , 在TC 2.0 下 ,当输入    45678 ,TC下运行有误。

        但是在VC++ 6.0  下, 可以输出   45678     87654  ,这是为什么?

       难道  int 在 VC++ 6.0 下的范围不是  -32767 - 32767  
2008-05-04 22:22
windk
Rank: 1
来 自:北京联合大学
等 级:新手上路
帖 子:43
专家分:0
注 册:2008-5-4
收藏
得分:0 
恩~编译软件对范围的处理是不一样的~
在VC++ 6.0下默认的int 是无符号型的所以 0-65535
不知道解释的对不对

[[it] 本帖最后由 windk 于 2008-5-4 22:32 编辑 [/it]]
2008-05-04 22:30
smltq
Rank: 6Rank: 6
等 级:侠之大者
威 望:8
帖 子:566
专家分:400
注 册:2008-1-21
收藏
得分:0 
-32768~32767吧在TC下
2008-05-05 09:10
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
是这样的,在TC下,int类型是2个字节长度,也就是16bit,如果是有符号的话,最大范围就是-32768~32767了
在VC下,int类型是4个字节长度,也就是32bit,如果是有符号的话,范围是-2147483648~2147483647

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-05-05 09:19
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
收藏
得分:0 
你可以用sizeof运算符试一下看,在TC下,sizeof(int)=2 而在VC下sizeof(int)=4

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-05-05 09:20
mqh21364
Rank: 1
等 级:新手上路
帖 子:642
专家分:0
注 册:2008-2-28
收藏
得分:0 
还是极光有道理。不同的编译器会有不同的范围的。。。。

前不见古人,后不见来者。念天地之悠悠,独怆然而涕下。
2008-05-05 09:24
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
#include<cstdio>
int main()
{
    char c[100];
    int i=0;
    int len;
    while((c[i++]=getchar())!=10);
    len=i;i=0;
    while(putchar(c[len-i++])&&i<=len);
    return 0;
}

学习需要安静。。海盗要重新来过。。
2008-05-05 09:31
windk
Rank: 1
来 自:北京联合大学
等 级:新手上路
帖 子:43
专家分:0
注 册:2008-5-4
收藏
得分:0 
8楼的程序是干什么用的?
2008-05-05 20:12
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
恩~编译软件对范围的处理是不一样的~
在VC++ 6.0下默认的int 是无符号型的所以 0-65535
不知道解释的对不对

这解释真强悍……佩服………………

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-05 20:28
快速回复:【求助】int
数据加载中...
 
   



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

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