编写三个函数,分别完成如下任务:
函数一,计算整数a除以整数b的商的整数部分;
函数二,计算整数a除以整数b的余数;
函数三,用函数一和函数二完成分离整数各位的功能,对于输入的1~32767之间的整数,打印出一列数字,每个数字间空一个格。例如,输入:4562 输出:4 5 6 2
#include
#include
using namespace std;
int chu(int a, int b) {
return a / b;
}
int mod(int a, int b) {
return a % b;
}
string s;
int main() {
int a;
scanf ("%d", &a);
while (a) {
int t = mod(a, 10);
s += t + 48;
a = chu(a, 10);
}
for (int i = s.length() - 1; i > 0; i--)
printf ("%c ", s[i]);
printf ("%c\n", s[0]);
return 0;
}
用非递归函数,求Fibonacci数列第n项。键盘输入一个n,输出Fibonacci数列第n项的值。
3
2
#include
using namespace std;
int fibo(int n) {
if (n <= 2) return 1;
int fir = 1;
int sec = 1;
int num = 0;
for (int i = 3; i <= n; i++) {
num = fir + sec;
fir = sec;
sec = num;
}
return num;
}
int main() {
int n;
scanf ("%d", &n);
printf ("%d\n", fibo(n));
return 0;
}
编写程序计算排列,排列的公式P(n,m)=n!/(n-m)!,其中n>=m。请使用两个函数分别实现计算阶乘和计算排列。键盘输入n和m的值,输出它们的排列值。
4 3
24
#include
using namespace std;
int eval(int n, int m) {
int k = n - m;
int a = 1, b = 1;
for (int i = k + 1; i <= n; i++) a *= i;
// for (int i = 1; i <= k; i++) b *= i;
return a;
}
int main() {
int a, b;
scanf ("%d %d", &a, &b);
printf ("%d\n", eval(a, b));
return 0;
}
有10个小朋友围成一圈分糖果,老师顺次分给每人一定数量糖果(初始值为偶数)然后按照下列规则调整,所有小朋友同时把自己的糖果分一半给右边的人,糖果数变为奇数的人,向老师补要一块糖果,问经过多少次调整后,大家糖果数一样多,且每人多少块。建立两个函数,一个负责传递糖果,一个负责判断所有人的糖果是否相等。
12 2 8 22 16 4 10 6 14 20
16 18
模拟就完事了。
#include
using namespace std;
int a[10];
int check() {
for (int i = 1; i < 10; i++)
if (a[i] != a[i - 1]) return 0;
return 1;
}
int tot;
void work() {
int b[10] = {0};
for (int i = 0; i < 10; i++) {
a[i] /= 2;
int num = a[i];
int pos = (i + 1) % 10;
b[pos] += num;
} tot++;
for (int i = 0; i < 10; i++) a[i] += b[i];
for (int i = 0; i < 10; i++) if (a[i] % 2) a[i]++;
//for (int i = 0; i < 10; i++) printf ("%d ", a[i]);
//printf ("\n");
}
void print() {
printf ("%d %d\n", tot, a[0]);
}
int main() {
for (int i = 0; i < 10; i++)
scanf ("%d", &a[i]);
while (!check()) work();
//for (int i = 0; !check(); i++, i %= 10) work()
print(); return 0;
}
编写函数,把华氏温度F(double型)转换为摄氏温度C(double型),公式为C=(F-32)/1.8。键盘输入一个华氏温度,可以得到相应的摄氏温度。
32
0
#include
#include
using namespace std;
double eval(double a) {
return (a - 32) / 1.8;
}
int main() {
double f;
scanf ("%lf", &f);
//printf ("%lf", eval(f));
cout << eval(f) << endl;
return 0;
}
歌手大奖赛共有10位评委,为每位选手打分(double型)。预赛部分歌手的分数,为去掉1个最高分、1个最低分后其余8个分数的平均值;决赛部分歌手的分数,为去掉2个最高分、2个最低分后其余6个分数的平均值。通过键盘输入10位评委的打分,以及当前处于哪个阶段(预赛部分用1表示,决赛部分用2表示)。主函数中,只负责输入数据、调用分数计算函数、输出结果,评分计算部分编写独立函数完成。
98.5 88 90 93 94 90.4 89 92 88.6 97 2
91.4
#include
#include
#include
using namespace std;
double a[10], tot;
void print(int flag) {
sort(a, a + 10);
if (flag == 1)
cout << (tot - a[0] - a[9]) / 8 << endl;
if (flag == 2)
cout << (tot - a[0] - a[9] - a[1] - a[8]) / 6 << endl;
}
int flag;
int main() {
for (int i = 0; i < 10; i++) {
scanf ("%lf", &a[i]); tot += a[i];
}
scanf ("%d", &flag);
print(flag);
return 0;
}