news 2026/3/10 23:30:53

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/3/4 8:15:37

基于Altium Designer的Gerber转PCB流程全面讲解

从制造文件到可编辑设计&#xff1a;用Altium Designer逆向还原PCB的实战全解在一次紧急维修任务中&#xff0c;客户递来一块老旧工控板&#xff0c;说&#xff1a;“主板停产了&#xff0c;备件也没了&#xff0c;只能靠这块板子续命。”我接过电路板&#xff0c;打开资料包—…

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

OTG模式下外设供电方案设计:项目应用中的电源路径管理

OTG供电设计实战&#xff1a;如何让手机安全驱动U盘&#xff1f;揭秘背后的电源路径管理你有没有遇到过这样的情况&#xff1a;用OTG线把U盘插进手机&#xff0c;结果刚一接上&#xff0c;手机突然重启、电量飞掉10%&#xff0c;甚至直接弹出“低电警告”&#xff1f;这并不是手…

作者头像 李华
网站建设 2026/3/10 0:47:03

超详细版Proteus仿真中DS18B20温度采集实现过程

从零开始掌握DS18B20温度采集&#xff1a;Proteus仿真实战全解析你有没有遇到过这样的情况&#xff1f;刚焊好一个基于DS18B20的温度监测板子&#xff0c;通电后LCD却显示“85C”——这其实是传感器未初始化成功的默认值。更糟的是&#xff0c;反复检查线路也找不到问题所在&am…

作者头像 李华
网站建设 2026/3/5 2:31:26

day 40

浙大疏锦行

作者头像 李华
网站建设 2026/3/1 19:01:59

Docker Compose编排多个PyTorch服务实现负载均衡

Docker Compose编排多个PyTorch服务实现负载均衡 在AI模型服务化部署的实践中&#xff0c;一个常见的挑战是&#xff1a;如何让深度学习推理接口既能稳定响应高并发请求&#xff0c;又能充分利用GPU资源&#xff1f;传统的单实例部署往往在流量激增时出现延迟飙升甚至服务崩溃。…

作者头像 李华
网站建设 2026/3/9 19:52:12

Jupyter Notebook转Python脚本自动化PyTorch训练任务

Jupyter Notebook转Python脚本自动化PyTorch训练任务 在深度学习项目中&#xff0c;一个常见的开发模式是&#xff1a;研究人员先在 Jupyter Notebook 中快速验证模型结构、调试数据流程&#xff0c;等到实验稳定后&#xff0c;再将代码迁移到生产环境进行大规模、自动化的训练…

作者头像 李华