慕课-程序设计与算法(大学先修课)-郭炜-第三周练习题

1.给定一个整数,判断该数是奇数还是偶数。

#include<iostream>
using namespace std;
int main()
{
    long int a;
    cin>>a;
    if(a%2==0)
        cout<<"even";
    else
        cout<<"odd";
    return 0;
}

2.利用公式x1= (-b + sqrt(b*b-4*a*c))/(2*a), x2 = (-b - sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+ bx + c =0的根,其中a不等于0。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    double a,b,c,x1,x2,d,e,f;
    cin>>a>>b>>c;
    x1 = (-b + sqrt(b*b-4*a*c))/(2*a);
    x2 = (-b - sqrt(b*b-4*a*c))/(2*a);
    d=b*b -4 * a * c;
    if(d==0)
    {
        printf("x1=x2=%.5f",x1);
    }
    else if(d>0)
    {
        printf("x1=%.5f;x2=%.5f",x1,x2);
    }
    else 
    {
        e=-b / (2*a)+0;
        f=sqrt(4*a*c-b*b) / (2*a);
        printf("x1=%.5f+%.5fi;x2=%.5f-%.5fi",e,f,e,f);
    }
    return 0;
}

3.有一个正方形,四个角的坐标(x,y)分别是(1,-1),(1,1),(-1,-1),(-1,1),x是横轴,y是纵轴。写一个程序,判断一个给定的点是否在这个正方形内(包括正方形边界)。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    a=abs(a);
    b=abs(b);
    if(a<=1&&b<=1)
        printf("yes");
    else
        printf("no");
    return 0;
}

4.你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    double c,b;
    int a;
    cin>>a>>b>>c;
    a=a-c/b;
    if(a>0)
        cout<<a;
    else
        cout<<"0";
    return 0;
}

5.一个最简单的计算器,支持+, -, *, / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int a,b;
    char c;
    cin>>a>>b>>c;
    switch(c)
    {
        case '+':
            cout<<a+b;
            break;
        case '-':
            cout<<a-b;
            break;
        case '*':
            cout<<a*b;
            break;
        case '/':
            if(b==0)
            {
                cout<<"Divided by zero!";
            }
            else
                cout<<a/b;
            break;
        default :
            cout<<"Invalid operator!";
            break;
    }
    return 0;
}

6.读入n(1 <= n <= 10000)个整数,求它们的和与均值。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    double a,n;
    long int sum=0;
    cin>>a;
    for(int i=0;i<a;i++)
    {
        cin>>n;
        sum+=n;
    }
    printf("%ld %.5f",sum,sum/a);
    return 0;
}

7.给定一个长度为n的非负整数序列,请计算序列的最大跨度值(最大跨度值 = 最大值减去最小值)。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    long int a,max=0,min=0,n;
    cin>>a;
    cin>>n;
    max=n;
    min=n;
    for(int i=0;i<a-1;i++)
    {
        cin>>n;
        if(n>max)
            max=n;
        if(n<min)
            min=n;
    }
    printf("%ld",max-min);
    return 0;
}

8.2008年北京奥运会,A国的运动员参与了n天的决赛项目(1≤n≤17)。现在要统计一下A国所获得的金、银、铜牌数目及总奖牌数。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int a,b=0,c=0,d=0,n;
    cin>>a;
    for(int i=0;i<a;i++)
    {
        cin>>n;
        b+=n;
        cin>>n;
        c+=n;
        cin>>n;
        d+=n;
    }
    printf("%d %d %d %d",b,c,d,b+c+d);
    return 0;
}

9.给出一个整数a和一个正整数n,求乘方an。

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    long int a,b,sum=1;
    cin>>a>>b;
    for(int i=0;i<b;i++)
    {
        sum*=a;
    }
    printf("%ld",sum);
    return 0;
}

a.鸡尾酒疗法,原指“高效抗逆转录病毒治疗”(HAART),由美籍华裔科学家何大一于1996年提出,是通过三种或三种以上的抗病毒药物联合使用来治疗艾 滋病。该疗法的应用可以减少单一用药产生的抗药性,最大限度地抑制病毒的复制,使被破坏的机体免疫功能部分甚至全部恢复,从而延缓病程进展,延长患者生 命,提高生活质量。人们在鸡尾酒疗法的基础上又提出了很多种改进的疗法。为了验证这些治疗方法是否在疗效上比鸡尾酒疗法更好,可用通过临床对照实验的方式 进行。假设鸡尾酒疗法的有效率为x,新疗法的有效率为y,如果y-x大于5%,则效果更好,如果x-y大于5%,则效果更差,否则称为效果差不多。下面给 出n组临床对照实验,其中第一组采用鸡尾酒疗法,其他n-1组为各种不同的改进疗法。请写程序判定各种改进疗法效果如何。

#include<iostream>
#include<math.h>
using namespace std;
char s[20];
int main()
{
    int a,n;
    double b,c,d,x1,x2;
    cin>>a;
    cin>>b;
    cin>>c;
    d=c/b;
    for(int i=0;i<a-1;i++)
    {
        cin>>n;
        x1=n;
        cin>>n;
        x2=n/x1;
        if(d-x2>0.05)
            s[i]=0;
        else if(x2-d>0.05)
            s[i]=1;
        else
            s[i]=2;
    }
    for(int i=0;i<a-1;i++)
    {
        switch(s[i])
        {
        case 0:
            cout<<"worse"<<endl;
            break;
        case 1:
            cout<<"better"<<endl;
            break;
        case 2:
            cout<<"same"<<endl;
            break;
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值