• 综合练习三


    问题 A: 解一元二次方程

    解一元二次方程是初中数学必须掌握的一个重点。在不考虑虚数的情况下,一个一元二次方程的解有三种情况:有两个不同的解、有两个相同的解以及无解。

    本题需要你通过编程来解一元二次方程ax2+bx+c=0的根。

    输入要求

    输入数据有若干行,每行包含一元二次方程的三个系数,依次为二次项系数、一次项系数以及常数。系数a为0输出出错信息(Error!),三个系数同时为0时输入结束,该组数据不做处理。

    输出要求

    当一元二次方程有两个不同的解时,先输出较大的解,再输出较小的解,如:

    x1=2.000000

    x2=1.000000

    当一元二次方程有两个相同的解时,两个解一起输出,如:

    x1=x2=1.000000

    当一元二次方程无解时,输出”No solution!”(忽略双引号)。

    结果保留6位小数。

    假如输入

    1 -2 1
    3 2 1
    2 3 1
    0 2 1
    0 0 0
    

    应当输出

    x1=x2=1.000000
    No solution!
    x1=-0.500000
    x2=-1.000000
    Error!
    #include<stdio.h> 
    #include<math.h> 
    int main(void) 
    { 
        int a,b,c; 
        while(1) 
        { 
            double x1,x2,delta,t; 
            scanf("%d %d %d",&a,&b,&c); 
            delta=b*b-4*a*c; 
            x1=(-b+sqrt(delta))/(2*a); 
            x2=(-b-sqrt(delta))/(2*a); 
            if(a!=0){ 
                if(delta>0) {
                    if(x1>x2){
                    printf("x1=%.6f
    ",x1); 
                    printf("x2=%.6f
    ",x2);
                    }
                    else{
                        t=x2;x2=x1;x1=t; 
                        printf("x1=%.6f
    ",x1); 
                        printf("x2=%.6f
    ",x2);
                    }
                }
                else if(delta==0) 
                    printf("x1=x2=%.6f
    ",x1); 
                else
                    printf("No solution!
    ");
            } 
            else if(a==0 && b!=0||c!=0){ 
                printf("Error!
    "); 
            } 
            if(a==0 && b==0 && c==0) 
                break; 
        } 
       
        return 0; 
    } 

    问题 B: 计算π

    题目描述

    用下面公式求π的近似值。π/41-1/3+1/5-1/7+…直到最后一项的绝对值小于10-n次方为止(绝对值小于10-n次方的这项不计算在内)。

     

    输入要求

    输入若干组精度要求n(3<=n<=8),n=0时退出,n超出范围输出“Error!”。

     

    输出要求

    输出各组不同精度要求的值。

     

    假如输入

    7
    0
    

    应当输出

    3.141592
    #include<stdio.h>  
    #include<math.h>  
    int main(void)  
    { 
        int n; 
        double pi=0,a=1,b=1; 
        while(1){ 
            scanf("%d",&n); 
            if(n>=3 && n<=8){ 
                while(fabs(a/b)>=pow(10,-n)){ 
                    pi+=a/b; 
                    b+=2; 
                    a=-a; 
                } 
                printf("%lf
    ",pi*4); 
            } 
            else if(n!=0)  
                printf("Error!
    ");  
            else
                break;  
        }  
             
        return 0;  
    }  
    
    
    
    
    

    问题 C: 求矩阵中的最大元素

    有一个M×N的矩阵,各数据元素均为整形数,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号,同一矩阵中有相同最大元素时不同行以行坐标最小优先,同行不同列以列坐标最小优先。

     

    输入要求

    首先输入被测试矩阵的数量k(1<=k<=10); 然后输入k个矩阵的行列数m,n,(1<=m,n<=10)和相应矩阵的各个元素。

     

    输出要求

    每一行中输出一个矩阵的最大元素的值及所在的行列坐标,元素之间用空格分隔。

     

    假如输入

    1
    3 4
    5 12 23 56
    19 28 37 46 
    -12 -34 6 8

    应当输出

    max=56 row=0 colum=3
    #include<stdio.h>
    int main(void)
    {
        int row,colum,i,j,x;
        int k,m,n;
        int a[10][10];
        scanf("%d
    ",&k);
     
        for(x=1;x<=k;x++){
        scanf("%d %d
    ",&m,&n);
        for(i=0;i<m;i++)
            for(j=0;j<n;j++)
                scanf("%d",&a[i][j]);
            row=colum=0;
             
           for(i=0;i<m;i++)
                for(j=0;j<n;j++)
                    if(a[i][j]>a[row][colum]){
                        row=i;
                        colum=j;
                       
                    }
            printf("max=%d row=%d colum=%d
    ",a[row][colum],row,colum);
        }       
            return 0;
    }
    
    
    
    
    

    问题 D: 求给定两整数的最大公约数和最小公倍数

    求给定两整数m,n的最大公约数和最小公倍数。

     

    输入要求

    输入分两部分,首先输入要测试的数据K,然后输入K组测试数据,每组数据包括m,n(m,n<=1000)两个正整数。

     

    输出要求

    输出最大公约数和最小公倍数,两个数之间用空格分隔,每组测速数据的答案之间用空行分隔。

     

    假如输入

    2
    34 6
    26 8
    

    应当输出

    Greatest common divisor is: 2 Least common multiple is: 102
    
    Greatest common divisor is: 2 Least common multiple is: 104
    #include<stdio.h> 
    int main(void) 
    { 
        int m,n,k,i; 
        int r,x,t;
        scanf("%d",&k);
        for(i=1;i<=k;i++){
            scanf("%d %d",&m,&n);
            x = m*n;
            if (m<n)
            {
                t=m; 
                m=n; 
                n=t;
            }
            while (n!=0)
            {
                r=m%n; 
                m=n; 
                n=r;
            }
            printf("Greatest common divisor is: %d Least common multiple is: %d
    ",m,x/m);
            printf("
    ");
        }
        return 0;
    }
  • 相关阅读:
    EJB 笔记
    设计模式
    go 笔记
    破解ssl pinning 抓APP的https数据包
    python读取、写入csv文件
    Python中用正则匹配手机号码
    苹果手机安装charles证书
    mysql在表中插入一个字段
    Python递归调用自己的函数
    mysql查询语句
  • 原文地址:https://www.cnblogs.com/simple9495/p/3475618.html
Copyright © 2020-2023  润新知