当前位置: 首页 > news >正文

C语言的数组与字符串练习题1

C语言的数组与字符串练习题1

1. 数组初始化与遍历

题目描述:
编写一个C程序,初始化一个整数数组,包含10个元素,然后遍历并打印数组中的所有元素。

解题思路:
要初始化一个数组,可以在声明时直接给出初始值。遍历数组可以使用for循环,通过索引访问每个元素并打印。

程序流程如下:

  1. 声明并初始化一个包含10个整数的数组。
  2. 使用for循环遍历数组,从索引0到9。
  3. 在循环中打印每个数组元素。

详细代码:

#include <stdio.h>int main() {// 声明并初始化一个包含10个整数的数组int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};// 使用for循环遍历数组printf("数组中的元素为:\n");for(int i = 0; i < 10; i++) {printf("arr[%d] = %d\n", i, arr[i]);}return 0;
}

代码注释:

  • int arr[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};:声明并初始化一个包含10个整数的数组。
  • for(int i = 0; i < 10; i++):使用for循环从索引0到9遍历数组。
  • printf("arr[%d] = %d\n", i, arr[i]);:打印当前索引和对应的数组元素。

2. 查找数组中的最大值和最小值

题目描述:
编写一个C程序,输入10个整数存储在数组中,找到并输出数组中的最大值和最小值。

解题思路:
要找到数组中的最大值和最小值,可以先假设第一个元素为最大值和最小值,然后遍历数组,比较每个元素与当前的最大值和最小值,进行更新。

程序流程如下:

  1. 声明一个数组,大小为10。
  2. 提示用户输入10个整数,并存储在数组中。
  3. 初始化maxmin为数组的第一个元素。
  4. 使用for循环遍历数组,从第二个元素开始比较。
  5. 根据比较结果更新maxmin
  6. 输出最大值和最小值。

详细代码:

#include <stdio.h>int main() {int arr[10];int max, min;// 提示用户输入10个整数printf("请输入10个整数:\n");for(int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}// 初始化max和min为第一个元素max = arr[0];min = arr[0];// 遍历数组,查找最大值和最小值for(int i = 1; i < 10; i++) {if(arr[i] > max) {max = arr[i];}if(arr[i] < min) {min = arr[i];}}// 输出结果printf("数组中的最大值是 %d。\n", max);printf("数组中的最小值是 %d。\n", min);return 0;
}

代码注释:

  • int arr[10];:声明一个大小为10的整数数组。
  • for(int i = 0; i < 10; i++):循环读取用户输入的10个整数并存储在数组中。
  • max = arr[0]; min = arr[0];:初始化最大值和最小值为数组的第一个元素。
  • if(arr[i] > max):如果当前元素大于max,更新max
  • if(arr[i] < min):如果当前元素小于min,更新min
  • printf:输出数组中的最大值和最小值。

3. 数组元素求和与平均值

题目描述:
编写一个C程序,输入5个浮点数存储在数组中,计算并输出数组元素的总和和平均值。

解题思路:
要计算数组元素的总和,可以使用for循环将所有元素累加起来。平均值则是总和除以元素的数量。

程序流程如下:

  1. 声明一个数组,大小为5,类型为float
  2. 提示用户输入5个浮点数,并存储在数组中。
  3. 使用for循环遍历数组,累加所有元素的值。
  4. 计算平均值。
  5. 输出总和和平均值。

详细代码:

#include <stdio.h>int main() {float arr[5];float sum = 0.0, average;// 提示用户输入5个浮点数printf("请输入5个浮点数:\n");for(int i = 0; i < 5; i++) {scanf("%f", &arr[i]);}// 计算总和for(int i = 0; i < 5; i++) {sum += arr[i];}// 计算平均值average = sum / 5;// 输出结果printf("数组元素的总和是 %.2f。\n", sum);printf("数组元素的平均值是 %.2f。\n", average);return 0;
}

代码注释:

  • float arr[5];:声明一个大小为5的浮点数数组。
  • float sum = 0.0, average;:声明并初始化总和变量为0,平均值变量。
  • for(int i = 0; i < 5; i++):循环读取用户输入的5个浮点数并存储在数组中。
  • sum += arr[i];:将当前数组元素累加到sum中。
  • average = sum / 5;:计算平均值。
  • printf:输出总和和平均值。

4. 反转数组

题目描述:
编写一个C程序,输入10个整数存储在数组中,然后将数组中的元素反转,并输出反转后的数组。

解题思路:
要反转数组,可以使用两个指针(或索引)从数组的两端开始,交换对应位置的元素,直到中间位置。

程序流程如下:

  1. 声明一个数组,大小为10。
  2. 提示用户输入10个整数,并存储在数组中。
  3. 使用for循环,从数组的开始和结束,交换对应的元素。
  4. 输出反转后的数组。

详细代码:

#include <stdio.h>int main() {int arr[10];int temp;// 提示用户输入10个整数printf("请输入10个整数:\n");for(int i = 0; i < 10; i++) {scanf("%d", &arr[i]);}// 反转数组for(int i = 0; i < 10 / 2; i++) {temp = arr[i];arr[i] = arr[10 - 1 - i];arr[10 - 1 - i] = temp;}// 输出反转后的数组printf("反转后的数组元素为:\n");for(int i = 0; i < 10; i++) {printf("arr[%d] = %d\n", i, arr[i]);}return 0;
}

代码注释:

  • int arr[10];:声明一个大小为10的整数数组。
  • for(int i = 0; i < 10; i++):循环读取用户输入的10个整数并存储在数组中。
  • for(int i = 0; i < 10 / 2; i++):循环遍历数组的一半,交换元素。
  • temp = arr[i]; arr[i] = arr[10 - 1 - i]; arr[10 - 1 - i] = temp;:交换数组中对应位置的元素。
  • for(int i = 0; i < 10; i++):循环输出反转后的数组元素。

5. 数组排序(升序)

题目描述:
编写一个C程序,输入5个整数存储在数组中,对数组进行升序排序,并输出排序后的数组。

解题思路:
可以使用简单的排序算法,如冒泡排序。通过多次遍历数组,比较相邻元素并交换位置,使得最大的元素逐渐移动到数组的末尾。

程序流程如下:

  1. 声明一个数组,大小为5。
  2. 提示用户输入5个整数,并存储在数组中。
  3. 使用嵌套for循环实现冒泡排序。
  4. 输出排序后的数组。

详细代码:

#include <stdio.h>int main() {int arr[5];int temp;// 提示用户输入5个整数printf("请输入5个整数:\n");for(int i = 0; i < 5; i++) {scanf("%d", &arr[i]);}// 冒泡排序(升序)for(int i = 0; i < 5 - 1; i++) {for(int j = 0; j < 5 - 1 - i; j++) {if(arr[j] > arr[j + 1]) {// 交换arr[j]和arr[j + 1]temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}// 输出排序后的数组printf("升序排序后的数组元素为:\n");for(int i = 0; i < 5; i++) {printf("arr[%d] = %d\n", i, arr[i]);}return 0;
}

代码注释:

  • int arr[5];:声明一个大小为5的整数数组。
  • for(int i = 0; i < 5; i++):循环读取用户输入的5个整数并存储在数组中。
  • 冒泡排序部分:
    • 外层循环控制排序的次数,每次将最大的元素移动到未排序部分的末尾。
    • 内层循环比较并交换相邻的元素。
  • printf:输出升序排序后的数组元素。

http://www.dtcms.com/a/318362.html

相关文章:

  • 18650电池组PACK自动化生产线:高效与品质的融合
  • 动物AI识别摄像头语音对讲功能
  • 大模型客户端工具如Cherry Studio,Cursor 配置mcp服务,容易踩的坑,总结
  • RPC框架之Kitex
  • 云手机和云真机之间存在的不同之处有什么?
  • [Oracle] LPAD()和RPAD()函数
  • Python实现电商商品数据可视化分析系统开发实践
  • 一、Istio基础学习
  • 自定义报表调研
  • 居家养老场景下摔倒识别准确率提升 29%:陌讯动态姿态建模算法实战解析
  • JuiceFS存储
  • C++实现线程池(5)计划线程池
  • Redis知识学习
  • 深度解析:AI如何重塑供应链?从被动响应到预测性防御的三大核心实践
  • (Python)待办事项升级网页版(html)(Python项目)
  • 未解决|TransmittableThreadLocal 怎么用| 阿里线程池工具避免手动在传递MDC traceId
  • 数字取证和网络安全:了解两者的交叉点和重要性
  • 《爬虫实战指南:轻松获取店铺详情,开启数据挖掘之旅》
  • 【网络基础】计算机网络发展背景及传输数据过程介绍
  • cad c#二次开发 图层封装 获取当前层
  • 《第十一篇》深入解析 `embedding.py`:基于 SiliconFlow API 的文本向量化服务
  • 《算法导论》笔记——归并排序及循环不变式证明
  • [AI 生成] 大数据数仓面试题
  • 无人机共轴双桨动力测试-如何确认桨叶最优间距(效率/噪音/重量/尺寸)
  • 无人机航拍数据集|第3期 无人机军事目标目标检测YOLO数据集3556张yolov11/yolov8/yolov5可训练
  • 2025年高防IP隐身术:四层架构拆解源站IP“消失之谜”
  • 笔试——Day30
  • 吴声 2025 年度演讲:“场景革命十年”的多面审视,理念重复之嫌!
  • 笔记html模板
  • OpenHarmony源码解析之init进程