大一第九周学习总结

目录

题目一:小学生分数计数

题目二:二维数组中的鞍点

                                                           题目三:阶乘求和


题目一:小学生分数计数

13f2441ba6374b77bc5627d1d3c57fad.jpg

输入:

1/8+3/8
1/4-1/2
1/3-1/3

输出:

1/2
-1/4
0

解题思路

思路一:定义函数并使用。

思路二:在思路一的基础上升华一点 ,即直接使用头文件,引用所需函数。

具体方法一如下:

#include<stdio.h>
#include<math.h>
int GCD(int m, int n)
{
    int t;
    m = abs(m);
    n = abs(n);
// 保证后续m%n为较大数除以较小数
    if (m<n)
    {
        t = m;
        m = n;
        n = t;
    }
    // 辗转相除的过程,终止条件是余数为0
    while (m % n != 0)
    {
        t = m;
        m = n;
        n = t % n;
    }
    // 返回除数(较小数)
    return n;
}

int main() {
    int a, b, c, d;
    int gcd; // 最大公约数
    int x, y; // 分子x 分母y
    char o; // (+或者-)
 
    while (scanf("%d/%d%c%d/%d", &a, &b, &o, &c, &d) != EOF) {
        gcd = GCD(b, d);
 
        // 以下是分数运算过程
        // 通分——分母最大
        x = b * d / gcd;
 
        // x/b 为分母扩大了多少倍 分子也要相应扩大倍数
        if (o == '+'){
            y = a * (x / b) + c * (x / d);
//            printf("%d\n",y);
//            printf("%d\n",x);//(检验中间数据是否正确)
        }
        else
            y = a * (x / b) - c * (x / d);
 
        // 以下是分数化到最简过程
        // 避免输出0/n
 
        if (y == 0) {
            printf("0\n");
        } else if (y == x) {
            printf("1\n");
        } else {
            gcd = GCD(y, x); // 无需要在意两个参数的顺序,求最大公约数
            y = y / gcd;
            x = x / gcd;
            printf("%d/%d",y,x);
        }
    }
    return 0;
}

思路二:

#include <stdio.h>
#include<iostream>//运用__gsd函数需要用到以下四行
#include <math.h>
#include<algorithm>
using namespace std;
int main() {
    char b;
    int k1,k2,k3,k4,k,n,m;
    while(scanf("%d/%d%c%d/%d",&k1,&k2,&b,&k3,&k4)!=EOF) {//多组数据输入
        int i;
        if(b=='+')
            n=k1*k4+k2*k3;
        else n=k1*k4-k2*k3;
        m=k2*k4;
        if(n==0)
            printf("0\n");
        else {
            k=fabs(n);
            //printf("%d",k);验证数据
            i=__gcd(k,m);//求最大公约数
            if(i%m==0)
                printf("%d\n",n/m);
            else printf("%d/%d\n",n/i,m/i);
        }
    }
    return 0;
}
题目二:二维数组中的鞍点

56bf162b619d4098a51dae90497e6dcd.jpg

 解题思路:求每一行和每一列的最小值,然后判断是否相等,最后排序即可。

具体写法如下:

#include <stdio.h>
int a[101][101], b[101], c[101][101], mn[101], mi[101];//定义所需数组
int main() {
    int n,m,max,k,min,i,q,v,t,j,x=0;
    scanf("%d %d", &m,&n);//m为行,n为列
    for(i=1; i<=m; i++)
        for(j=1; j<=n; j++)
            scanf("%d",&a[i][j]);
                for(i=1; i<=m; i++)
        for(j=1; j<=n; j++)
            c[i][j]=a[i][j];//因为循环里面数组a的值会变,并且后面要用到原始数组a的 值,所以提前弄出与数组a等价的数组
    for(i=1; i<=m; i++) {
        mi[i]=a[i][1];//求每一行的最小值
        for(j=1; j<=n; j++) {//从第一行开始,第一行的每一个数比大小
            if(mi[i]>a[i][j]) {
                a[i][j]^=mi[i];
                mi[i]^=a[i][j];
                a[i][j]^=mi[i];
            }
        }
    }
    for(j=1; j<=n; j++) {
        mn[j]=c[1][j];//求每一列的最小值
        for(i=1; i<=m; i++) {//从第一列开始,第一列的每一个数比大小
            if(mn[j]>c[i][j]) {
                mn[j]^=c[i][j];
                c[i][j]^=mn[j];
                mn[j]^=c[i][j];
            }
        }
    }
    for(j=1; j<=n; j++) {//题目中说矩阵的每一个数不同,即mn[i],mi[j]如果分别有一数相等,即为鞍点
        for(i=1; i<=m; i++) {
            if(mi[i]==mn[j]) {
                x++;//数组计数
                b[x]=mi[i];
            }
        }
    }
        for( v=1; v<x; v++){//冒泡法排大小
        for( q=1; q<=x-v; q++){
            if(b[i]>b[i+1]){
                t=b[i];b[i]=b[i+1];b[i+1]=t;
            }
        }
    }
    for( q=1; q<=x; q++)
        printf("%d ",b[q]);
}
                                                           题目三:阶乘求和

6fea17d84e9f4599801c2b9ec9734ed6.jpg

解题思路:函数,递归,镶嵌函数(一个函数里面包括另一个)

具体如下:

#include<stdio.h>//由于涉及范围较大,所以用long long,不用int 
long long forOne(int X) {//定义第一个函数,求n!的值
    if(X==1)
        return 1;
    else if(X>1)
        X--;
    return (X+1)*forOne(X);//递归(直接或者间接调用该函数)
}
long long forAll(int N) {//定义第二个函数
    long long forOne(int X);//引用第一个函数,求1!....加到n!的值
    long long t=0;
    for(int X=1; X<=N; X++) {
        t+=forOne(X);//递归
    }
    return t;
}
int main() {
    long long forOne(int X);//引用已定义函数
    long long forAll(int N);
    long long n;
    scanf("%lld",&n);
    printf("%lld",forAll(n));//套入函数输出结果
    return 0;
}

本周专业排名:46bd2ff3e50a4d7e9848fdac1caa6fb3.png

本周班级排名:bf30426609314a82bebc821fae8478a3.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值