2024.10.2

数组中元素最大值的寻找

解决方法:用两个选择语句进行书写

void MaxMinExchang(int a[], int n)
//{
//    int c = 0;
//    int d = 0;
//    for (d = 0;d < n;d++)
//    {
//        do
//        {
//            if (a[c] > a[c + 1])
//            {
//                int wu = a[c];
//                a[c] = a[c + 1];
//                a[c + 1] = wu;
//                c++;
//            }
//            else
//            {
//                c++;
//            }
//        } while (c < n - 1);
//        c = 0;
//    }
//}
//void ReadData(int a[], int n)
//{
//    int i = 0;
//    do
//    {
//        scanf("%d", &a[i]);
//        i++;
//    } while (i < n);
//}
//void PrintData(int a[], int n)
//{
//    int b = 0;
//    do
//    {
//        printf("%5d\n", a[b]);
//        b++;
//    } while (b < n);
//}
//void main()
//{
//    int n = 0;
//    printf("Input n number:");
//    scanf("%d", &n);
//    int a[10] ;
//    ReadData(a, n);
//    MaxMinExchang( a, n);
//    PrintData(a, n);
//
//}

break的作用解析:

函数的传参形式:

符号的应用:+=   *=   -=
 

函数的递归的学习(少量的代码进行大量复杂的运算,分为递推和回归两部分):

1定义:函数自己调试自己,递归的思想大事化小

限制条件:递归存在限制条件

2内容:

3重点:

4注意·:

0的阶乘为1

递归的练习:

1:阶乘的练习(迭代与递归的使用):

递归:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int foiso(long long int n)
{
    if (n == 0)
        return 1;
    else
        return n * foiso(n - 1);
}
int main()
{
    long long int n = 0;
    scanf("%d", &n);
     long long int ret = foiso(n);
    printf("%d", ret);
    return 0;
}

迭代:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
    int a = 1;
    int r = 0;
    int sum = 1;
    scanf("%d", &r);
    for (a = 1;a <= r;a++)//运用循环的方法进行迭代
    {
        sum *= a;
    }
    printf("%d", sum);
    return 0;
}

实验室提前批任务:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
 反向输出有5个元素的int数组中的各元素的值。数组为{10,20,30,40,50}。
* *输出格式要求:"\ta[%d]=%d,"
程序运行示例如下:
a[4] = 50, a[3] = 40, a[2] = 30, a[1] = 20, a[0] = 10,

#include<stdio.h>
int main()
{
    int a[] = { 10,20,30,40,50 };
    int b = 0;
    for (b = 0;b < 5;++b)
    {
        printf("a[b] = %d, ", a[b]);
    }
    return 0;
}
从键盘输入n个整数,用函数编程实现计算其最大值和最小值,并
  其中,n由用户从键盘输入。已知n值不超过10。
要求按如下函数原型编写程序
void ReadData(int a[], int n);
/*void PrintData(int a[], int n)*/;
void  MaxMinExchang(int a[], int n);
**输入提示信息要求:
"Input n(n<=10):\n"
* *要求输入格式为:"%d"
* *输出提示信息:
"Input %d numbers:\n"
"Exchange results:"
* *要求输出格式为:"%5d"
输出数组中所有数据后换行
注:不能使用指针、结构体、共用体、文件、goto、枚举类型进行编程,主函数不能使用int main和return 0。


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void MaxMinExchang(int a[], int n)
{
    int c = 0;
    int d = 0;
    for (d = 0;d < n;d++)
    {
        do
        {
            if (a[c] > a[c + 1])
            {
                int wu = a[c];
                a[c] = a[c + 1];
                a[c + 1] = wu;
                c++;
            }
            else
            {
                c++;
            }
        } while (c < n - 1);
        c = 0;
    }
}
void ReadData(int a[], int n)
{
    int i = 0;
    do
    {
        scanf("%d", &a[i]);
        i++;
    } while (i < n);
}
void PrintData(int a[], int n)
{
    int b = 0;
    do
    {
        printf("%5d\n", a[b]);
        b++;
    } while (b < n);
}
void main()
{
    int n = 0;
    printf("Input n number:");
    scanf("%d", &n);
    int a[10] ;
    ReadData(a, n);
    MaxMinExchang( a, n);
    PrintData(a, n);

}
按如下函数原型编写程序,输入n×n阶矩阵,用函数编程计算并输出其两条对角线上的各元素之和。
void InputMatrix(int a[N][N], int n);
int AddDiagonal(int a[N][N], int n);
输入提示信息:
"Input n:"
"Input %d*%d matrix:\n"
输入格式:"%d"
输出提示信息和输出格式:"sum = %d\n"

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#define v 10
int sum1 = 0;
void InputMatrix(int a[v][v], int n)
{
    int s, d = 0;
    for (s = 0;s < n;s++)
    {
        for (d = 0;d < n;d++)
        {
            scanf("%d", &a[s][d]);
        }
    }
}
int AddDiagonal(int a[v][v], int n)
{
    if (n % 2 == 1)
    {
        int h = n / 2;
        int g = 0;
        for (g = 0;g < n;g++)
        {
            sum1 +=  a[g][g];
        }
        int t = 0;
        int y = n-1;
        for (t = 0;t < n;t++)
        {
            sum1 += a[t][y] ;
                y--;
        }
        return sum1-a[h][h] ;
    }
    else
    {
        int u,i = 0;
        int r = n-1;
        for (u = 0;u < n;u++)
        {
            sum1 += a[u][u];
        }
        for (i = 0;i < n;i++)
        {
            sum1 += a[i][r];
        }
        return sum1;
    }

}
int main()
{
    printf("Input n:");
    int n = 0;
    scanf("%d", &n);
    int a[v][v] = { 0 };
    InputMatrix( a, n);
    int sum = AddDiagonal( a, n);
    printf("sum = %d\n", sum);

    return 0;
}
采用递归方法计算x的n次方。
** 输入格式要求:"%d%d" 提示信息:"x=? n=?"
* *输出格式要求:"%d**%d=%d\n"
程序运行示例如下:
x = ? n = ? 2 8
2 * *8 = 256


#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int js(int x, int n)
{
    if (n == 0)
        return 1;
    else
        return x * js(x,n-1);
}
int main()
{
    int x,n = 0;
    printf("x = ? n = ?\n");
    scanf("%d %d", &x, &n);
    int ret = js(x, n);
    printf("%d**%d=%d", x, n, ret);
    return 0;
}
(附加)设计一个函数Fun()要求对数组a[] = { 13,45,234,123,54,76,43,13,776,34,12,64,878,98,8,16,46,134,64,124,54,3,1,42,50,3,14,51,37,25,14,13,63,74,84,25,16,86,25,14 }进行处理

函数Fun(int* Input, int* Output, int Channel, int Fsr);

传参解释:在外部将数组a作为Input传入Fun函数, 将另外一个自建数组作为Output作为接收数组传入, Channel是用户自行输入(scanf)的一个对于数组a的分割值, Fsr是滤波系数

处理方式 : 该函数可以对任意长度的数组进行分割并滤波处理, 用于ADC数据处理, 其中Channel是最终输出通道数, 一般为接收数组的长度(sizeof), 决定了每读取到一组数据的长度, 例如Channel = 4时, a[0], a[4]。。。等就是一组, a[1], a[5]就是一组, 这样整个数组a就被分割成4份, 对于每一份数值, 需要滤波相加, 滤波方法是 前一个数* (1 - Fsr)+后一个数* Fsr, 这里Fsr建议小于不等于0.5, 直到加完为止。。例如, 对于Channel = 4, 最终处理完就只有4个数据, 再赋值给Output传出

最后在main函数里面将分割后的Output打印出来

注意 : 由于无法获取随机的数组a长度以及数据, 就假定就是a, 建议Channel长度就是40的因数, 例如2, 4, 8, 10等

输入要求 : ” % d”------》Channel的输入
“ % f”------ - 》Fsr的输入

输出要求 : ” % f\n”------》最终处理数据输出
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
void Fun(float*Input, float* Output, int Channel, float Fsr)
{
    int y = 0;
    int t = 0;
    int r = 0;
    int p = 0;
    for (t = 0;t < Channel;t++)
    {
        float m = 0.0;
        y = t;
        for (y;y + Channel< 40;y+= Channel)
        {
            m = Input[y] * (1 - Fsr) + Input[y + Channel]*Fsr;
            Input[y + Channel] = m;
        }
        Output[r++] = m;
    }
    for (p = 0;p < Channel;p++)
    {
        printf("%f\n", Output[p]);
    }
}
void main()
{
    float a[40] = {13.0,45.0,234.0,123.0,4.0,76.0,43.0,13.0,776.0,34.0,12.0,64.0,878.0,98.0,8.0,16.0,46.0,134.0,64.0,124.0,54.0,3.0,1.0,42.0,50.0,3.0,14.0,51.0,37.0,25.0,14.0,13.0,63.0,74.0,84.0,25.0,16.0,86.0,25.0,14.0 };
    //printf("%d", b);这个数组有40个数
    int Channel = 0;
    float Fsr ;
    scanf("%d", &Channel);
    scanf("%f", &Fsr);
    float c[10];
    Fun(a, c, Channel,Fsr );
}

Kali Linux 2024.2是Kali Linux系列中的一个发行版,Kali Linux是一个基于Debian的Linux发行版,专门用于数字取证和渗透测试。要安装Kali Linux 2024.2,你可以遵循以下步骤: 1. 下载Kali Linux 2024.2安装介质: - 前往Kali Linux官方网站下载页面,选择适合你的系统架构和安装方式的Kali Linux ISO镜像文件。 2. 制作启动盘或刻录光盘: - 如果你选择使用USB启动盘,可以使用工具如Etcher、Rufus等将下载的ISO文件写入USB设备。 - 如果你选择刻录为DVD,可以使用光盘刻录软件将ISO文件刻录到DVD上。 3. 设置BIOS/UEFI启动顺序: - 重启计算机,并在启动过程中进入BIOS/UEFI设置(通常通过按F2、F10、F12、Del等键)。 - 将启动顺序设置为从USB设备或DVD驱动器启动。 4. 安装Kali Linux: - 保存BIOS/UEFI设置并退出,计算机将会从你制作的启动介质启动。 - 启动后,可以选择“Graphical Install”来进行图形化安装,或者选择“Install”进行基本的文本安装。 - 根据安装向导,选择语言、位置、键盘布局、主机名、用户信息等。 - 分区硬盘,可以选择手动分区或自动分区。 - 完成分区设置后,安装程序会开始复制文件到硬盘。 - 安装完成后,系统会提示你安装GRUB引导加载器,建议安装到主引导记录(MBR)或EFI系统分区(ESP)上。 - 完成GRUB安装后,重启计算机,系统将从硬盘启动进入新安装的Kali Linux。 5. 首次运行设置: - 首次登录后,Kali Linux可能会提示你更新软件包列表,建议执行更新操作以获取最新的软件包。 - 如果需要,可以安装额外的驱动程序,特别是非开源的驱动,如显卡驱动等。 请注意,安装操作系统之前,确保备份所有重要数据,以防在安装过程中数据丢失。另外,如果你是在虚拟机环境中安装Kali Linux,可以在虚拟机软件中加载ISO文件并按照上述步骤进行安装。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值