| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
Reworld,下班在家制作游戏,1500万奖金等你拿以码会友 以友辅仁
共有 339 人关注过本帖
标题:1022 D进制的A+B (20 分)
只看楼主 加入收藏
天马星空101
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-8-12
结帖率:0
  已结贴   问题点数:20  回复次数:8   
1022 D进制的A+B (20 分)
1022 D进制的A+B (20 分)

输入两个非负 10 进制整数 A 和 B (≤2
​30
​​−1),输出 A+B 的 D (1<D≤10)进制数。
输入格式:
输入在一行中依次给出 3 个整数 A、B 和 D。
输出格式:
输出 A+B 的 D 进制数。
输入样例:
123 456 8
输出样例:
1103


#include<stdio.h>
int main()
{
    int a,b,d;
    scanf("%d %d %d",&a,&b,&d);
    int sum=a+b;
    int t,count=1;

    while(sum>=count){
    //    i++;
        count*=d;
    }
    //i--;
    count=count/d;
   
    if(sum==0){
        printf("0");
    }else{
        while(count>0){
        t=sum/count;
        printf("%d",t);
        sum=sum%count;
        count/=d;
    }
    }
   
   

    return 0;
}

想问下大佬,我的这个程序哪里有问题,十分感谢
搜索更多相关主题的帖子: 进制 输出 int sum count 
2019-08-12 18:49
zbjzbj
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:40
帖 子:495
专家分:2469
注 册:2011-4-22
  得分:7 
附件: 您没有浏览附件的权限,请 登录注册
2019-08-12 19:01
zbjzbj
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:40
帖 子:495
专家分:2469
注 册:2011-4-22
  得分:0 
附件: 您没有浏览附件的权限,请 登录注册
2019-08-12 19:01
天马星空101
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-8-12
  得分:0 
答案有的对的到,但在pat上不完全正确
附件: 您没有浏览附件的权限,请 登录注册
2019-08-12 19:04
zbjzbj
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:40
帖 子:495
专家分:2469
注 册:2011-4-22
  得分:0 
两个非负 10 进制整数 A 和 B,声明变量无符号整形?
2019-08-12 22:27
H_M
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:60
注 册:2019-2-7
  得分:7 
回复 楼主 天马星空101
程序应该差不多,你可以将
int a,b,d;
scanf("%d %d %d",&a,&b,&d);
int sum=a+b;
int t,count=1;

变成这样
int a,b,d;
int sum=a+b;
int t,count=1;
scanf("%d %d %d",&a,&b,&d);


希望对你有所帮助

无思路要敲代码,无思路不敲代码
2019-08-13 00:46
天马星空101
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2019-8-12
  得分:0 
不行,不是这部分的错误
2019-08-13 07:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:322
帖 子:6626
专家分:38330
注 册:2011-1-18
  得分:7 
首先要给出链接:https://

    while(sum>=count){
    //    i++;
        count*=d;
    }
你不担心 count 溢出吗?不信,你改其类型为 long long 试试。

------------------------------------------------------
程序代码:
#include <stdio.h>

int main( void )
{
    unsigned a,b,d;
    scanf( "%u%u%u", &a, &b, &d );

    char buf[32] = { [31]='\0' };
    char* p = buf+30;
    if( a+b == 0 )
    {
        *--p = '0';
    }
    else
    {
        for( unsigned s=a+b; s>0; s/=d )
            *--p = s%d + '0';
    }
    puts( p );
}

2019-08-13 09:08
H_M
Rank: 2
等 级:论坛游民
威 望:1
帖 子:23
专家分:60
注 册:2019-2-7
  得分:0 
回复 8楼 rjsp
学到了,学到了

无思路要敲代码,无思路不敲代码
2019-08-13 10:41
快速回复:1022 D进制的A+B (20 分)
数据加载中...
 
   





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

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