- 猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?
int main() {
int i = 1, sum = 1;
while (i <= 10) {
sum = (sum + 1) * 2;
i++;
}
printf("第一天共摘了%d个桃子", sum);
return 0;
}
- 一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,第n个月有多少只兔子?(其实还是斐波那契)
int feed(int n) {
if (n == 1 || n == 2) {
return 2;
} else {
return feed(n - 1) + feed(n - 2);
}
}
int main() {
int n;
while(scanf("%d", &n) != EOF) {
int ans = feed(n);
printf("第%d月共有%d只兔子\n", n, ans);
}
return 0;
}
- 将一个正整数分解质因数。例如:输入90,打印出90=233*5。
void getPri(int n, int m) {
if (n == 1) {
return;
}
for (int i = 2; i <= n / 2; i++) {
//如果当前因数是质数
if (m % i == 0) {
//如果m等于i,则分解完成
if (m / i == 1) {
printf("%d\n", i);
} else {
printf("%d *", i);
}
//递归分解
getPri(n, m / i);
break;
}
}
}
int main() {
int n;
while(scanf("%d", &n) != EOF) {
getPri(n, n);
}
return 0;
}
- 输入一个整数,再从输入的一组数中找出输入的整数出现的次数和位置。
int main() {
int n, i = 0, num, ans[10010], time = 0;
char c;
while (scanf("%d", &n) != EOF) {
int t = 0;
while(1) {
scanf("%d", &num);
if (num == n) {
ans[i] = t;
time++;
i++;
}
t++;
c = getchar();
if (c == '\n') {
break;
}
}
printf("%d在数组中出现了%d次,它是数组中的", n, time);
for (int i = 0; i < time; i++) {
printf("第%d个 ", ans[i] + 1);
}
printf("\n");
}
return 0;
}
- 给一个数,若该数的相邻数都不相同,则称该数为不重复数(如110为重复数,101为不重复数)。输入n,编程实现比n大的最小不重复数。
bool repeatNum(int n) {
int str[20];
int t = 0;
while (n > 0) {
str[t] = n % 10;
n = n / 10;
t++;
}
for (int i = 0; i < t; i++) {
for (int j = 0; j < t - i - 1; j++) {
if (str[j] == str[j + 1]) {
return false;
}
}
}
return true;
}
int main() {
int n;
while(scanf("%d", &n) != EOF) {
n++;
bool flag = repeatNum(n);
while (!flag) {
n++;
flag = repeatNum(n);
}
if (n >= 100000) {
printf("error!");
} else {
printf("%d\n", n);
}
}
return 0;
}
网友评论