编程题

    xiaoxiao2024-11-29  90

    本题要求实现一个计算整数因子和的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有完数。所谓完数就是该数恰好等于除自身外的因子之和。例如:6=1+2+3,其中1、2、3为6的因子。 函数接口定义:

    int factorsum( int number ); void PrintPN( int m, int n ); 其中函数factorsum须返回int number的因子和;函数PrintPN要逐行输出给定范围[m, n]内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + … + 因子k”,其中完数和因子均按递增顺序给出。如果给定区间内没有完数,则输出一行“No perfect number”。 裁判测试程序样例:

    #include <stdio.h>

    int factorsum( int number ); void PrintPN( int m, int n );

    int main() { int i, m, n;

    scanf("%d %d", &m, &n); if ( factorsum(m) == m ) printf("%d is a perfect number\n", m); if ( factorsum(n) == n ) printf("%d is a perfect number\n", n); PrintPN(m, n); return 0;

    }

    /* 你的代码将被嵌在这里 */ 输入样例1:

    1 30 输出样例1:

    1 is a perfect number 1 = 1 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14

    int factorsum( int number ){ int i=1,sum=0; if(number ==1 ){ return 1; } else { for(i=1;i<number;i++){ if(number%i == 0){ sum+=i; } } return sum; } } void PrintPN( int m, int n ){ int i,j,sum=0,flag=0,k,a,h; if(m==1){ printf("1 = 1\n"); } for(i=m;i<=n;i++){ sum=0; for(j=1;j<i;j++){ if(i%j ==0){ sum+=j; } } if(sum==i){ a=0; flag =1; printf("%d =",i);a=0; for(k=1;k<i;k++){ if(i%k==0){ a+=1; } }h=0; for(k=1;k<i;k++){ if(i%k==0){ h+=1; printf(" %d",k); if(h<a) printf(" +"); } }printf("\n"); } } if(flag ==0){ printf("No perfect number"); } }

    本题要求实现一个计算x ​n ​​ (n≥0)的函数。 函数接口定义:

    double mypow( double x, int n ); 函数mypow应返回x的n次幂的值。题目保证结果在双精度范围内。 裁判测试程序样例:

    #include <stdio.h>

    double mypow( double x, int n );

    int main() { double x; int n;

    scanf("%lf %d", &x, &n); printf("%f\n", mypow(x, n)); return 0;

    }

    /* 你的代码将被嵌在这里 */ 输入样例:

    0.24 4 输出样例:

    0.003318

    double mypow( double x, int n ){ int i; double a=x; if (n==0) return 1; else {for(i = 1;i<n;i++){ x*=a; } } return x; }

    编写函数计算Sn=a+aa+aaa+…+aa…a(最后一项为n个a)。 函数接口定义:

    int fun(int a,int n); 其中a和n是用户传入的参数,函数fun的功能是求a+aa+aaa+…+aa…a(最后一项为n个a)值并返回。 裁判测试程序样例:

    #include <stdio.h> int fun(int a,int n); int main() { int a,n; scanf("%d%d",&a,&n); printf("%d\n",fun(a,n)); return 0; }

    /* 请在这里填写答案 */ 输入样例:

    3 4 输出样例:

    3702

    int fun(int a,int n){ int sum=0,i,b,num=0; for(i=0;i<n;i++){ num=num*10+a; sum+=num; } return sum; }

    本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。 函数接口定义:

    int fib( int n ); void PrintFN( int m, int n ); 其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。如果给定区间内没有Fibonacci数,则输出一行“No Fibonacci number”。 裁判测试程序样例:

    #include <stdio.h>

    int fib( int n ); void PrintFN( int m, int n );

    int main() { int m, n, t;

    scanf("%d %d %d", &m, &n, &t); printf("fib(%d) = %d\n", t, fib(t)); PrintFN(m, n); return 0;

    }

    /* 你的代码将被嵌在这里 */ 输入样例1:

    20 100 7 输出样例1:

    fib(7) = 13 21 34 55 89

    int fib( int n ){ int a1=1,a2=1,a3,i; if(n ==1 ||n==2) return 1; else{ for(i=3;i<=n;i++){ a3=a1+a2; a1=a2; a2=a3; } } return a3; } void PrintFN( int m, int n ){ int a1=1,a2=1,a3,i,j=0,flag=0; int a[1000]; if(m ==1 && n==2) { printf(" 1 1 ");flag=3;} else if(m==2) printf("1 "); else if(m==1) printf("1 1 "); else{ for(i=3;i<=n;i++){ a3=a1+a2; a1=a2; a2=a3; if(a3>=m&&a3<=n){ a[j]=a3; flag=1; j++; } }if(flag==1){ for(i= 0;i<j-1;i++){ printf("%d ",a[i]); } printf("%d",a[i]);} if(flag == 0){ printf("No Fibonacci number"); } } }

    本题要求编写程序,根据公式C ​n ​m ​​ = ​m!(n−m)! ​ ​n! ​​ 算出从n个不同元素中取出m个元素(m≤n)的组合数。 建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。 输入格式:

    输入在一行中给出两个正整数m和n(m≤n),以空格分隔。 输出格式:

    按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。 输入样例:

    2 7 输出样例:

    result = 21

    #include<stdio.h> double fact( int n); int main(void) { int n,m; scanf("%d %d",&n,&m); double c,d,e; c = fact(n); d = fact(m-n); e = fact(m); int a; a = e/(c*d); printf("result = %d",a); } double fact( int n){ int i; double a=1; for(i=1;i<=n;i++){ a*=i; } return a; }

    未完待续

    最新回复(0)