栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

21Winter C语言 函数上机报告

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

21Winter C语言 函数上机报告

C语言程序设计 第七章实验报告 expr1

已知求Sn的公式:

S n = ∑ i = 1 n i S_{n} = sum _{i=1}^{n}i Sn​=i=1∑n​i
想要求出Sn从1到20的值

#include
int psum(int n){
    int ans = 0;
    for(int i=0;i<=n;i++)
        ans+= i;
    return ans;
}
int main(){
    int m;
    scanf("%d",&m);
    for(int i=1;i<=20;i++){
    printf("%-5d",psum(i));
    if(!(i%4)) putchar('n');
    }
    return 0;
}
expr2

使用基于指针进行双向地址传递的函数来同时返回一个数组之中的最大值和最小值

#include
#include
#include
void max_min(double *num, double *max, double *min){
    int n;
    for(n =1; n<10; n++){
        if(num[n]>*max)
            *max = num[n];
        if(num[n]<*min)
            *min = num[n];
    }
}
int main(){
    double *k = (double*)malloc(sizeof(double)*10);
    double max=0.00, min=0.00;
    srand((unsigned)time(NULL));
    for(int i=0;i<10;i++){
        k[i]= (rand()%1000)/77.0000;
        printf("%-8.3f",k[i]);
    }
    min = k[0]; 
    putchar('n');
    max_min(k,&max,&min);
    printf("%ft%f",max,min);
    return 0;
}

Line16 Line 18 使用当前的时间戳作为随机种子生成随机数。

(rand()%1000)/77.0000;

生成了伪随机的浮点数(因为rand生成的是随机整数)

需要注意的是,这个函数可以进行进一步的优化。在function之中就应该说明**min = k[0]; **而不是在main函数里面才说。

没有21行的话会导致输出min0.0000

考虑数据范围!!

expr3

判断一个数是不是“回归数”,即满足:
a n s = ∑ i = 0 n − 1 x i n a n s = ∑ j = 1 n − 1 1 0 j ∗ x j ans = sum ^{n-1}_{i = 0} x_{i}^{n} \ ans = sum_{j = 1}^{n-1} 10^{j} * x_{j} ans=i=0∑n−1​xin​ans=j=1∑n−1​10j∗xj​

#include
#include
int regress(int m){
    int temp = m, ans = 1,sum=0;
    while(temp/=10) ans++;
    temp = m;
    for(;temp;temp/=10)
        sum+= pow(temp%10,ans);
    if(sum == m) return 1;
    else return 0;
    
}
int main(){
    for(int i=100;i<1000;i++){
        if(regress(i))printf("%-5d",i);
    }
    return 0;
}

regress先通过while循环来实现判断一个数字的长度,然后判断一个数是否为回归数。

expr4

使用递归来实现求组合数

#include
int Combi(int n, int m){
    if(n>m/2) return Combi(m-n,m);
    else if(n == 1) return m;
    else if(n == 0) return 1;
    else
        return Combi(n,m-1)+ Combi(n-1,m-1);
}
int main(){
    int n,m;
    scanf("%d,%d",&n,&m);
    printf("%d",Combi(n,m));
    return 0;
}

C m n = { C m 0 = 1 , n = 0 ; C m 1 = m , n = 1 ; C m n = C m m − n , n > m 2 ; C m n = C m − 1 n + C m − 1 n − 1 ; C_{m}^{n}=left{ begin{array}{rcl} C^{0}_{m} = 1, n=0;\ C^{1}_{m} = m,n =1;\ C^{n}_{m} = C^{m-n}_{m}, n>frac{m}{2};\ C^{n}_{m} = C^{n}_{m-1} + C^{n-1}_{m-1}; end{array} right. Cmn​=⎩⎪⎪⎨⎪⎪⎧​Cm0​=1,n=0;Cm1​=m,n=1;Cmn​=Cmm−n​,n>2m​;Cmn​=Cm−1n​+Cm−1n−1​;​

expr5
#include
#define square(x) (x*x)
int main(){
    printf("%d",square(6)/square(3));
    return 0;
}

主函数: expr6.c

#include
#include"myfun.c"
int main(){
    int m;
    scanf("%d",&m);
    fun(m);
    return 0;
}

分解质因数的函数: myfun.c

void fun(int m){
    int i = 2;
    printf("%d = 1",m);
    while(m>1){
        if(m%i==0){
            m/=i;
            printf("*%d",i);
        }
        else i++; 
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676633.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号