7-31 求奇数和
#include<stdio.h>
int isOdd(int n) {
return n % 2;
}
int main() {
int temp;
int sum = 0;
while (true) {
scanf("%d", &temp);
if (temp <= 0) {
break;
} else {
if (isOdd(temp)) {
sum += temp;
}
}
}
printf("%d\n", sum);
return 0;
}
7-32 求幂级数展开的部分和
#include<stdio.h>
#include<math.h>
double fact(double n) {
double sum = 1;
for (int i = 1; i <= n; i++) {
sum *= i;
}
return sum;
}
int main() {
double n;
scanf("%lf", &n);
double sum = 1;
int i = 1;
while (true) {
sum += pow(n, i) / fact(i);
if (pow(n, i) / fact(i) < 0.00001) break;
i++;
}
printf("%.4f", sum);
return 0;
}
7-33 求分数序列前N项和
#include<stdio.h>
int main() {
double sum = 0;
int n;
scanf("%d", &n);
double num1 = 2;
double num2 = 1;
for (int i = 0; i < n; i++) {
sum += num1 / num2;
double temp = num1;
num1 += num2;
num2 = temp;
}
printf("%.2f", sum);
return 0;
}
7-34 特殊a串数列求和
#include<stdio.h>
int main() {
int m, n;
scanf("%d %d", &m, &n);
double sum = 0;
int t = m;
for (int i = 0; i < n; i++) {
sum += t;
t = t * 10 + m;
// printf("%d\n", t);
}
printf("s = %.0lf", sum);
return 0;
}
7-35 换硬币
#include<stdio.h>
int main() {
int five = 0;
int two = 0;
int one = 0;
int sum = 0;
int n;
int cnt = 0;
scanf("%d", &n);
for (int i = n / 5; i > 0; i--) {
for (int j = n / 2; j > 0; j--) {
for (int k = n; k > 0; k--) {
if (i * 5 + j * 2 + k == n) {
five = i;
two = j;
one = k;
sum = i + j + k;
cnt++;
printf("fen5:%d, fen2:%d, fen1:%d, total:%d\n", five, two, one, sum);
}
}
}
}
printf("count = %d\n", cnt);
return 0;
}
7-36 水仙花数
#include<stdio.h>
int pow(int x, int n) {
int ans = 1;
for (int i = 0; i < n; i++) {
ans *= x;
}
return ans;
}
int Narcissistic(int num, int n) {
int cnt = 0;
int sum = 0;
int temp = num;
while (temp) {
cnt++;
int digit = temp % 10;
sum += pow(digit, n);
temp /= 10;
}
// printf("%d\n", sum);
return sum == num;
}
int main() {
int n;
scanf("%d", &n);
int min = pow(10, n - 1);
int max = pow(10, n);
for (int i = min; i < max; i++) {
if (Narcissistic(i, n)) {
printf("%d\n", i);
}
}
return 0;
}
7-37 最大公约数和最小公倍数
#include<stdio.h>
int getGCD(int a, int b) {
while (b) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
int main() {
int m, n;
scanf("%d %d", &m, &n);
printf("%d ", getGCD(m, n));
printf("%d\n", m * n / getGCD(m, n));
return 0;
}
7-38 高空坠球
#include<stdio.h>
int main() {
double h;
int time;
scanf("%lf", &h);
scanf("%d", &time);
double sum = 0;
double t = h;
for (int i = 0; i < time; i++) {
sum += h * 1.5;
h /= 2;
}
if (time == 0) {
printf("%.1f %.1f", 0.0, 0.0);
} else {
printf("%.1f %.1f", sum - h, h);
}
return 0;
}
7-39 打印菱形图案
#include<stdio.h>
int main() {
int n;
scanf("%d", &n);
int k = n / 2;
for (int i = 0; i < k; i++) {
for (int j = 0; j < k - i; j++) {
printf(" ");
}
for (int j = 0; j < 2 * i + 1; j++) {
printf("* ");
}
printf("\n");
}
int i = 0;
for (i = 0; i < k; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
for (int j = 0; j < n - 2 * i; j++) {
printf("* ");
}
printf("\n");
}
for (; i < k + 1; i++) {
for (int j = 0; j < i; j++) {
printf(" ");
}
for (int j = 0; j < n - 2 * i; j++) {
printf("* ");
}
}
return 0;
}
7-40 猴子吃桃问题
#include<stdio.h>
int main() {
int n;
scanf("%d", &n);
int base = 1;
for (int i = 0; i < n - 1; i++) {
base = (base + 1) * 2;
}
printf("%d\n", base);
return 0;
}