输入为一行。先输入第一个整数,空格输入运算符,然后再空格输入第二个整数,回车结束本次输入。 如果运算符为阶乘!符号,则不输入第二个整数,直接回车结束本次输入。
可能有多组测试数据,对于每组数据, 输出一行。输出对输入的两个(或一个)数,根据输入的运算符计算的结果,或者“error”。
12 + 34 54 - 25 3 * 6 45 / 0 5 ! 34 % 0
46 29 18 error 120 error
#include<iostream> using namespace std; int main(){ int a,b; char ch; while(cin>>a>>ch){ switch(ch){ case '+': cin>>b; cout<<a+b<<endl; break; case '-': cin>>b; cout<<a-b<<endl; break; case '*': cin>>b; cout<<a*b<<endl; break; case '/': cin>>b; if(b==0) cout<<"error"<<endl; else cout<<a/b<<endl; break; case '%': cin>>b; if(b==0) cout<<"error"<<endl; else cout<<a%b<<endl; break; case '!': int temp=1; for(int i=1;i<=a;i++) temp*=i; cout<<temp<<endl; break; } } }
from math import factorial as f
while True:
try:
a=input()
if a.endswith("!"):
print(f(int(a.rstrip("!"))))
elif "/" in a:
num1,num2=map(int,a.split("/"))
print(num1//num2 if num2!=0 else "error")
else:
try:
print(eval(a))
except:
print("error")
except:
break
#include<iostream> using namespace std; int fac(int a) { int res = 1; for(int i=1;i<=a;i++) res *=i; return res; } int main() { char op; int a,b; while(cin>>a>>op) { if(op!='!') cin>>b; if(op=='/'&&b==0){ cout<<"error"<<endl; continue; } if(op=='%'&&b==0){ cout<<"error"<<endl; continue; } int ans = 0; switch(op){ case '+':ans = a+b;break; case '-':ans = a-b;break; case '*':ans = a*b;break; case '/':ans = a/b;break; case '%':ans = a%b;break; case '!':ans = fac(a);break; } cout<<ans<<endl; } return 0; }
#include<stdio.h> int main() { int a,b;char c; while(scanf("%d %c",&a,&c)!=EOF)//中间要有空格 { if(c!='!') { scanf("%d",&b); switch(c) { case '+':printf("%d\n",a+b);break; case '-':printf("%d\n",a-b);break; case '*':printf("%d\n",a*b);break; case '/':if(b!=0) printf("%d",a/b); else printf("error\n"); break; case '%':if(b!=0) printf("%d\n",a%b); else printf("error\n"); break; } } else{ int s=1; for(int i=1;i<=a;i++) s*=i; printf("%d\n",s); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()){ int i = scanner.nextInt(); String s = scanner.next(); int j=0; if (!s.equals("!")){ j = scanner.nextInt(); } switch (s){ case "+": System.out.println(i+j);break; case "-": System.out.println(i-j);break; case "*": System.out.println(i*j);break; case "/": if (j==0) System.out.println("error"); else System.out.println(i/j); break; case "!": System.out.println(fun(i));break; case "%": if (j==0) System.out.println("error"); else System.out.println(i%j); break; } } } static int fun(int n){ int res=1; for (int i = 2; i <=n ; i++) { res=res*i; } return res; } }
#include <iostream> #include <cstdio> using namespace std; int F(int n){ int res=1; for(int i=2;i<=n;i++){ res*=i; } return res; } void calc(int a,char c,int b){ switch(c){ case '+':{ cout << a+b << endl; break; } case '-':{ cout << a-b << endl; break; } case '*':{ cout << a*b << endl; break; } case '/':{ cout << a/b << endl; break; } case '%':{ cout << a%b << endl; break; } case '!':{ cout << F(a) << endl; break; } } } int main(){ int a,b; char c; while(cin >> a){ getchar();///接收空格 c=getchar(); getchar(); if(c!='!'){ cin >> b; if(b==0){ cout << "error" << endl; }else{ calc(a,c,b); } }else{ calc(a,c,0); } } return 0; }安慰题
坑的是除法为整除
while True: try: string = input() if string.find('+') >= 0: temp = string.split('+') print(int(temp[0])+int(temp[1])) elif string.find('-') >= 0: temp = string.split('-') print(int(temp[0])-int(temp[1])) elif string.find('*') >= 0: temp = string.split('*') print(int(temp[0])*int(temp[1])) elif string.find('/') >= 0: temp = string.split('/') if int(temp[1]) == 0: print('error') else: print(int(temp[0])//int(temp[1])) elif string.find('%') >= 0: temp = string.split('%') if int(temp[1]) == 0: print('error') else: print(int(temp[0])%int(temp[1])) elif string.find('!') >= 0: temp = string.split('!') result = 1 for i in range(1,int(temp[0])+1): result *= i print(result) except Exception: break
#include<iostream> #include<cstdio> using namespace std; int main() { int a,b; char ch; while(cin >> a) { cin >> ch; switch(ch) { case '+': cin >> b; cout << a+b << endl; break; case '-': cin >> b; cout << a-b << endl; break; case '*': cin >> b; cout << a*b << endl; break; case '/': cin >> b; if(b == 0) { cout << "error" << endl; } else { cout << a/b << endl; } break; case '%': cin >> b; if(b == 0) { cout << "error" << endl; } else { cout << a%b << endl; } break; case '!': int sum = 1; for(int i = 1; i <= a; ++i) { sum *= i; } cout << sum << endl; break; } } return 0; }
#include<bits/stdc++.h>
int main(){
int a,b;
char c;
while(scanf("%d %c",&a,&c)!=EOF)
if(c!='!'){
scanf("%d",&b);
switch(c){
case '+':printf("%d\n",a+b);
break;
case '-':printf("%d\n",a-b);
break;
case '*':printf("%d\n",a*b);
break;
case '/':if(b!=0)
printf("%d\n",a/b);
else
printf("error\n");
break;
case '%':if(b!=0)
printf("%d\n",a%b);
else
printf("error\n");
break;
}
}
else{
int s=1;
for(int i=2;i<=a;i++)
s=s*i;
printf("%d\n",s);
}
}
#include<iostream> #include<algorithm> #include<string> using namespace std; int jiecheng(int n){ int res = 1; for(int i=1;i<=n;i++){ res = res * i; } return res; } int main(){ string express; while(1){ getline(cin,express); if(express=="") break; if(express[express.size()-1]=='!'){ string num = express.substr(0,express.find(' ')); int res = jiecheng(stoi(num)); printf("%d\n",res); }else{ string num1 = express.substr(0,express.find(' ')); express.erase(0,express.find(' ')+1); string num2 = express.substr(express.find(' ')+1,express.size()-express.find(' ')); if(express[0]=='+'){ printf("%d\n",stoi(num1)+stoi(num2)); }else if(express[0]=='-'){ printf("%d\n",stoi(num1)-stoi(num2)); }else if(express[0]=='/'){ if(stoi(num2)!=0) printf("%d\n",stoi(num1)/stoi(num2)); else printf("error\n"); }else if(express[0]=='*'){ printf("%d\n",stoi(num1)*stoi(num2)); }else if(express[0]=='%'){ if(stoi(num2)!=0) printf("%d\n",stoi(num1)%stoi(num2)); else printf("error\n"); } } } }
#include <iostream> #include <string> using namespace std; int factorial(int n){ if(n==1) return 1; if(n==0) return 1; return factorial(n-1)*n; } int main(){ string str; char buf[100]; while(fgets(buf,100,stdin) != NULL){ str = buf; str.pop_back(); string lhs, rhs; bool flag = false; char a; for(int i=0; i<str.size(); ++i){ if(str[i]>='0' && str[i] <= '9' && !flag){ lhs.push_back(str[i]); }else{ flag=true; } if(str[i]<'0'&&str[i]!=' ' || str[i]>'9' && str[i] != ' '){ a=str[i]; } if(str[i]>='0' && str[i] <= '9' && flag){ rhs.push_back(str[i]); } } switch (a) { case '+': cout << stoi(lhs) +stoi(rhs) << endl; break; case '-': cout << stoi(lhs) - stoi(rhs) << endl; break; case '*': cout << stoi(lhs) * stoi(rhs) << endl; break; case '/': if(stoi(rhs)!=0){ cout << stoi(lhs) / stoi(rhs) << endl; }else{ cout << "error" << endl; } break; case '!': cout << factorial(stoi(lhs)) << endl; break; case '%': if (stoi(rhs)!=0){ cout << stoi(lhs) % stoi(rhs) << endl; }else{ cout << "error" << endl; } break; default: break; } } }
#include <iostream> #include <string> using namespace std; int factorial(int n) { //求阶乘 return n <= 1 ? 1 : n * factorial(n - 1); } int main() { int num1, num2; string oprt; while (cin >> num1 >> oprt) { if (oprt == "!") { cout << factorial(num1) << endl; continue; } cin >> num2; if (num2 == 0 && (oprt == "/" || oprt == "%")) { cout << "error" << endl; continue; } switch (oprt[0]) { case '+': cout << num1 + num2 << endl; break; case '-': cout << num1 - num2 << endl; break; case '*': cout << num1* num2 << endl; break; case '/': cout << num1 / num2 << endl; break; default: //'%' cout << num1 % num2 << endl; } } return 0; }
#include <cstdio> long long int Factorial(int n){ if(n == 0){ return 1; }else{ return n*Factorial(n-1); } } int main(){ int a,c; char b; while(scanf("%d %c",&a,&b) != EOF){ if(b == '!'){ printf("%lld\n",Factorial(a)); }else{ scanf("%d",&c); switch(b){ case '+': printf("%d\n",a+c); break; case '-': printf("%d\n",a-c); break; case '*': printf("%d\n",a*c); break; case '/': if(c == 0){ printf("error\n"); }else{ printf("%d\n",a/c); } break; case '%': if(c == 0){ printf("error\n"); }else{ printf("%d\n",a%c); } break; } } } return 0; }
#include <iostream> #include <cstdio> #include <string> #include <cctype> using namespace std; int op(int a, int b, char n) { if (n == '+') { return a + b; } else if (n == '-') { return a - b; } else if (n == '*') { return a * b; } else if (n == '/') { if (b == 0) { return -99; } return a / b; } else if (n == '%') { if (b == 0) { return -99; } return a % b; } else { for(int i = a - 1; i > 0; i--) { a *= i; } return a; } } int main() { string str; while (getline(cin, str)) { if (str == "0") { break; } int index = 0; int a = 0; int b = 0; char oper = '0'; while (isdigit(str[index])) { a = a * 10 + (str[index] - '0'); index++; } index++; oper = str[index]; index += 2; if (oper == '!') { printf("%d\n", op(a, 0, oper)); continue; } while (isdigit(str[index]) && index < str.size()) { b = b * 10 + (str[index] - '0'); index++; } int result = op(a, b, oper); if (result == -99) { printf("error\n"); } else { printf("%d\n", result); } } return 0; }
#include<cstdio> #include<iostream> using namespace std; int Factorial(int n){ if(n == 1) return n; else return n*Factorial(n-1); } void cal(int a, char op, int b){ if(op == '+') cout << a+b << endl; else if(op == '-') cout << a-b << endl; else if(op == '*') cout << a*b << endl; else if(op == '!') cout << Factorial(a) << endl; else if(op == '/'){ if(b == 0) cout << "error" << endl; else cout << a/b << endl; } else if(op == '%'){ if(b == 0) cout << "error" << endl; else cout << a%b << endl; } } int main(){ int a, b; char op; while(cin >> a >> op){ if(op != '!') cin >> b; else b = 0; cal(a, op, b); } }
#include<stdio.h> int main() { int a; while (scanf("%d",&a)!=EOF) { getchar();//吸收空格 int i,b,t=0,c=1; char op; scanf("%c",&op); if(op=='!')//阶乘运算 { for(i=1;i<=a;i++) { c*=i; } } else scanf("%d",&b); //判断OP符号 switch(op) { case '+': { c=a+b; break; } case '-': { c=a-b; break; } case '*': { c=a*b; break; } case '/': { if(b==0) t=-1; else c=a/b; break; } case '%': { if(b==0) t=-1; else c=a%b; break; } } //输出 if(t==-1) printf("error\n"); else printf("%d\n",c); } return 0; }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s; while ((s = br.readLine()) != null) { String[] str = s.split(" "); if (str.length == 3) { int a = Integer.parseInt(str[0]); int b = Integer.parseInt(str[2]); if (str[1].equals("+")) { System.out.println(a + b); } else if (str[1].equals("-")) { System.out.println(a - b); } else if (str[1].equals("*")) { System.out.println(a * b); } else if (str[1].equals("/")) { if (str[2].equals("0")) System.out.println("error"); else System.out.println(a / b); } else if (str[1].equals("%")) { if (str[2].equals("0")) System.out.println("error"); else System.out.println(a % b); } } else if (str.length == 2 && str[1].equals("!")) { int x = Integer.parseInt(str[0]); int result = 1; for (int i = 1; i <= x; i++) { result = result * i; } System.out.println(result); } } } }