标题:求教教孩子吧,不会做了
只看楼主
帅的少年说
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2022-11-29
结帖率:0
已结贴  问题点数:20 回复次数:1 
求教教孩子吧,不会做了
题目描述
按照输入模式输出指定格式的计算结果:
计算方法包括+、-、*,计算过程遵循运算优先级。
数值表示方法包括O、D、H,分别表示有前缀八进制、十进制、有前缀十六进制。
输入说明
输入三行,三行分别为:
第一行为三个正整数a、b、c;(1<=a,b,c<=100)
第二行为两个计算方法字符;
第三行为四个最终输出的数值表示方法字符;
每行中的元素均以空格分隔

输入样例
44 82 92
+ *
D H O H
输出说明
输出一行,为模式计算结果
输出样例
44+0X52*0134=0X1DA4
搜索更多相关主题的帖子: 输入 输出 孩子 计算 表示 
2022-11-29 18:59
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
如果结果为负怎么处理?

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

int foo( int x, int y, char opt )
{
    switch( opt )
    {
    case '+': return x+y;
    case '-': return x-y;
    case '*': return x*y;
    }
    return 0;
}

int bar( int x,  char radix )
{
    if( x < 0 )
    {
        putchar( '-' );
        x = -x;
    }

    switch( radix )
    {
    case 'O': return printf( "%#o", x );
    case 'D': return printf( "%d", x );
    case 'H': return printf( "%#X", x );
    }
    return 0;
}

int main( void )
{
    int a, b, c;
    char d1, d2;
    char e1, e2, e3, e4;
    scanf( "%d%d%d %c %c %c %c %c %c", &a,&b,&c, &d1,&d2, &e1,&e2,&e3,&e4 );

    int result;
    if( d2 == '*' )
        result = foo( a, foo(b,c,d2), d1 );
    else
        result = foo( foo(a,b,d1), c, d2 );

    bar( a, e1 );
    putchar( d1 );
    bar( b, e2 );
    putchar( d2 );
    bar( c, e3 );
    putchar( '=' );
    bar( result, e4 );
}
2022-11-29 19:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-510814-1-1.html




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

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