news 2026/4/18 11:10:08

C作业 四

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C作业 四

#include <stdio.h> #include <stdlib.h> typedef struct { int id; // 产地ID char name[50]; // 产地名称 int yield; // 产量(吨) } OrangeFarm; int main() { OrangeFarm new_farm; // 本次只需定义一个结构体变量用于追加 FILE *fp; // 1. 从控制台录入单条需要追加的数据 printf("--- 廉江红橙产地数据追加 ---\n"); printf("请输入新增产地信息(格式:ID 名称 产量):\n"); if (scanf("%d %s %d", &new_farm.id, new_farm.name, &new_farm.yield)!= 3) { printf("输入格式错误。\n"); return 1; } // 2. 以追加模式("a")打开文件 // "a"代表append。如果文件不存在会创建;如果存在,指针直接指向文件末尾 fp = fopen("farms.txt", "a"); // 检查文件打开是否成功 if (fp == NULL) { printf("错误:无法打开文件进行追加!\n"); return 1; } // 3. 使用 fprintf 写入新数据 // 务必保留末尾的 \n,确保下一条追加的数据能另起一行 fprintf(fp, "%d %s %d\n", new_farm.id, new_farm.name, new_farm.yield); // 4. 关闭文件 fclose(fp); printf("\n新记录已成功追加至 farms.txt 末尾。 \n"); return 0; }

#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct { int id; char name[50]; int yield; } OrangeFarm; int main(){ 銩揞装绑铱蒸泩angeFarm farms[100];// 假设最多存储100个产地 int count = 0; int deleteld; char confirm; FILE *fp; //1.读取文件内容到内存数组 fp = fopen("farms.txt","r"); if (fp == NULL) { printf("错误:无法打开 farms.txt,请确保文件已存在。\n"); return 1; / 循环读取直到文件末尾while (fscanf(fp, "%d %s %d", &farms[count].id, farms[count].name, &farms[count].yield)== 3){ count++; fclose(fp); if (count == 0){ printf("数据库为空,无数据可删除。\n"); return : //2.像题目3一样,先展示当前所有数据,每行3个并对齐printf("\n---当前廉江红橙产地列表 ---\n"); for (inti= 0:i< count; i++){ printf("[%dl%-12s",farms[il.id, farms[il.name);if ((i + 1)% 3 == 0) {printf("\n");// 每行输出3个后换行 printf("\n---------------------------\n"); //3.用户输入要删除的 ID printf("请输入要删除的产地 ID:"); scanf("%d",&deleteld); / 查找该 ID 所在的索引 int targetindex = -1; for (inti= 0;i< count; i++){ if (farmsli].id == deleteld){ targetIndex =i; break; if (targetindex==-1){printf("错误:未找到 ID 为 %d 的记录。\n",deleteld);return 0; //4.显示具体信息并进行确认 printf("\n拟删除记录详情:\n"); printf("|D: %d 名称: %s 产量: %d 吨\n" farms[targetindex].id, farms[targetindex].namefarms[targetIndex].yield);printf("警告:此操作不可撒回!确定删除吗 ?(y/n):"); getchar();//清除之前输入的换行符,防止scanf直接读取回车scanf("%c",&confirm); if (confirm != 'y'&& confirm !='Y'){ printf("操作已安全取消。\n"); return 0; //5.在数组中进行"逻辑删除” /将目标位置之后的元素全部向前移动一位for (inti= targetIndex;i< count -1; i++){farmsli] = farms[i + 1]: count--;// 总数减1 //6.重新写回文件(覆盖模式) fp = fopen("farms.txt","w"); if (fp == NULL) { printf("系统错误:无法更新文件数据。\n");return 1; for (inti= 0;i< count; i++){fprintf(fp, "%d %s %d\n", farms[i].id, farms[i].name, farms[i].yield); fclose(fp); printf("成功:ID 为 %d 的记录已从系统中彻底移除。\n",deleteld); return 0;

#include <stdio.h> #include <string.h> #include <stdlib.h> typedef struct { int id; char name[50]; int yield; } OrangeFarm; int main() { OrangeFarm farms[100];int count = 0; int targetld, choice;FILE *fp; //1.加载数据到内存fp = fopen("farms.txt", "r"); if(fp == NULLprintf("错误:无法打开 farms.txt,请确保文件已存在。\n");return 1; while (fscanf(fp,"%d %s %d",&farms[count].id,. farms[count].name,&farms[count].yield)==3){ count++; fclose(fp); if (count == 0){ printf("数据库为空,请先添加数据。\n");return 0: //2.展示已有 ID,每行 3个并对齐 printf("---当前系统内的产地 |D 列表 ---\n"); for (inti= 0:i< count: i++){ printf("[%d]%-12s",farms[i].id,farms[i].name);// %-12s 保证名称左对齐if ((i + 1)% 3 == 0){printf("\n");// 每行输出3个后换行 printf("\n--------------. //3.用户选择要修改的 ID printf("请输入您想要修改的产地 ID:"); scanf("%d",&targetld); int index = -1: for (inti = 0;i< count; i++){ if (farms[i].id == targetld) { index = i: break; printf("未找到 |D 为 %d 的记录。\n",targetld);return 0; //4.选择修改项 printf("\n巳锁定产地: %s(产量: %d 吨)\n" farms[indexl.name, farms[index].yield); printf("1.修改产地名称\n"); printf("2.修改预计产量\n"); printf("3.取消修改\n"); pr榚撲宇爷蒹缓谧喪曈ヵ峰痠鸥夏昀官菖汚収忞弄请选择操作(1-3):"); scanf("%d",&choice); swit嬢佶h(choice){//使用 switch-case 处理多选项case 1: printf("请输入新的名称:"); scanf("%s",farms[index].name): break; case 2: printf("请输入新的产量(吨):"); scanf("%d",&farms[index].yield); break; case 3: printf("操作已取消。\n"); return 0; default: printf("非法输入,操作终止。\n"); return 0; // 5.写回文件 fp = fopen("farms.txt","w"); if (fp == NULL){ printf("回写文件失败!\n"); return 1; for (inti= 0;i< count; i++){fprintf(fp, "%d %s %d\n"farms[i].id, farms[il.name, farms[i].yield) fclose(fp); printf("ID 为 %d 的记录已成功更新。\n",targetld); return 0;

​ #include <stdio.h> #include <stdlib.h> typedef struct { int id; char name[50]; int yield; } OrangeFarm; int main(){ FILE *fp; OrangeFarm temp; int threshold: int foundCount = 0; //1.打开文件进行读取 fp = fopen("farms.txt","r"); if (fp == NULL) { printf("错误:无法打开数据文件 farms.txt,请确保文件已存在。\n");return 1: //2.获取用户查询条件 rintf("-----------廉江红橙产量筛选系统 -----------\n");printf("请输入产量阈值(吨):");if (scanf("%d",&threshold)!=1){printf("输入无效。\n");fclose(fp);// 记得关闭文件 return 1; printf("\n正在查询产量大于 %d 吨的产地...\n",threshold); orintf(--------------------驍胭郧-狝敝膻褓-------n: printf("%-10s %-20s %-10s\n","ID","产地名称","预计产量(吨)"); printf("----------\n”); //3.循环逐行解析数据 // fscanf 返回成功读取的项目数,若达到文件末尾则返回 EOFwhile (fscanf(fp,"%d %s %d", &temp.id, temp.name, &temp.yield)== 3){//4.执行逻辑判断与成员访问if (temp.yield > threshold){printf("%-10d %-20s %-10d\n", temp.id, temp.name, temp.yield);foundCount++; // 5.结果汇总 if (foundCount ==0){ printf("未找到产量超过 %d 吨的记录。\n",threshold);} else { printf(".--\n"); printf("查询完毕,共找到 %d 条记录。\n",foundCount); //6.必须执行的文件关闭操作fclose(fp); return 0; ​
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/3 0:59:49

Anaconda克隆环境快速复制成功配置的PyTorch实例

Anaconda克隆环境快速复制成功配置的PyTorch实例 在深度学习项目开发中&#xff0c;你是否经历过这样的场景&#xff1a;本地训练好的模型&#xff0c;在同事或服务器上却跑不起来&#xff1f;明明代码一致&#xff0c;却报出 torch not found、CUDA version mismatch 或某个依…

作者头像 李华
网站建设 2026/4/18 11:01:39

Vivado安装包选择与磁盘规划操作指南

Vivado安装避坑指南&#xff1a;组件怎么选&#xff1f;磁盘如何规划&#xff1f; 你有没有遇到过这种情况—— 下载了几十GB的Vivado安装包&#xff0c;吭哧吭哧跑了一整晚&#xff0c;结果最后弹出一个“磁盘空间不足”的错误提示&#xff1f;或者刚装好就发现C盘只剩3GB&a…

作者头像 李华
网站建设 2026/4/17 14:37:23

深入理解Python中的位操作:自定义Bitarray类的优化

在Python编程中,处理位(bit)数据是一项常见的任务,尤其是当你需要实现高效的位操作时。例如,在加密学中,位数组(bitarray)的使用频率非常高。今天,我们将探讨如何优化一个Bitarray类,以提高其性能和效率。 背景 假设我们有一个Bitarray类,它允许我们操作一系列的位…

作者头像 李华
网站建设 2026/4/17 19:26:59

基于SpringBoot+Vue的社区医疗服务可视化系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着社会老龄化和慢性病患病率的逐年上升&#xff0c;社区医疗服务需求呈现爆发式增长。传统医疗服务模式存在信息孤岛、资源分配不均、患者管理效率低下等问题&#xff0c;亟需通过数字化手段构建高效、透明的医疗服务平台。社区医疗服务可视化系统通过整合居民健康档案、…

作者头像 李华
网站建设 2026/4/18 5:28:13

Intel HAXM兼容性详解:哪些系统支持它?

为什么你的 Android 模拟器跑得像蜗牛&#xff1f;可能是 HAXM 没装对 你有没有过这样的经历&#xff1a;在 Android Studio 里点下“Run”&#xff0c;然后眼睁睁看着模拟器转啊转&#xff0c;三分钟过去了还没进系统&#xff1f;控制台反复刷着 HAXM is not installed 的红…

作者头像 李华
网站建设 2026/4/17 16:19:11

小白指南:读懂二极管伏安特性曲线的三个关键区域

读懂二极管伏安特性曲线&#xff1a;从零开始掌握三大核心区域你有没有在看电路图时&#xff0c;看到一个简单的“箭头加竖线”的符号——二极管&#xff0c;心里却犯嘀咕&#xff1a;“它到底什么时候导通&#xff1f;反向电压加多了会怎样&#xff1f;”或者调试电源电路时发…

作者头像 李华