《C Primer Plus 第五版》第十章(数组和指针)编程练习

本文档提供了一系列C语言编程练习,涉及数组和指针的应用。包括初始化double数组并复制、查找int数组中的最大值、确定double数组中最大值的索引、计算double数组最大值与最小值的差、以及二维数组的初始化等任务,旨在提升对C语言中数组和指针操作的理解和应用能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、找不到

2、编写一个程序,初始化一个double数组,然后把数组内容复制到另外…………

3、编写一个函数,返回一个int数组中储存最大的数值,并在一个简单的程序中测试这个函数

4、编写一个函数,返回一个double数组中存储的最大数值的索引,并在一个简单程序中测试函数

5、编写一个函数,返回一个double数组中最大值和最小值的差值

6、编写一个函数,初始化一个二维数组…………




----------------------------------------------------------------代码分割线----------------------------------------------------------

//第2题的代码

#include <stdio.h>

void cpp(double source[], double den1[], int len) ;
void cpp_2(double * source, double * denp, int len) ;

int main (void)
{
    double source[5] = {1.0, 2.2, 3.8, 4.11, 5.335} ;
    double den1[5] ;
    double denp[5] ;

    cpp(source, den1, 5) ;
    cpp_2 (source, denp, 5) ;

    return 0 ;
}

void cpp(double source[], double den1[], int len)
{
    int i ;

    for (i=0;i<len;++i)
    {
        den1[i] = source[i] ;
        printf("den1[%d] = %.3lf\n", i+1,den1[i]) ;
    }
    printf("\n\n") ;
}

void cpp_2(double * source, double * denp, int len)
{
    int i ;
    for (i=0;i<len;++i)
    {
        * (denp + i) = * (source + i) ;
        printf("denp[%d] = %.3lf\n", i+1, denp[i]) ;
    }
}

//第3题

#include <stdio.h>

int compare(int ar[], int len) ;

int main (void)
{
    int i_arry[5] = {5, 18, 4, 28, 23} ;
    int back ;

    back = compare(i_arry,5) ;
    printf("数组的最大值为:%d\n",back) ;

    return 0 ;
}

int compare(int ar[], int len)  //比较大小函数
{
    int i , t ;

    for (i=0;i<len-1;++i)
    {
        if ( ar[i] > ar[i + 1] )
        {
           t = ar[i] ;
           ar[i] = ar[i + 1] ;
           ar[i + 1] = t ;
        }
    }

    return ar[4] ;
}


 //第4题

#include <stdio.h>

int a_index(double ar[], int len) ;

int main (void)
{
    double d_arry[7] = {9.3, 11.5, 5.44, 12.6, 39.643, 40.05, 1.39} ;
    int back ;

    back = a_index(d_arry, 7) ;
    printf("最大值的索引为%d",back) ;

    return 0 ;
}

int a_index(double ar[], int len)
{
    double aa ;
    int back, i ;

    for (i=1,aa=ar[0];i<len;++i)
    {
        if (aa < ar[i])
        {
            aa = ar[i] ;
            back = i ;
        }
    }

    return back ;
}

//第5题

#include <stdio.h>

int sort(double ar[], int len) ;

int main (void)
{
    double ld_arry[6] = {11.2, 12.5, 10.11, 10.660, 43.654, 30.124} ;

    sort(ld_arry, 6) ;
    printf("数组的最大值和最小值的差值为:%.3lf", (ld_arry[5] - ld_arry[0]) ) ; //注意!浮点数相减会损失精度,因此存在误差

    return 0 ;
}

int sort(double ar[], int len)  //冒泡排序找出最小值和最大值,分别放置数组第一个int和最后一个int
{
    int i, j, t ;

    for(i=0;i<len-1;++i)
    {
        for(j=0;j<len-i-1;++j)
            if ( ar[j] > ar[j+1] )
            {
                t = ar[j] ;
                ar[j] = ar[j+1] ;
                ar[j+1] = t ;
            }
    }

}

//第6题

#include <stdio.h>
#define CLOS 2

void cpp(double ar[][2], double cp[][2], int len) ;

int main (void)
{
    double arry[3][2] = { {1, 3}, {5, 7}, {9,11} } ;
    double by[3][2] ;

    cpp(arry, by, 3) ;

    return 0 ;
}

void cpp(double ar[][2], double cp[][2], int rows)
{
    int i, j ;
    for (i=0;i<rows;++i)
    {
        for(j=0;j<CLOS;++j)
        {
            cp[i][j] = ar[i][j] ;
            printf("cp[i][j] = %lf\n", cp[i][j]) ;
        }
    }
}



//第7题

#include <stdio.h>

void cpp(int ar[], int ar2[], int len) ;

int main (void)
{
    int se_arry[7] = {1, 2, 3, 4, 5, 6, 7} ;
    int thr_arry[3] ;

    cpp( (se_arry + 2), thr_arry, 3 ) ;

    return 0 ;
}

void cpp(int ar[], int ar2[], int len)
{
    int i;

    for (i=0;i<len;++i)
    {
        ar2[i] = ar[i] ;
        printf("ar2[%d] = %d\n", i+1, ar2[i]) ;
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值