码蹄集网站地址:https://www.matiji.net/exam/ojquestionlist
(1)题目
格式
样例1
(2)参考代码
#include
#define N 20
int main()
{
double a[N], b[N], sum = 0;
int i;
a[0] = 1.0;
a[1] = 2.0;
b[0] = 2.0;
b[1] = 3.0;
for (i=2;i<N;i++)
{
a[i] = a[i-1] + a[i-2];
b[i] = b[i-1] + b[i-2];
}
//校验数据
// for (i=0;i
// {
// printf("%lf %lf\n", a[i], b[i]);
// }
for (i=0;i<N;i++)
{
sum = sum + (b[i] / a[i]);
}
printf("%.2lf", sum);
}
(1)题目
求等差数列前N项的级数之和。不考虑不合理的输入等特殊情况。
格式
输入格式:
输入N,首项M,差值K,整型,空格分隔。
输出格式:
输出整型
样例1
输入:
5 1 3
输出:
35
(2)参考代码
#include
int main()
{
int N, M, K;
scanf("%d %d %d", &N, &M, &K);
printf("%d\n", M * N + N * (N - 1) * K / 2);
return 0;
}
(1)题目
给定一系列数字3、10、21、36…,输入正整数N,输出上述序列的第N个值。从N=1开始计数。
格式
输入格式:
输入正整数N
输出格式:
输出整型
样例1
输入:
5
输出:
55
备注
N小于10000
(2)参考代码
#include
int main()
{
int N, num, i = 3;
scanf("%d", &N);
num = N * (i + 2 * (N - 1));
printf("%d\n", num);
}
(1)题目
求一个N*N棋盘中的方块总数。
格式
输入格式:
输入整型N
输出格式:
输出整型
样例1
输入:
2
输出:
5
备注
考虑到取值范围,可用long整型定义变量
(2)参考代码
#include
int main()
{
int N;
long count = 0;
scanf("%d", &N);
for (int i = 1;i<=N;i++)
{
count += (i * i);
}
printf("%ld", count);
return 0;
}
(1)题目
编写程序连续输入a1、a2、…、a5,计算下列表达式的值并输出。本题不考虑输入0,负数或者其他特殊情况。
格式
输入格式:
输入整型,空格分隔。
输出格式:
输出为实型
样例1
输入格式:
1 2 3 4 5
输出格式:
1.571429
(2)参考代码
#include
int main()
{
double a[5];
for (int i=0;i<5;i++)
{
scanf("%lf", &a[i]);
}
double num = a[4];
for (int i=3;i>=0;i--)
{
num = 1 + a[i] / num;
}
printf("%lf", num);
return 0;
}
格式
输入格式:
输入正整数a,b,空格分隔。
输出格式:
输出整型区间上下限,空格分隔。
样例1
输入:
2010 2011
输出:
18611 18621
备注
对于100%的数据:1<=n<=100,000,1<=a
(2)参考代码
#include
int main()
{
int a, b, n1, n2;
scanf("%d %d", &a, &b);
double sum = 0, num = 0;
for (int i=1;;i++)
{
num += (1.0 / (double)i);
sum += 1.0 / num;
if (a < sum)
{
n1 = i;
break;
}
}
for (int i=n1+1;;i++)
{
num += (1.0 / (double)i);
sum += 1.0 / num;
if (b <= sum)
{
n2 = i - 1;
break;
}
}
printf("%d %d", n1, n2);
return 0;
}
(1)题目
楼梯有N个台阶(N<=10),宝宝想爬到顶部。她一次可以爬1级或2级台阶。统计宝宝可以用多少种方式爬到达顶端。
格式
输入格式:
输入正整数N
输出格式:
输出整型
样例1
输入格式:
4
输出格式:
5
(2)参考代码
#include
int main()
{
int a[10] = {0, 1, 2};
int N;
scanf("%d", &N);
for (int i=3;i<=N;i++)
{
a[i] = a[i-1] + a[i-2];
}
printf("%d\n", a[N]);
return 0;
}
(1)题目
宝宝们一起抢N个糖果(N<=10),手快的宝宝可以抢到2个糖果,手慢的只能抢到一个糖果。统计糖果可以多少种方式被瓜分。
格式
输入格式:
输入正整数N
输出格式:
输出整型
样例1
输入:
4
输出:
5
(2)参考代码
(1)题目
N件家具(N<=10),力气大的一次可以搬2件,力气小的一次只能搬1件。统计家具可以用多少种方式搬完。
格式
输入格式:
输入正整数N
输出格式:
输出整型
样例1
输入格式:
4
输出格式:
5
(2)参考代码
**#include<stdio.h>
int main()
{
int N, a[100] = {0, 1, 2};
scanf("%d", &N);
for (int i=3;i<=N;i++)
{
a[i] = a[i-1] + a[i-2];
}
printf("%d", a[N]);
return 0;
}**
(1)题目
编写一个程序,使用以下公式计算PI的近似值PI=4(1-1/3+1/5-1/7+1/9…)。括号中的最后一项应小于十的负六次方。
格式
输入格式:
无
输出格式:
输出为实型,保留2位小数
样例1
输入:
无
输出:
3.14
(2)参考代码
#include
int main()
{
double x = 0, PI = 0;
for (int i = 1;;i += 2)
{
x = 1 / (double)i;
if (x < 1e-6)
{
break;
}
if (i % 4 == 3)
{
x = -x;
}
PI += x;
}
printf("%.2lf\n", 4 * PI);
return 0;
}
(1)题目
由近似公式: T/2=2/1 * 2/3* 4/3 * 4/56/56/7 *8/7 * 8/9…,求圆周率(精确到10的-6次方)。
格式
输入格式:
无
输出格式:
输出为实型,2位小数
样例1
输入格式:
无
输出格式:
3.14
(2)参考代码
#include
int main()
{
double num = 1;
for (double i=1;i<=1000000;i++)
{
if ((int)i % 2)
{
num *= ((i + 1) / i);
}
else
{
num *= (i / (i + 1));
}
}
printf("%.2lf", num * 2);
return 0;
}
(1)题目
请编写一个简单程序,求一个数的各位数字之和。比如输入123,输出1+2+3的和6.
格式
输入格式:
输入整型
输出格式:
输出整型
样例1
输入:
123
输出:
6
(2)参考代码
#include
int main()
{
int x, sum = 0;
scanf("%d", &x);
while (x)
{
sum += x % 10;
x /= 10;
}
printf("%d", sum);
return 0;
}
(1)题目
求一个自然数n中各位数字之和(n由用户输入)。不考虑负数等特殊情况。
格式
输入格式:
输入为整型
输出格式:
输出为整型
样例1
输入:
567
输出:
18
(2)参考代码
#include
int main()
{
int n, count = 0, sum = 0;
scanf("%d", &n);
int temp = n;
while (temp)
{
temp /= 10;
count++;
}
for (int i=0;i<count;i++)
{
sum += n % 10;
n /= 10;
}
printf("%d", sum);
return 0;
}
(1)题目
输入一个非负整数N,重复将其所有数字相加,直到结果只有一个数字,输出这个数字,输出最小列宽3列。
格式
输入格式:
输入整型
输出格式:
输出整型
样例1
输入:
89
输出:
8
(2)参考代码
#include
int main()
{
int N, sum;
scanf("%d", &N);
do{
sum = 0;
while (N)
{
sum += N % 10;
N /= 10;
}
N = sum;
}while (sum >= 10);
printf("%3d\n", sum);
return 0;
}
(1)题目
请编写一个简单程序,检查数字是否为回文。像12521,123321,这样的从左向右读和从右向左读是一样的数字是回文数字。
格式
输入格式:
输入整型
输出格式:
输出Y或N
样例1
输入格式:
12521
输出格式:
Y
(2)参考代码
#include
int main()
{
int n;
scanf("%d", &n);
int temp = n, N = 0;
while (temp)
{
N = (N * 10) + (temp % 10);
temp /= 10;
}
if (N == n)
{
printf("Y");
}
else
{
printf("N");
}
return 0;
}
(1)题目
输入正整数N,判断N的各位数字之和是否为回文数。(注:回文数是一个在反转时保持不变的数。比如121,7等。)不考虑不合理的输入等特殊情况。
格式
输入格式:
输入正整数N
输出格式:
输出YES或者NO
样例1
输入:
56
输出:
YES
备注
测试数据集输入数据包含长整型。
(2)参考代码
(1)题目
输入正整数N,输出N以内(含N),6的倍数,并且包含6的数字,比如36等。
格式
输入格式:
输入整型
输出格式:
输出整型,空格分隔
样例1
输入格式:
40
输出格式:
6 36
(2)参考代码
#include
int main()
{
int N;
scanf("%d", &N);
for (int i=1;i<=N;i++)
{
int temp = i, flag = 0;
while (temp)
{
if (temp % 10 == 6)
{
flag = 1;
}
temp /= 10;
}
if (flag == 1)
{
if (i % 6 == 0)
{
printf("%d ", i);
}
}
}
return 0;
}
(1)题目
输入正整数N,输出N以内(含N) 3的倍数,或者包含3的数字,比如13,32等。
格式
输入格式:
输入整型
输出格式:
输出整型,空格分隔。
样例1
输入格式:
20
输出格式:
3 6 9 12 13 15 18
(2)参考代码
#include
int main()
{
int N, temp, flag;
scanf("%d", &N);
for (int i=3;i<=N;i++)
{
temp = i;
flag = 0;
while (temp)
{
if (temp % 10 == 3)
{
printf("%d ", i);
flag = 1;
break;
}
temp /= 10;
}
if (flag == 0 && i % 3 == 0)
{
printf("%d ", i);
}
}
return 0;
}
(1)题目
请编写一个简单程序,判断自恋性数。如果一个正整数等于其各个数字的立方和,则称该数为自恋性数(亦称为阿姆斯特朗数)
格式
输入格式:
输入整型
输出格式:
输出Y或者N
样例1
输入:
407
输出:
Y
(2)参考代码
#include
#include
int main()
{
int x, temp, count = 0;
scanf("%d", &x);
temp = x;
while (temp)
{
count += pow(temp % 10, 3);
temp /= 10;
}
if (x == count)
{
printf("Y");
}
else
{
printf("N");
}
return 0;
}
(1)题目
请编写一个简单程序,输入正整数n,输出n以内自恋性数。如果一个正整数等于其各个数字的立方和,则称该数为自恋性数(亦称为阿姆斯特朗数)
格式
输入格式:
输入为整型
输出格式:
输出整型,空格分隔
样例1
输入格式:
500
输出格式:
1 153 370 371 407
(2)参考代码
#include
#include
int main()
{
int n, temp, num;
scanf("%d", &n);
for (int i=1;i<=n;i++)
{
temp = i;
num = 0;
while (temp)
{
num += pow((double)(temp % 10), 3.0);
temp /= 10;
}
if (num == i)
{
printf("%d ", i);
}
}
return 0;
}