以下是引用voidx在2011-4-21 01:33:09的发言:
楼主有些题目不需要暴力的也暴力了,有的代码写的有点繁琐
//第一题明显是等差数列
#include
int main() {
int x;
printf("Give me a number bigger than 0: ");
scanf("%d", &x);
if (x > 0) {
printf("%d", (2 - x % 2 + x / 2 + x % 2 - 1) * (x / 2 + x % 2)); //一条语句搞定
} else {
printf("Wrong input, exit now.");
return 0;
}
// 键盘输入一个数给m,计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。
#include
int main() {
int m, n, i = 0;
scanf("%d", &m);
for (n = 1; i <= m; i += n, n++); //这样计算比较直观一点吧,这里不需要用等差数列求和公式的楼主倒是用了
printf("Max n in 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+……+n)<=m is %d\n", n - 1);
return 0;
}
//活动中有三门礼炮,各装有十枚炮弹。第一门礼炮每隔3秒发一枚炮弹,第二门每隔5秒、第三门每隔7秒发一枚炮。问观礼群众一共听到几声炮响。三门炮的第一发炮弹是同时发出的,同一时间发出炮声算一响。
#include
int main() {
int i, j, ans = 30;
for (i = 5, j = 7; i <= 50; i += 5, j += 7) {
ans -= (i % 3 == 0 && i < 30 ) + ((j % 3 == 0 && j <= 30) || (j % 5 == 0 && j <= 50)); //直接减掉听不到的炮声。
}
printf("%d\n", ans);
return 0;
}
//输出[m,n]范围内的所有斐波那契(Fibonacci)数,m,n这两个数由键盘输入。
#include
int main() {
int i, j, k, m, n;
printf("Please input m and n: ");
scanf(" %d %d", &m, &n);
for (i = 0, j = k = 1; k < m;) { // 找到范围内的第一项
k = i + j;
i = j;
j = k;
}
while (k <= n) { // printf() 范围内所有的项
printf("%d, ", k);
k = i + j;
i = j;
j = k;
}
printf("%c%c \n", 8, 8); // 最后可以通过 printf() 退格来删掉不想要的字符。楼主的代码为了控制格式可真是煞费苦心啊
return 0;
}
楼主有些题目不需要暴力的也暴力了,有的代码写的有点繁琐
//第一题明显是等差数列
#include
int main() {
int x;
printf("Give me a number bigger than 0: ");
scanf("%d", &x);
if (x > 0) {
printf("%d", (2 - x % 2 + x / 2 + x % 2 - 1) * (x / 2 + x % 2)); //一条语句搞定
} else {
printf("Wrong input, exit now.");
return 0;
}
// 键盘输入一个数给m,计算并返回满足表达式:1+(1+2)+(1+2+3)+(1+2+3+4)+……+(1+2+3+……+n)<=m最大的n。例如,当m=10000时,程序输出:n=38。
#include
int main() {
int m, n, i = 0;
scanf("%d", &m);
for (n = 1; i <= m; i += n, n++); //这样计算比较直观一点吧,这里不需要用等差数列求和公式的楼主倒是用了
printf("Max n in 1+(1+2)+(1+2+3)+(1+2+3+4)+...+(1+2+3+……+n)<=m is %d\n", n - 1);
return 0;
}
//活动中有三门礼炮,各装有十枚炮弹。第一门礼炮每隔3秒发一枚炮弹,第二门每隔5秒、第三门每隔7秒发一枚炮。问观礼群众一共听到几声炮响。三门炮的第一发炮弹是同时发出的,同一时间发出炮声算一响。
#include
int main() {
int i, j, ans = 30;
for (i = 5, j = 7; i <= 50; i += 5, j += 7) {
ans -= (i % 3 == 0 && i < 30 ) + ((j % 3 == 0 && j <= 30) || (j % 5 == 0 && j <= 50)); //直接减掉听不到的炮声。
}
printf("%d\n", ans);
return 0;
}
//输出[m,n]范围内的所有斐波那契(Fibonacci)数,m,n这两个数由键盘输入。
#include
int main() {
int i, j, k, m, n;
printf("Please input m and n: ");
scanf(" %d %d", &m, &n);
for (i = 0, j = k = 1; k < m;) { // 找到范围内的第一项
k = i + j;
i = j;
j = k;
}
while (k <= n) { // printf() 范围内所有的项
printf("%d, ", k);
k = i + j;
i = j;
j = k;
}
printf("%c%c \n", 8, 8); // 最后可以通过 printf() 退格来删掉不想要的字符。楼主的代码为了控制格式可真是煞费苦心啊
return 0;
}
认真学习中。。。