| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2203 人关注过本帖
标题:数据类型的极值对运算的影响
取消只看楼主 加入收藏
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
结帖率:94.74%
收藏
已结贴  问题点数:100 回复次数:3 
数据类型的极值对运算的影响
     大家先看看这两个小程序,一个类型为 int ,而一个类型为 unsigned ,是进行求余和除运算. unsigned 型的可以 oj,而 int 型的为 wr ,请大家帮我解释一下是为什么呢?最好从底层讲解,谢谢大家哦.

code 1:

程序代码:
#include<stdio.h>
#include<stdlib.h>
int NumConvert(int m, int k)
{
    char *s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int a[100];
    int i;
    unsigned n;

    if(!m)
    {
        putchar('0');
        return 0;
    }
    if(m<0)
    {
        putchar('-');
        n*=-1;
    }
    n=abs(m);
    for(i=0;n;)
    {
        a[i++]=n%k;
        n/=k;
    }
    while(!a[--i])
        ;
    for(;i>=0;--i)
    {
        printf("%c",s[a[i]]);
    }

    return 0;
}


code 2:

程序代码:
#include<stdio.h>
#include<stdlib.h>
int NumConvert(int m, int k)
{
    char *s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int a[100];
    int i;
    int n;

    if(!m)
    {
        putchar('0');
        return 0;
    }
    if(m<0)
    {
        putchar('-');
        n*=-1;
    }
    n=abs(m);
    for(i=0;n;)
    {
        a[i++]=n%k;
        n/=k;
    }
    while(!a[--i])
        ;
    for(;i>=0;--i)
    {
        printf("%c",s[a[i]]);
    }

    return 0;
}
搜索更多相关主题的帖子: 运算 数据 类型 极值 
2010-01-23 18:27
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 8楼 iFreeBSD
    呵,对不起,是我的表述不太详细.其实这是一个 OJ 上的题目.题目中的条件是  n  的取值范围为 int 型.而当我把数据设为 int 时,就会 wr .

    我想,不应该是题目出的有错误吧?应该是极值在输入输出时可以,但进行运算可能就会出现错误.是这样吗?谢谢.
2010-01-24 01:36
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 11楼 zhddragon
对不起,这是个函数, n 值是从主函数中传过来的.但我这条语句属实有些画蛇添足了,因为下面有个 abs 了.这是在 oj 时左改右改时忘了.呵,谢谢提醒.

    能帮我解答一下为什么 int 型不可以过而 unsigned 可以过吗?谢谢.一会我把原题发过来.
2010-01-24 01:53
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
原题:


题目描述:
编写一个NumConvert函数,要求声明为int NumConvert(int n, int k);
功能是把传入的参数n按照k进制进行转换并输出结果

输入:
按参数传递,2<=k<=36,n在int的范围内

输出:
按参数传递输入,通过标准输出,输出相应的结果
输出的结果应当不包含换行
如果超出10,应当用大写字母依次表示
函数执行成功则应当返回0值

样例输入:
2 2
9 4
31 16
-31 16

样例输出:
10
21
1F
-1F

其它:
请不要写上main函数

2010-01-24 01:54
快速回复:数据类型的极值对运算的影响
数据加载中...
 
   



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

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