1.计算两个正整数的最大公约数(函数的调用)
任务描述
编程计算两个正整数的最大公约数。其中求最大公约数的函数原型已经给出,请在主函数中编程调用函数,输出最大公约数。
程序的运行示例: 12,3↙
3
####函数原型说明 求最大公约数的函数原型如下: int MaxCommonFactor( int a, int b);
返回值:返回的是最大公约数;若输入的数据有任意一个不满足条件,返回值是-1
。 参数:a,
b是两个整型数
#include<stdio.h>
int MaxCommonFactor( int a, int b)
{
int c;
if(a<=0||b<=0)
return -1;
while(b!=0)
{
c=a%b;
a=b;
b=c;
}
return a;
}
int main(void)
{
/*********Begin*********/
int a;int b;
scanf("%d,%d",&a,&b);
a = MaxCommonFactor(a,b);
printf("%d\n",a);
/*********End**********/
return 0;
}
2.求和
任务描述
题目描述:给你一个n
,要求你编写一个函数求1+2+.......+n.
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充。
输入 输入一个n
输出 输出1+2+.......+n
的和
#include<stdio.h>
//编写函数
/*********Begin*********/
int total(int n){
int result=0;//头歌中int result 不会默认result=0
for(int i=1;i<=n;i++){
result = result + i;
}
return result;
}
/*********End**********/
int main(void)
{
/*********Begin*********/
int n;int result;
scanf("%d",&n);
result = total(n);
printf("%d",result);
/*********End**********/
return 0;
}
3.回文数计算
任务描述
本关任务:编写函数求区间[200,3000]
中所有的回文数,回文数是正读和反读都是一样的数。如525
, 1551
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充。 输入 无需输入
输出 输出区间[200,3000]
中所有的回文数,一行一个回文数,不需要输出其它无关的字符。
202
212
222
232
242
.....
#include<stdio.h>
void solve(){
/*********Begin*********/
int i=200;
int a,b,c,d;
for(i=200;i<1000;i++)
{
int n=i;
a = n%10;
b = ((n-a)%100)/10;
c = ((n-10*b-a)%1000)/100;
if(n==100*a+10*b+c) printf("%d\n",n) ;
}
for(i=1000;i<=3000;i++)
{
int n=i;
a = n%10;
b = ((n-a)%100)/10;
c = ((n-10*b-a)%1000)/100;
d = ((n-100*c-10*b-a)%10000)/1000;
if(n==1000*a+100*b+10*c+d) printf("%d\n",n) ;
}
/*********End**********/
}
int main(void)
{
solve();
return 0;
}
4.编写函数求表达式的值
任务描述
题目描述:有如下表达式 s = 1 + 1 / 3 + (1 * 2) / (3 * 5) + (1 * 2 * 3) / (3 * 5 * 7) + .... + (1 * 2 * 3 * .... * n) / (3 * 5 * 7 * ... * (2 * n + 1))
。
编写函数求给出的n所对应的表达式s的值。
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充。 输入
一个整数n
输出
输出表达式的值,保留小数点后10位的值。
#include<stdio.h>
//编写题目要求的函数
/*********Begin*********/
double mul(int n){
double result=1;double min=1;double mon=1;
for(int i=1;i<=n;i++)
{
min = min*i;
mon = mon*(2*i+1);
result = result+min/mon;
}
return result;
}
/*********End**********/
int main(void)
{
/*********Begin*********/
int n;double result=1;
scanf("%d",&n);
result = mul(n);
printf("%.10f",result);
/*********End**********/
return 0;
}
5.阶乘数列
任务描述
题目描述:求Sn=1!+2!+3!+4!+5!+…+n!
之值,其中n
是一个数字。
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充。 输入
一个整数n(1<=n<=20)
输出 输出表达式的值,占一行。
#include<stdio.h>
//编写函数
/*********Begin*********/
long long fac(int n)
{
long long mid=1;
long long result=0;
for(int i=1;i<=n;i++)
{
mid=mid*i;
result = result+mid;
}
return result;
}
/*********End**********/
int main(void)
{
/*********Begin*********/
int n;
scanf("%d",&n);
long long result = fac(n);
printf("%lld",result);//long long类型需要%lld
/*********End**********/
return 0;
}
6.亲密数(函数版)
任务描述
题目描述:两个不同的自然数A
和B
,如果整数A
的全部因子(包括1
,不包括A
本身)之和等于B
;且整数B的全部因子(包括1
,不包括B
本身)之和等于A
,则将整数A
和B
称为亲密数。求3000
以内的全部亲密数。
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充。 输入 无需输入 输出 3000
以内的全部亲密数(输出格式:(A
,B
),不加换行,不加分隔符号) 一对亲密数只输出一次,小的在前
#include<stdio.h>
void solve(){
/*********Begin*********/
int B,n,mid=0;
for(int A=1;A<=3000;A++)
{
if(A!=mid)//跳过已有B值
{
B =0;//置零
n =0;
for(int y=1;y<A;y++)
{
if(A%y==0)
{
B=B+y;
}
}
for(int i=1;i<B;i++)
{
if(B%i==0)
{
n=n+i;
}
}
if(A==n&&A!=B)
{
printf("(%d,%d)",A,B);
mid=B;//将已有B值记录
}
}
}
/*********End**********/
}
int main(void)
{
solve();
return 0;
}
7.公约公倍数
任务描述
题目描述:写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。
相关知识(略)
编程要求
请仔细阅读右侧代码,结合相关知识,在Begin-End
区域内进行代码补充,变量类型使用long long int
。 输入 两个正整数 输出 最大公约数 最小公倍数 如果输入的数中包含负数,则输出Input Error
#include<stdio.h>
//编写最大公约数GCD函数
/*********Begin*********/
long long GCD(long long m,long long n)
{
long long result=1;
for(int i=1;i<m;i++)
{
if(m%i==0&&n%i==0)
{
result=i;
}
}
return result;
}
/*********End**********/
//编写最小公倍数LCM函数
/*********Begin*********/
long long LCM(long long m,long long n)
{
long long result = (m*n)/GCD(m,n);
return result;
}
/*********End**********/
int main(void)
{
/*********Begin*********/
long long m,n;
scanf("%lld %lld",&m,&n);
if(m<0||n<0)
{
printf("Input Error");
}
else
{
printf("%lld %lld",GCD(m,n),LCM(m,n));
}
/*********End**********/
return 0;
}