• 11.26实验课


    #include<stdio.h>
    #include<math.h>
    void solve(double a, double b, double c);
    int main(){
        double a, b, c;
        printf("Enter a,b,c:");
        while(scanf("%lf%lf%lf",&a, &b, &c)!=EOF){
        solve(a, b, c);
        printf("Enter a, b, c:");
        } 
        return 0 ;
    } 
    void solve(double a, double b, double c){
        double x1,x2;
        double delta, real, imag;
        if(a == 0){
            printf("not quadratic equation.
    ");
        } 
        else {
            delta = b * b - 4 * a* c;
        if(delta>= 0){
            x1 = (-b +sqrt(delta))/(a*2);
            x2 = (-b - sqrt(delta))/(a * 2);
            printf("x1 = %lf, x2 = %lf
    ",x1,x2);
        }
        else{
            real  = -b/(2*a);
            imag = sqrt(-delta) / (a * 2);
            printf("x1 = %f + %fi , x2 = %f - %fi
    ", real, imag, real);
            }
        }
    }

    #include<stdio.h>
    long long fac(int n);
    int main() {
        int  i,n;
        printf("Enter n:");
        scanf("%d",&n);
        for(i = 1;i<=n;++i)
        printf("%d! = %lld
    ", i ,fac(i));
        return 0;
    }
    long long fac(int n){
        static long long p = 1;
        printf("%d:",n);  
        p = p*n;
        return p;
    }

    在20 到22 之间加入输出p 的代码得到的结果

    #include<stdio.h>
    int func(int ,int );
    int main(){
        int k = 4,m = 1,p1, p2;
        p1 = func(k,m);
        p2 = func(k,m);
        printf("%d,%d
    ",p1,p2);//输出结果应为,8,17
        return 0; 
    }
    int func(int a, int b){
        static int m = 0,i = 2;
        i += m +1;
        m = i + a + b;
        return(m);
    }

    #include<stdio.h>
    #include<math.h>
    #define N 1000
    int fun(int n, int m, int bb[N]){
        int i,j,k = 0, flag;
        for(j = n; j <= m; j++){
            flag = 1;
            for(i = 2; i < j; i++)
            if(j%i==0){
                flag = 0;
                break;
            }
            if(flag!=0)
            bb[k++]=j;
        }
        return k;
    }
    int main(){
        int n = 0, m  = 0, i, k,bb[N];
        scanf("%d",&n);
        scanf("%d",&m);
        for(i = 0;i < m - n; i++){
            bb[i] = 0;
        }
        k = fun(n,m,bb); 
        for(i = 0; i < k; i++)
        printf("%4d", bb[i]);
        return 0;
        
        
    }

    #include<stdio.h>
    long long fun(int n);
    int main(){
        int n;
        long long int f;
        while(scanf("%d",&n)!=EOF){
            f = fun(n)-1;
            printf("n = %d, f = %lld
    ", n, f);
        }
        return 0;
    } 
    long long fun(int n){
        long long int f,t;
        if(n==1)
        f = 2;
        else{
        f = 2 * fun(n-1);    
        }
        return f;
    }

    #include<stdio.h>
    void print(int a,char b);
    int main(){
        int a;
        char b;
        while(scanf("%d %c",&a,&b)!=EOF){
            print(a,b);
        }
        return 0;
    } 
    void print(int a,char b){
        int d = a;
        for(;a>0;a--){
            int c = a-1;
            for(;c>0;c--)
            printf(" ");
            int e = 2*(d-a+1)-1;
            for(;e>0;e--)
            printf("%c",b);
            printf("
    ");
        }
    }

    实验一:因为二次函数的值经常有两个结果,所以无法用一个函数返回两个值,因此不能用返回值的方法。

    实验二:static变量在每次函数调动完会保存,并且保存的为上一次的值;

    实验四:1在原本设计算法的过程中,在定义fun函数时我选用了两个变量,t用递归计算2的n次方,f=t-1,最后返回f,但是因为我在这里运用了递归的思想,每一个t = 2 * fun(n-1)-1,中返回的都是f = 1所以导致结果不对,运用递归思想的时候一定要主要函数的返回值。

    2运用递归的思想,该方程应该是2*fun(n-1)+1,表达的是第n次移盘子的次数为将n-1个盘子从A移到B,再将n从A移到C,再将n-1从B移到C,但是这个想法不能实现老师给的2的n次方减一的式子,所以我用fun来计算2的n次方并返回,在main函数中对返回值-1达到该式子的效果。

  • 相关阅读:
    vs.net 2005, 没有找到MSVCR80D.dll的完美解决方案
    C++内存布局从一个修改私有变量的问题想到的
    堆栈详解
    加载.x文件
    深入分析规则引擎
    高级着色语言HLSL入门(5)
    字符数组,字符指针,Sizeof总结
    C++ 隐式和显式 初始化,类型转换
    fread()和fwrite()函数分析
    结构体 对齐的问题
  • 原文地址:https://www.cnblogs.com/2967271912lala/p/14045081.html
Copyright © 2020-2023  润新知