首页 > ACM题库 > 九度OJ > 九度-1116-加减乘除[解题代码]
2013
12-12

九度-1116-加减乘除[解题代码]

题目来源:2008年北京大学图形实验室计算机研究生机试真题

题目描述:

根据输入的运算符对输入的整数进行简单的整数运算。
运算符只会是加+、减-、乘*、除/、求余%、阶乘!六个运算符之一。
输出运算的结果,如果出现除数为零,则输出“error”,如果求余运算的第二个运算数为0,也输出“error”。

输入:

输入为一行。先输入第一个整数,空格输入运算符,然后再空格输入第二个整数,回车结束本次输入。
如果运算符为阶乘!符号,则不输入第二个整数,直接回车结束本次输入。

输出:

可能有多组测试数据,对于每组数据,
输出一行。输出对输入的两个(或一个)数,根据输入的运算符计算的结果,或者“error”。

样例输入:
12 + 34
54 - 25
3 * 6
45 / 0
5 !
34 % 0
样例输出:
46
29
18
error
120
error
提示:

运算不会超出整型数据的范围。0!=1; 测试数据有多组。


cpp 代码如下:
#include <iostream>
#include <cstdio>
using namespace std;

int a, b;
char c;

int GetFact(int n)
{
    int ans = 1;
    for (int i=1; i<=n; i++)
    {
        ans *= i;
    }
    return ans;
}

int main()
{
    while (scanf("%d %c", &a, &c) != EOF)
    {
        if (c != '!')
        {
            scanf("%d", &b);
            if ( c == '+')
            {
                cout << a + b << endl;
            }
            else if (c == '-')
            {
                cout << a - b << endl;
            }
            else if (c == '*')
            {
                cout << a * b << endl;
            }
            else if (c == '/')
            {
                (b == 0)? cout << "error" << endl :  cout << a / b << endl;
            }
            else if (c == '%')
            {
                (b == 0)? cout << "error" << endl : cout << a % b << endl;
            }
        }
        else
        {
            // 阶乘
            cout << GetFact(a) << endl;
        }
    }
    return 0;
}
/**************************************************************
	Problem: 1116
	User: coder
	Language: C++
	Result: Accepted
	Time:140 ms
	Memory:1520 kb
****************************************************************/


  1. “再把所有不和该节点相邻的节点着相同的颜色”,程序中没有进行不和该节点相邻的其他节点是否相邻进行判断。再说求出来的也不一样是颜色数最少的

  2. 站长,你好!
    你创办的的网站非常好,为我们学习算法练习编程提供了一个很好的平台,我想给你提个小建议,就是要能把每道题目的难度标出来就好了,这样我们学习起来会有一个循序渐进的过程!