news 2026/4/18 12:08:49

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/4/18 10:07:10

ECDICT开源英中词典数据库:技术实现与应用实践

ECDICT开源英中词典数据库&#xff1a;技术实现与应用实践 【免费下载链接】ECDICT Free English to Chinese Dictionary Database 项目地址: https://gitcode.com/gh_mirrors/ec/ECDICT 问题背景&#xff1a;词典数据集成面临的挑战 在开发语言学习应用或翻译工具时&a…

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

终极指南:掌握新一代信息保护工具,告别重要消息丢失烦恼

终极指南&#xff1a;掌握新一代信息保护工具&#xff0c;告别重要消息丢失烦恼 【免费下载链接】Anti-recall Android 免root 防撤回神器 ! 项目地址: https://gitcode.com/gh_mirrors/an/Anti-recall 你是否曾在工作群中看到任务安排后又瞬间消失&#xff1f;是否在商…

作者头像 李华
网站建设 2026/4/18 8:18:38

终极指南:如何使用PodcastBulkDownloader轻松批量下载播客内容

终极指南&#xff1a;如何使用PodcastBulkDownloader轻松批量下载播客内容 【免费下载链接】PodcastBulkDownloader Simple software for downloading podcasts 项目地址: https://gitcode.com/gh_mirrors/po/PodcastBulkDownloader 想要一次性下载整个播客系列的所有剧…

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

E-Viewer终极指南:打造专业级在线漫画阅读体验

E-Viewer作为一款专为Windows平台设计的在线漫画客户端应用&#xff0c;以其出色的性能和贴心的用户体验成为漫画爱好者的首选工具。这款UWP应用不仅提供了流畅的阅读体验&#xff0c;还支持多语言界面、智能搜索、个性化设置等丰富功能&#xff0c;让您享受专业级的漫画浏览服…

作者头像 李华
网站建设 2026/4/18 8:47:50

Real-ESRGAN-GUI终极指南:3步掌握AI图像无损放大技术

还在为低分辨率图片发愁吗&#xff1f;想要将模糊的老照片变清晰&#xff0c;或将动漫截图放大到印刷级别质量&#xff1f;Real-ESRGAN-GUI正是您需要的解决方案。这款基于Flutter框架开发的跨平台工具&#xff0c;将顶尖的AI超分辨率技术封装在简洁易用的图形界面中&#xff0…

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

强者思维:掌控人生,弱者思维:被情绪支配

强者思维:掌控人生,弱者思维:被情绪支配 目录 强者思维:掌控人生,弱者思维:被情绪支配 强者思维和弱者思维的区别:人和人 建立关系的本质就是交换, 强者思维的人都是没有情绪的:站在理性的角度, 一个人忠不忠诚重要吗?是不是真的爱自己重要吗? 建立自信,就要学会装…

作者头像 李华