C39-函数完结练习

一 第一题

  • 题目:输入10个数,找出最大数及最大数的下标.
  • 代码示例
#include <stdio.h>
    //定义全局变量
int position;

    //封装初始化二维数组的函数
void  InitArr(int arr[],int len)
{
    int i;

    for(i=0;i<len;i++)
    {
            printf("请输入第%d个的元素:",i+1);
            scanf("%d",&arr[i]);       
    }
}

    //定义找对最大值的函数
int FoundMax(int arr[],int len)
{
    int i;
    int max;
    max=arr[0];

    for(i=0;i<len;i++)
    {
        if(max<arr[i])
        {
            max=arr[i];
            position=i+1;   
        }
    }

    return max;
}

    //主函数
int main()
{
    //二维数组的定义
    int arr[10];
    int max;
    
    //求二维数组的长度
    int len;
    len=sizeof(arr)/sizeof(arr[0]);

    //调用初始化数组的函数
    InitArr(arr,len);

    //调用找最大值的函数
    max=FoundMax(arr,len);

    //输出最大元素的相关信息
    printf("第%d个的数最大,是:%d",position,max);
    
    return 0;
}

  • 成果展示

image-20250513000434937

  • 报错与总结

    • 忘记在主函数接收被调用函数的返回值,导致最大值无法正常输出

    image-20250512235824540

    • 测试了定义数组后但未初始化数组时,数组的长度是可以计算的image-20250513000227832

二 第二题

  • 题目:封装冒泡排序的函数
  • 代码示例
#include <stdio.h>

    //封装初始化数组的函数
void  InitArr(int arr[],int len)
{
    int i;

    for(i=0;i<len;i++)
    {
            printf("请输入第%d个的元素:",i+1);
            scanf("%d",&arr[i]);       
    }
}


    //封装冒泡排序函数
void BubbleSort(int arr[],int len)
{
    int i;
    int j;
    int temp;

     for(i=0;i<len-1;i++)
    {
        for(j=0;j<len-1;j++)
        {
            if(arr[j]<arr[j+1])
            {
                temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;
            }
        }
    }
}


    //封装打印数组函数
void PrintArr(int arr[],int len)
{
    int i;

    puts("数组arr里的元素从大到小遍历输出为:");
    for(i=0;i<len;i++)
    {
        printf("%d,",arr[i]);
    }
}


    //主函数
int main()
{
    //定义数组及相关数据
    int arr[5];
    int len=sizeof(arr)/sizeof(arr[0]);

    //调用初始化数组函数
    InitArr(arr,len);

    //调用冒泡排序函数
    BubbleSort(arr,len);

    //调用打印函数
    PrintArr(arr,len);

    return 0;
}

  • 成果展示

image-20250513002543927

  • 报错总结

三 第三题

  • 题目:封装选择排序的函数
  • 代码示例
#include <stdio.h>

    //封装初始化数组的函数
void  InitArr(int arr[],int len)
{
    int i;

    for(i=0;i<len;i++)
    {
            printf("请输入第%d个的元素:",i+1);
            scanf("%d",&arr[i]);       
    }
}


    //封装冒泡排序函数
void BubbleSort(int arr[],int len)
{
    int i;
    int j;
    int temp;

    for(i=0;i<len-1;i++)
    {
        for(j=i+1;j<len;j++)
        {
            if(arr[i]<arr[j])
            {
                temp=arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }

}
                        

    //封装打印数组函数
void PrintArr(int arr[],int len)
{
    int i;

    puts("数组arr里的元素从大到小遍历输出为:");
    for(i=0;i<len;i++)
    {
        printf("%d,",arr[i]);
    }
}


    //主函数
int main()
{
    //定义数组及相关数据
    int arr[5];
    int len=sizeof(arr)/sizeof(arr[0]);

    //调用初始化数组函数
    InitArr(arr,len);

    //调用冒泡排序函数
    BubbleSort(arr,len);

    //调用打印函数
    PrintArr(arr,len);

    return 0;
}

  • 成果展示

image-20250513002905018

  • 报错总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值