每日编程中遇到任何疑问、意见、建议请公众号留言或加入每日编程群聊739635399
给一个小学生都会算的 1 位数与 1 位数运算的代数式,请你求出这个表达式的值。
表达式仅含’+‘、’-‘、’*‘、’/‘四种运算,题目保证 0 不为除数。
输入格式:
表达式
输出格式:
表达式的值输入样例:
1+1
3*4
输出样例:
2
12
解决方法:
(1)算法的基本思想:
可参考:
每日一道编程题(343):227. 基本计算器II(天大上机铺垫)
(2)代码实现:
#include <iostream>
using namespace std;
float calculate(char a[])
{
char n1 = a[0];
char op = a[1];
char n2 = a[2];
if (op == '+')
return n1 + n2 - 2 * 48;
else if (op == '-')
return n1 - n2;
else if (op == '*')
return (n1 - '0') * (n2 - '0');
else
return (n1 - '0' - 0.0) / (n2 - '0'); //保证除法的正确性
}
int main()
{
//题目中只是给出了一位数与一位数的运算
cout << "输入表达式:";
char str[3];
cin >> str;
float result = calculate(str);
cout << result << endl;
system("pause");
return 0;
}
有一个研究团队,团队分成许多研究小组,每个小组的一部分成员可能再分成小组。小组的成员只知道自己的组长是谁,而在同一个组长领导下的成员之间却相互不认识。现在这个团队希望有一个程序能统计一下各组长带领小组的规模,即对每一个成员想知道自己及自己带领下的小组有多少人。
输入格式:
2行,第1行有1个数字N(0<N<2×105)(0<N<2×105),代表小组的人数
第2行有N个数a1,a2,...,ai,...,aN,表示第i个人的领导是ai。团队的领导用0表示,说明没有人做他的组长。数据保证没有环路。单独的一个成员视为1个人的小组。
输出格式:
1行,N个数字,表示第i名成员的团队的规模输入样例:
6
0 1 2 1 2 2
输出样例:
6 4 1 1 1 1