数组大折腾(3)

本文展示了一个使用C语言处理数组的例子,具体包括输出数组中值为3的倍数的元素及下标为3的倍数的元素值。

问题描述:

(3)创建一个长度为16的整型数组a并初始化,先输出数组中元素值为3的倍数的数,再输出所有下标为3的倍数的元素值。输出如图示。

解答:

#include <stdio.h>

int main( )
{
    int a[16]={11,21,90,45,22,65,32,72,56,15,16,62,365,123,88,6};
    int i;
    printf("数组中,元素值为3的倍数的数是:\n");
    for(i=0;i<16;i++)
    {
        if(a[i]%3==0)
        printf("a[%d] %d\n",i,a[i]);
    }
    printf("下标为3的倍数的元素值是:\n");
    for(i=0;i<16;i++)
    {
        if(i%3==0)
            printf("a[%d] %d\n",i,a[i]);
    }
    return 0;
}




为了确保输入的有效性防止空数组的情况发生,我们需要改进之前的代码逻辑。这里我们将重点放在两个方面: 1. **验证输入有效性**:每次尝试读取用户提供的数值时检查其是否确实是一个有效的整数。如果不是,则提示错误信息并且允许再次尝试输入直到接收到正确的数据为止。 2. **处理非满额输入或试图提交空白列表的情形** :如果用户中途停止提供足够的有效条目或者直接跳过整个过程导致生成了一个未达到规定长度(本案例中为10个元素)的列表,则应阻止进一步处理并告知对方必须完整填写所有项。 下面是更新后的版本,在原有基础上增加了对于异常情况更严谨的捕获机制。 ```python def input_validated_numbers(expected_length=10): """ 获取指定数量的有效整数输入 参数: expected_length (int): 需要录入的目标数字数目,默认是10 返回值: list[int]: 包含预期数量个已验证过的整型元素构成的列表 """ numbers = [] for i in range(1, expected_length + 1): valid_input = False while not valid_input: try: user_entry = int(input(f"请输入第{i}个整数: ").strip()) numbers.append(user_entry) valid_input = True except ValueError as ve: print(f"无效输入,请仅限于整数类型的值.") if len(numbers) != expected_length: raise ValueError( f"\n输入不足!您只提供了 {len(numbers)} 个数字而非所需的 {expected_length}." "\n程序无法继续." ) return numbers # 测试用法保持不变... if __name__ == &#39;__main__&#39;: try: raw_data = input_validated_numbers() # 确保后续不会因为引用相同对象而造成意外副作用 processed_data = process_list(raw_data.copy()) output_result(processed_data) except Exception as e: print(e) ``` 在这个增强版里我们做了几个关键性的改动: - 引入了`try...except`结构来包裹每一个单独的输入请求,以便可以及时捕捉任何形式下由非法字符引起的转换失败问题; - 添加了额外的一层循环控制变量 (`valid_input`) 来保证只要没有成功获取到合格的数据就不会轻易放过任何一个槽; - 当最终累积起来的实际记录少于预设目标时会主动抛出异常终止整个流程同时给予明确指示说明哪里出了差错。 这样做不仅提高了用户体验感——通过即时反馈减少了因误解指引造成的反复折腾的机会;同时也保障了算法层面的安全稳定运行环境避免由于缺失必要的初始化参数而导致不可预见的行为模式出现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值