news 2026/2/14 9:29:00

C语言实验四

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言实验四
/* project1_add.增加数据 */ #include <stdio.h> #include <stdio.h> typedef struct { int id; char name[50]; int yield; }OrangeFarm; int main(){ OrangeFarm new_farm; FILE *fp; printf("---廉江红橙产地数据追加---\n"); printf("请输入新增产地信息(格式:ID 名称 产量):\n"); if(scanf("%d %s %d",&new_farm.id,new_farm.name,&new_farm.yield)!=3){ printf("输入格式错误。\n"); return 1; } fp = fopen("farms.txt","a"); if(fp==NULL){ printf("错误:无法打开文件进行追加!\n"); return 1; } fprintf(fp,"%d %s %d\n",new_farm.id,new_farm.name,new_farm.yield); fclose(fp); printf("\n新纪录已成功追加至farms.txt末尾。\n"); return 0; }
/* project2_delete.删除信息 */ #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 = 100; int deleteld; char confirm; FILE *fp; 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 0; } printf("\n---当前廉江红橙产地列表---\n"); for(int i=0;i<count;i++){ printf("[%d]%-12s",farms[i].id,farms[i].name); if((i+1)%3==0){ printf("\n"); } } printf("\n---------------------\n"); printf("请输入要删除的产地ID:"); scanf("%d",&deleteld); int targetlndex = -1; for(int i=0;i<count;i++){ if(farms[i].id==deleteld){ targetlndex = i; break; } } if(targetlndex==-1){ printf("错误:未找到ID为%d的记录。\n",deleteld); return 0; } printf("\n拟删除记录详情:\n"); printf("ID:%d 名称:%s 产量:%d吨\n", farms[targetlndex].id,farms[targetlndex].name, farms[targetlndex].yield); printf("警告:此操作不可撤回!确定删除吗?(y/n):"); getchar(); scanf("%c",&confirm); if(confirm !='y'&&confirm!='Y'){ printf("此操作已安全取消。\n"); return 0; } for(int i =targetlndex;i<count-1;i++){ farms[i]=farms[i+1]; } count--; fp = fopen("farms.txt","w"); if(fp==NULL){ printf("系统错误:无法更新文件数据。\n"); return 1; } for(int i=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 targetId, choice; 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 0; } // 2. 展⽰已有 ID,每⾏ 3 个并对⻬ printf("--- 当前系统内的产地 ID 列表 ---\n"); for (int i = 0; i < count; i++) { printf("[%d] %-12s", farms[i].id, farms[i].name); // %-12s 保证名称左对⻬ if ((i + 1) % 3 == 0) { printf("\n"); // 每⾏输出3个后换⾏ } } printf("\n-------------------------------\n"); // 3. ⽤户选择要修改的 ID printf("请输⼊您想要修改的产地 ID: "); scanf("%d", &targetId); int index = -1; for (int i = 0; i < count; i++) { if (farms[i].id == targetId) { index = i; break; } } if (index == -1) { printf("未找到 ID 为 %d 的记录。\n", targetId); return 0; } // 4. 选择修改项 printf("\n已锁定产地: %s (产量: %d 吨)\n", farms[index].name, farms[index].yield); printf("1. 修改产地名称\n"); printf("2. 修改预计产量\n"); printf("3. 取消修改\n"); printf("请选择操作 (1-3): "); scanf("%d", &choice); switch (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 (int i = 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", targetId); return 0; }
/* project4_search. 查询信息 */ #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. 获取⽤户查询条件 printf("----------- 廉江红橙产量筛选系统 -----------\n"); printf("请输⼊产量阈值(吨):"); if (scanf("%d", &threshold) != 1) { printf("输⼊⽆效。\n"); fclose(fp); // 记得关闭⽂件 return 1; } printf("\n正在查询产量⼤于 %d 吨的产地...\n", threshold); printf("-------------------------------------------\n"); printf("%-10s %-20s %-10s\n", "ID", "产地名称", "预计产量(吨)"); printf("-------------------------------------------\n"); // 3. 循环逐⾏解析数据 // fscanf 返回成功读取的项⽬数,若达到⽂件末尾则返回 EOF while (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/2/6 21:45:40

Mem Reduct深度解析:Windows内存管理的精准医疗方案

Mem Reduct深度解析&#xff1a;Windows内存管理的精准医疗方案 【免费下载链接】memreduct Lightweight real-time memory management application to monitor and clean system memory on your computer. 项目地址: https://gitcode.com/gh_mirrors/me/memreduct 当你…

作者头像 李华
网站建设 2026/2/10 15:09:58

Windows虚拟磁盘终极方案:免费提升系统性能的完整指南

还在为电脑卡顿、文件加载慢而烦恼&#xff1f;想要体验SSD都无法企及的极速读写性能&#xff1f;今天为你介绍一款能够彻底改变Windows文件管理体验的神器——ImDisk虚拟磁盘工具&#xff01; 【免费下载链接】ImDisk ImDisk Virtual Disk Driver 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/2/5 13:15:41

高效视频下载完全指南:轻松掌握批量处理技巧

高效视频下载完全指南&#xff1a;轻松掌握批量处理技巧 【免费下载链接】bilibili-downloader B站视频下载&#xff0c;支持下载大会员清晰度4K&#xff0c;持续更新中 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-downloader 想要永久保存B站上的精彩视频…

作者头像 李华
网站建设 2026/2/6 8:07:03

抖音直播下载神器:永久保存精彩瞬间的终极解决方案

抖音直播下载神器&#xff1a;永久保存精彩瞬间的终极解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 你是否曾经为错过精彩的抖音直播而懊恼&#xff1f;那些转瞬即逝的直播内容&#xff0c;一旦错…

作者头像 李华
网站建设 2026/2/2 0:52:37

Better BibTeX插件终极安装与使用指南

Better BibTeX插件终极安装与使用指南 【免费下载链接】zotero-better-bibtex Make Zotero effective for us LaTeX holdouts 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-bibtex Better BibTeX&#xff08;BBT&#xff09;是专为LaTeX和Markdown用户设…

作者头像 李华
网站建设 2026/2/8 0:22:13

PyTorch-CUDA-v2.6镜像与MLflow Model Registry集成发布模型

PyTorch-CUDA-v2.6 镜像与 MLflow Model Registry 的集成实践&#xff1a;构建高效 MLOps 流程 在现代 AI 工程实践中&#xff0c;一个常见的困境是&#xff1a;模型训练脚本在本地运行良好&#xff0c;但换到服务器或同事机器上却因环境差异而失败&#xff1b;更糟的是&#x…

作者头像 李华