第四周作业的抄写部分

来源:互联网 发布:快速排序java实现 编辑:程序博客网 时间:2024/09/21 09:24
//有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,//A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个小时的细菌繁殖实验中,实验员由//于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。#include <iostream>using namespace std;int main(){    //i,j为循环变量    int i,j;    //n为细菌数量    int n;    //id为细菌的编号,rate记录细菌的繁殖率,id[i],rate[i]对应其中    int id[100];    double rate[100];    cin >> n;    for (i=0;i<n;i++)    {        //initial finaled 分别表示培养前后细菌数量        double initial,finaled;        cin >> id[i] >> initial >> finaled ;        rate[i]=finaled/initial;    }    //对整个细菌繁殖率进行排序  繁殖率升序    for (i=0;i<n;i++)        for (j=0;j<n-i-1;j++)    {        if(rate[j+1]<rate[j])        {            int temp1 = id[j];            id[j]=id[j+1];            id[j+1]=temp1;            double temp2 =rate[j+1];            rate[j+1]=rate[j];            rate[j]=temp2;        }    }    //记录最大的差    double maxrate = 0;    //a类细菌的数量    int num1 = 0;    for (i=0;i<n-1;i++)    {        if (maxrate<(rate[i+1]-rate[i]))        {            maxrate = rate[i+1]-rate[i];            num1=i;        }    }    cout << maxrate << num1 <<endl ;    //输出繁殖率最大的组    cout << num1+1 << endl ;    for(i=num1+1;i<n;i++)    {        cout << id[i] << " " << rate[i] << endl;    }    //输出繁殖率小的组    cout << n-num1-1 << endl ;    for (i=0;i<=num1;i++)    {        cout << id[i] << " " << rate[i] << endl;    }    return 0;}
/*描述求两个不超过200位的非负整数的和。输入有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。输出一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入2222222222222222222233333333333333333333样例输出55555555555555555555*/#include <iostream>#include <cstring>using namespace std;//str1,str2接受两个大整数输入并将它们转化至//整形数组a1,a2中char str1[201],str2[201];int a1[200]={0},a2[201]={0};int main(){    //i为循环变量    int i;    //输入    cin >> str1 >> str2 ;    //len1,len2记录两个数组的长度    int len1 = strlen(str1);    int len2 = strlen(str2);    //将str1,str2中的字符转化为数字,存入a1,a2中,每个元素只保存    //大整数的一位数字    for(i=0;i<len1;i++)        a1[i]=str1[len1-1-i]-'0';    for(i=0;i<len2;i++)        a2[i]=str2[len2-1-i]-'0';    //从低位到高位做加法,并直接保存到a2    //大整数最多为200,所以至多加200次  ---这样比较容易写程序,但并不环保    for(i=0;i<200;i++)    {        a2[i]+=a1[i];        if(a2[i]>=10)//判断是否进位        {            a2[i]-=10;            a2[i+1]++;        }    }    //做完加法,最多201位,我们先找最高位非零的数    for(i=200;i>=0;i--)    {        if(a2[i]!=0)            break;    }    if(i==-1)        cout << 0;    else        for(;i>=0;i--)            cout << a2[i];    cout << endl;    return 0;}


0 0
原创粉丝点击