8.3分析下面函数能否实现其功能,并编写出正确的程序

本文介绍了一个用于修改数组中元素的函数,通过除以数组的第一个元素来实现目标操作。初始函数存在缺陷,导致后续元素计算错误。文章提出了一种改进方案,即使用临时变量存储数组的第一个元素,并使用该变量完成除法运算。

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

#include<stdio.h>
void DivArray(int*pArray,int n)
{
    int i;
    for(i=0;i<n;i++)
    {
        pArray[i]/=pArray[0];
    }
}

错误原因:在循环的第一步,第一个元素就变成了1,然后再用他去除以其他元素,就不符合题目要求。

改进:使用其他变量保存第一个元素:

#include<stdio.h>
void DivArray3(int*pArray,int n)
{
    assert(pArray!=NULL);//1:参数的检验
    assert(n>0);

    if(pArray[0]==0)//2:除数不能为0
    {
        cout<<"除数不能为0"<<endl;
        exit(1);//终止进程
    }

    int tmp=pArray[0];
    for(int i=0;i<n;i++)//3:陷阱
    {
        pArray[i]/=tmp;
    }
}

知识点:
函数的参数要进行检验:assert()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值