目录
写在前面
正文
第1关:求和
第2关:回文数计算
第3关: 编写函数求表达式的值
第4关:阶乘数列
第5关:亲密数
第6关:公约公倍数
写在最后
本文代码是我自己所作,本人水平有限,可能部分代码看着不够简练,运行效率不高,但都能运行成功。另外,如果想了解更多,请订阅专栏头歌C语言程序与设计
题目描述:给你一个
n
,要求你编写一个函数求1+2+.......+n.
样例输入:
100
样例输出:
5050
#include
//编写函数
/*********Begin*********/
void sum(int n)
{
int SUM=0;
int i=0;
for(i=1;i<=n;i++)
SUM+=i;
printf("%d",SUM);
}
/*********End**********/
int main(void)
{
/*********Begin*********/
int n;
scanf("%d",&n);
sum(n);
/*********End**********/
return 0;
}
本关任务:编写函数求区间
[200,3000]
中所有的回文数,回文数是正读和反读都是一样的数。如525
,1551
输入
无需输入
输出
输出区间
[200,3000]
中所有的回文数,一行一个回文数,不需要输出其它无关的字符。
202
212
222
232
242
.....
#include
void solve(){
/*********Begin*********/
int i=0;
for(i=200;i<3000;i++)
{
int a,b,c,d;
a=i/1000;//千位
b=(i-a*1000)/100;//百位
c=((i-a*1000)-b*100)/10;//十位
d=i%10;//个位
if(i<1000&&b==d)
printf("%d\n",i);
else if(i>=1000&&a==d&&b==c)
printf("%d\n",i);
}
/*********End**********/
}
int main(void)
{
solve();
return 0;
}
题目描述:有如下表达式
s = 1 + 1 / 3 + (1 * 2) / (3 * 5) + (1 * 2 * 3) / (3 * 5 * 7) + .... + (1 * 2 * 3 * .... * n) / (3 * 5 * 7 * ... * (2 * n + 1))
。样例输入:
4
样例输出:
1.5492063492
#include
//编写题目要求的函数
/*********Begin*********/
void s(int n)
{
int i=0;
double up=1,down=1,ret=0;
for(i=1;i<=n;i++)
{
up*=i;
down*=2*i+1;
ret+=up/down;
}
printf("%.10lf",ret+1);
}
/*********End**********/
int main(void)
{
/*********Begin*********/
int n;
scanf("%d",&n);
s(n);
/*********End**********/
return 0;
}
题目描述:求
Sn=1!+2!+3!+4!+5!+…+n!
之值,其中n
是一个数字。样例输入:
5
样例输出:
153
#include
//编写函数
/*********Begin*********/
long long S(int n)
{
if(n==1)
return 1;
else
return S(n-1)*n;
}
/*********End**********/
int main(void)
{
/*********Begin*********/
int n=0,i=0;
long long ret=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
ret+=S(i);
printf("%lld",ret);
/*********End**********/
return 0;
}
题目描述:两个不同的自然数
A
和B
,如果整数A
的全部因子(包括1
,不包括A
本身)之和等于B
;且整数B的全部因子(包括1
,不包括B
本身)之和等于A
,则将整数A
和B
称为亲密数。求3000
以内的全部亲密数。样例输出:
(220,284)(1184,1210)(2620,2924)
提示:按照亲密数定义,要判断数a是否有亲密数,只要计算出a的全部因子的累加和为
b
,再计算b
的全部因子的累加和为n
,若n
等于a
则可判定a
和b
是亲密数。
#include
void solve(){
/*********Begin*********/
int a,i,b=0,n=0;
for(a=1;a<=3000;a++)
{
b=0;
n=0;
for(i=1;i
题目描述:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。变量类型使用
long long int,
如果输入的数中包含负数,则输出Input Error
样例输入:
6 15
样例输出:
3 30
提示:
- 负数没有最大公约数和最小公倍数;
- 最大公约数和最小公倍数一定为正数,不可以为负数;
- 需要考虑代码运行效率,否则会评测超时。
#include
#define lli long long int
//编写最大公约数GCD函数
/*********Begin*********/
lli GCD(lli m,lli n)
{
lli t=0;
while(t=m%n)
{
m=n;
n=t;
}
printf("%lld ",n);
return n;
}
/*********End**********/
//编写最小公倍数LCM函数
/*********Begin*********/
void LCM(lli m,lli n,lli ret)
{
lli min=m*n/ret;
printf("%lld",min);
}
/*********End**********/
int main(void)
{
/*********Begin*********/
lli m=0,n=0,ret=0;
scanf("%lld%lld",&m,&n);
if(m<0||n<0)
printf("Input Error");
else if(m==n)
printf("%d %d",m,n);
else
{
if(m
点赞,你的认可是我创作的动力!
⭐收藏,你的青睐是我努力的方向!
✏️评论,你的意见是我进步的财富!