解题思路:
声明和初始化变量:首先声明整型变量 l 和 m 分别用于表示马路的长度和区域的数量,并初始化为0。还声明整型变量 i 和 j 用于循环计数,以及整型变量 start 和 end 用于存储每个区域的起始点和终止点。同时,声明一个整型数组 arr,用于表示马路上的树,数组长度为10000,并初始化为1。最后,声明一个整型变量 sum 用于计算剩余的树的数量。
初始化数组 arr:使用一个循环遍历从0到 l 的每个整数点,将数组 arr 中的所有元素初始化为1,表示马路上的树都存在。
处理每个区域:使用一个循环遍历每个区域,依次读取起始点和终止点,并在数组 arr 中将这个区域内的树都标记为0,表示这些树被移走了。
统计剩余的树的数量:使用一个循环遍历数组 arr,累加每个位置的值,得到剩余的树的数量。
输出结果:使用 printf 函数输出剩余的树的数量。
注意事项:
参考代码:
#include <stdio.h> // 包含标准输入输出库的头文件 int main() { int l = 0, m = 0, i = 0, j = 0; // 声明整数变量 l、m、i、j int start, end; // 声明整数变量 start 和 end scanf("%d%d", &l, &m); // 从标准输入读取两个整数并存储在 l 和 m 中 int arr[10000]; // 声明一个整数数组 arr,用于表示马路上每个点是否有树,初始化所有点都有树(值为1) int sum = 0; // 用于计算马路上剩余的树的数量 // 初始化 arr 数组,将所有点都设置为有树(值为1) for (i = 0; i <= l; i++) { arr[i] = 1; } // 循环读取 m 次,每次输入地铁区域的起始点和结束点,并将这些区域内的树标记为已移除(值为0) for (i = 0; i < m; i++) { scanf("%d%d", &start, &end); // 从标准输入读取起始点和结束点 for (j = start; j <= end; j++) { arr[j] = 0; // 标记该点处的树为已移除,将 arr 数组中对应的元素设置为 0 } } // 统计剩余马路上的树的数量 for (i = 0; i <= l; i++) { sum += arr[i]; } printf("%d", sum); // 打印剩余马路上的树的数量 return 0; // 返回程序的退出状态码,表示成功运行 }
0.0分
11 人评分
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:653 |
C语言程序设计教程(第三版)课后习题8.5 (C语言代码)浏览:606 |
c primer plus 第十二章 12.1小节浏览:394 |
回文串 (C语言代码)浏览:3059 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:667 |
K-进制数 (C语言描述,蓝桥杯)浏览:946 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:557 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:1479 |
C语言程序设计教程(第三版)课后习题9.1 (C语言代码)浏览:563 |
拯救雅典娜浏览:1364 |