2021-12-06 自动化专业C语言上机作业参考答案19

news/2024/10/30 23:24:33/

上机练习19

p314.c

/*编写一程序P314.C实现以下功能有一存储很多商品数据(每件商品的属性先后
包括:品名、规格、单价(有小数位)、数量,数据的最长长度分别为20、10、6、5,在文件中以空格为分隔,每个商品的数
据占一行)的文本文件,从键盘输入某种商品的品名,要求在文件中查找有无相应品名商品(可能有多条记录或没有),若有则
在屏幕上显示出相应的商品的品名、规格、数量、单价(显示时,品名、规格、数量、单价之间使用逗号(,)作分隔,单价显
示时只显示2位小数),若无则显示没有相应品名的商品。单击此处下载程序运行时测试用的商品数据文件sp.txt并保存到程序P314.C所在的文件夹且文件名保持不变。
编程可用素材:
printf("Please input shang pin pin ming:");
printf("\ncha zhao qing kuang:\n");
printf("mei you shang pin :);文本文件中一行: xuebi da 6.00 345
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main(void)
{FILE *fp;char name[21];char inputName[21];char size[11];float price;int number;int flag = 0;printf("Please input shang pin pin ming:");scanf("%s", inputName);// file openfp = fopen("sp.txt", "r");if (NULL == fp){printf("file open error.\n");exit(1);}// find spprintf("\ncha zhao qing kuang:\n");while (fscanf(fp, "%s %s %f %d", name, size, &price, &number) == 4){if (strcmp(inputName, name) == 0){flag = 1;printf("%s,%s,%d,%.2f\n", name, size, number, price);}}if (flag == 0){printf("mei you shang pin :%s", inputName);}// file close;fclose(fp);fp = NULL;return 0;
}

p320.c

/*
编写一程序P320.C实现以下功能在文本文件Comp.txt里有需要计算结果的整数算式,每个算式占一行且文件中只有一个算式,运算类型只有“加法(+)”或
者“减法(-)”且运算符前后至少有一个空格。计算该算式的结果并在屏幕上显示。单击此处下载程序运行时测试用的算式文件Comp.txt(加法示例,编程时还应考虑算式为减法的情况)并保存到程序P320.C所
在的文件夹且文件名保持不变。
编程可用素材:printf("%d + %d = %d\n"...、printf("%d - %d = %d\n"...。
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{int num1, num2;int result;char ch;FILE *fp;// 开文件fp = fopen("Comp.txt", "r");if (NULL == fp){printf("file open error! \n");exit(1);}// 读,算while (3 == fscanf(fp, "%d %c %d", &num1, &ch, &num2)){if ('+' == ch){result = num1 + num2;printf("%d + %d = %d\n", num1, num2, result);}else if ('-' == ch){result = num1 - num2;printf("%d - %d = %d\n", num1, num2, result);}else{printf("operator error!\n");fclose(fp);exit(2);}}// 关文件fclose(fp);fp = NULL;return 0;
}

p321.c

/*
编写一程序P321.C实现以下功能在文本文件Comp.txt里有需要计算结果的整数算式,每个算式占一行且文件中有多个(数量不确定)算式,
运算类型只有“加法(+)”或者“减法(-)”且运算符前后至少有一个空格。计算这些算式的结果并在屏幕上显示。单击此处下载程序运行时测试用的算式文件Comp.txt并保存到程序P321.C所在的文件夹且文件名保持不变。
编程可用素材:printf("Line %03d:  %5d + %-5d = %-6d\n"...、printf("Line %03d:  %5d - %-5d = %-6d\n"...。
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{int num1, num2;int result;char ch;FILE *fp;int i = 0;// 开文件fp = fopen("Comp.txt", "r");if (NULL == fp){printf("file open error! \n");exit(1);}// 读,算while (3 == fscanf(fp, "%d %c %d", &num1, &ch, &num2)){if ('+' == ch){result = num1 + num2;// printf("%d + %d = %d\n", num1, num2, result);printf("Line %03d:  %5d + %-5d = %-6d\n", i + 1, num1, num2, result);}else if ('-' == ch){result = num1 - num2;// printf("%d - %d = %d\n", num1, num2, result);printf("Line %03d:  %5d - %-5d = %-6d\n", i + 1, num1, num2, result);}else{printf("operator error!\n");fclose(fp);exit(2);}i++;}// 关文件fclose(fp);fp = NULL;return 0;
}

p322.c

/*
编写一程序P322.C实现以下功能在文本文件Comp.txt里有需要计算结果的整数算式,每个算式占一行且文件中有多个算式,运算类型
只有“加法(+)”或者“减法(-)”且运算符前后至少有一个空格——但其中可能有空行和不符合要求的算式(但其行长
肯定不超过200字节)。计算这些算式的结果并在屏幕上显示,空行不作任何处理,不符合要求的算式则显示Error!。单击此处下载程序运行时测试用的算式文件Comp.txt并保存到程序P322.C所在的文件夹且文件名保持不变。
编程可用素材:
printf("Line %03d: Error!\n"...、
printf("Line %03d:  %5d + %-5d = %-6d\n"...、
printf("Line %03d:  %5d - %-5d = %-6d\n"...。▲ 提示:建议使用fgets读入一行到字符串、再使用sscanf从字符串中读,如此逐行处理!读文件:1. 读到空行: 计数器加,但不处理输出2. 读到非空行->错行: 计数器加,出输3. 读到非空行->可正常处理行: 计数器加,出输4. 读到末尾: 程序结束
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{FILE *fp;int num1, num2;int result;char op;int i = 0;char line[201];// 开文件fp = fopen("Comp.txt", "r");if (NULL == fp){printf("file open error!\n");exit(1);}// 读文件while (1){// 读到末尾: 程序结束,如果已经读不到数据了,退出if (fgets(line, 200, fp) == NULL){break;}// 读到了数据,分析,是不是出错行if (EOF == sscanf(line, "%d %c %d", &num1, &op, &num2)) // 是空行{// 不做处理,直接去计数}else // 不是空行{if (3 == sscanf(line, "%d %c %d", &num1, &op, &num2)) //可以刚好读到三个数,一定可以进行后面的判断{// 只算加和减if (op == '+'){result = num1 + num2;printf("Line %03d:  %5d + %-5d = %-6d\n", i + 1, num1, num2, result);}else if (op == '-'){result = num1 - num2;printf("Line %03d:  %5d - %-5d = %-6d\n", i + 1, num1, num2, result);}else{printf("Line %03d: Error!\n", i + 1);}}else{printf("Line %03d: Error!\n", i + 1);}}i++;}// 关文件fclose(fp);fp = NULL;return 0;
}

p323.c

/*
编写一程序P323.C实现以下功能在文本文件Comp.txt里有需要计算结果的整数算式,每个算式占一行且文件中只有一个算式,
运算类型只有“加法(+)”、“减法(-)”、“乘法(*)”且运算符前后至少有一个空格。计算该算式的结果并在屏幕上显示。单击此处下载程序运行时测试用的算式文件Comp.txt并保存到程序P323.C所在的文件夹且文件名保持不变。
编程可用素材:printf("%d %c %d %c %d = %d\n"…。
*/
#include <stdio.h>
#include <stdlib.h>// 完成按运算符进行运算
int calculate(int d1, char op, int d2);int main(void)
{int num1, num2, num3;char op1, op2;int result;FILE *fp;// open filefp = fopen("Comp.txt", "r");if (NULL == fp){printf("file open error!\n");exit(1);}// 读文件,进行处理while (5 == fscanf(fp, "%d %c %d %c %d", &num1, &op1, &num2, &op2, &num3)){// 第一个运算符对于运算顺序没有影响,第二个是*,则先算if (op2 == '*'){// 第二运算先算result = calculate(num2, op2, num3);result = calculate(num1, op1, result);}else{// 正常顺序运算result = calculate(num1, op1, num2);result = calculate(result, op2, num3);}// 算完即可输出printf("%d %c %d %c %d = %d\n", num1, op1, num2, op2, num3, result);}// close filefclose(fp);fp = NULL;return 0;
}int calculate(int d1, char op, int d2)
{//只有“加法(+)”、“减法(-)”、“乘法(*)”if (op == '+'){return d1 + d2;}else if (op == '-'){return d1 - d2;}else{return d1 * d2;}
}

p324.c

/*
编写一程序P324.C实现以下功能在文本文件Comp.txt、CompA.txt、CompB.txt里有需要计算结果的整数算式,文件Comp.txt提供参加运算的第一个数,
文件CompA.txt提供进行运算的运算符(只有“加法(+)”或者“减法(-)”),文件CompB.txt提供参加运算的第二个数,每个数或
运算符均占一行,组合起来成为一个算式,遇到无法组成一个完整算式时即结束运算。这样的算式有多个(数量不确定)。
计算这些算式的结果并在屏幕上显示。单击下载程序运行时测试用的算式文件Comp.txt、CompA.txt、CompB.txt并保存到程序P324.C所在的文件夹且文件名
保持不变。编程可用素材:编程可用素材:printf("Line %03d:  %5d %c %-5d = %-6d\n"…。
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{int num1, num2;int result;char ch;FILE *fp1, *fp2, *fp3;int i = 0;// 开文件fp1 = fopen("Comp.txt", "r");if (NULL == fp1){printf("file1 open error! \n");exit(1);}fp2 = fopen("CompA.txt", "r");if (NULL == fp2){printf("file2 open error! \n");fclose(fp1);exit(1);}fp3 = fopen("CompB.txt", "r");if (NULL == fp3){printf("file3 open error! \n");fclose(fp1);fclose(fp2);exit(1);}// 分别读三个文件,获取 数1,符号,数2,再运算// 注意,%c前多一个空格,清除上一次缓冲区里读入的空格,否则,下一个字符读取不正确while (1 == fscanf(fp1, "%d", &num1) && 1 == fscanf(fp2, " %c", &ch) && 1 == fscanf(fp3, "%d", &num2)){if ('+' == ch){result = num1 + num2;}else if ('-' == ch){result = num1 - num2;}else{printf("operator error!\n");fclose(fp1);fclose(fp2);exit(2);}printf("Line %03d:  %5d %c %-5d = %-6d\n", i + 1, num1, ch, num2, result);i++;}// 关文件fclose(fp1);fclose(fp2);fclose(fp3);fp1 = NULL;fp2 = NULL;fp3 = NULL;return 0;
}

p325.c

/*
编写一程序P325.C实现以下功能在文本文件Comp.txt、CompA.txt、CompB.txt里有需要计算结果的整数算式,文件Comp.txt提供参加运算的第一个
数,文件CompA.txt提供进行运算的运算符(只有“加法(+)”或者“减法(-)”),文件CompB.txt提供参加运算的第二个数,
每个数或运算符均占一行,组合起来成为一个算式,遇到无法组成一个完整算式时即结束运算。
这样的算式有多个(数量不确定)。计算这些算式的结果并将结果以文本文件格式保存到程序P325.C所在的文件夹中且文件名
命名为CompC.txt。单击下载程序运行时测试用的算式文件Comp.txt、CompA.txt、CompB.txt并保存到程序P325.C所在的文件夹且文件名
保持不变。编程可用素材:编程可用素材:fprintf(…"Line %03d:  %5d %c %-5d = %-6d\n"…。
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{int num1, num2;int result;char ch;FILE *fp1, *fp2, *fp3, *fp4;int i = 0;// 开文件fp1 = fopen("Comp3.txt", "r");if (NULL == fp1){printf("file1 open error! \n");exit(1);}fp2 = fopen("CompA.txt", "r");if (NULL == fp2){printf("file2 open error! \n");fclose(fp1);exit(1);}fp3 = fopen("CompB.txt", "r");if (NULL == fp3){printf("file3 open error! \n");fclose(fp1);fclose(fp2);exit(1);}fp4 = fopen("CompC.txt", "w");if (NULL == fp3){printf("file4 open error! \n");fclose(fp1);fclose(fp2);fclose(fp3);exit(1);}// 分别读三个文件,获取 数1,符号,数2,再运算// 注意,%c前多一个空格,清除上一次缓冲区里读入的空格,否则,下一个字符读取不正确while (1 == fscanf(fp1, "%d", &num1) && 1 == fscanf(fp2, " %c", &ch) && 1 == fscanf(fp3, "%d", &num2)){if ('+' == ch){result = num1 + num2;}else if ('-' == ch){result = num1 - num2;}else{printf("operator error!\n");exit(2);}// printf("Line %03d:  %5d %c %-5d = %-6d\n", i + 1, num1, ch, num2, result);fprintf(fp4, "Line %03d:  %5d %c %-5d = %-6d\n", i + 1, num1, ch, num2, result);i++;}// 关文件fclose(fp1);fclose(fp2);fclose(fp3);fclose(fp4);fp1 = NULL;fp2 = NULL;fp3 = NULL;fp4 = NULL;return 0;
}

p328.c

/*
编写一程序P328.C实现以下功能程序运行时,先从键盘输入一个文本文件的文件名(约定:字符数≤127字节,可含路径),再在屏幕上显示该文件的内容。单击此处下载程序运行时测试用的文件Test.txt。
编程可用素材:
printf("input the file's name: ");
printf("\nfile open error!");
printf("------------------------File Begin:----------------------\n");
printf("\n------------------------ File End. ----------------------\n");*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{char name[128];int chI;char ch;FILE *fp;printf("input the file's name: ");gets(name);fp = fopen(name, "r");if (NULL == fp){printf("\nfile open error!");exit(1);}printf("------------------------File Begin:----------------------\n");while ((chI = fgetc(fp)) != EOF){ch = (char)chI;putchar(ch);}printf("\n------------------------ File End. ----------------------\n");fclose(fp);fp = NULL;return 0;
}

p330.c

/*
编写一程序P330.C实现以下功能程序运行时,先从键盘输入一个文本文件的文件名(约定:字符数≤127字节,可含路径),再在屏幕上显示该文件的内容。
注意,对于文件中的字符*,在屏幕上改为显示字符@。单击此处下载程序运行时测试用的文件Test.txt。
编程可用素材:
printf("input the file's name: ");
printf("\nfile open error!");
printf("------------------------File Begin:----------------------\n");
printf("\n------------------------ File End. ----------------------\n");
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{char name[128];int chI;char ch;FILE *fp;printf("input the file's name: ");gets(name);fp = fopen(name, "r");if (NULL == fp){printf("\nfile open error!");exit(1);}printf("------------------------File Begin:----------------------\n");while ((chI = fgetc(fp)) != EOF){ch = (char)chI;if (ch == '*'){putchar('@');}else{putchar(ch);}}printf("\n------------------------ File End. ----------------------\n");fclose(fp);fp = NULL;return 0;
}

p796.c

/*
编写一程序P796.C实现以下功能在磁盘上新建一个文件Test.txt,将从键盘读入的多个字符存储到该文件中,要求如下:(1)若输入的字符中有小写字母,则应先将其转换为大写后再存入。(2)输入!表示输入结束且!不存入文件中。(3)当文件创建失败或向文件写入字符时出错,应显示指定的出错信息并终止程序的执行。(4)程序的返回值(即由main函数return的值和程序使用exit终止运行时返回的值,也称退出代码)规定为:①入字运行正常返回0 ②文件创建失败返回1 ③向文件写符时出错返回2编程可用素材:
printf("\nCreate file error!\n");
printf("Input chars: ");
printf("\nWriting file error!\n");
*/
#include <stdio.h>
#include <stdlib.h>int main(void)
{FILE *fp;char ch;// file openfp = fopen("Test.txt", "w");if (NULL == fp){printf("\nCreate file error!\n");exit(1);}printf("Input chars: ");while (1){ch = getchar();if ('!' == ch){break;}if (ch >= 'a' && ch <= 'z'){ch -= 'a' - 'A'; // ch = ch - 32;}if ((fputc(ch, fp)) == EOF) // 注意,写入出错,才退出{printf("\nWriting file error!\n");fclose(fp);exit(2);}}// file closefclose(fp);fp = NULL;return 0;
}

http://www.ppmy.cn/news/148749.html

相关文章

Java黑皮书课后题第10章:*10.10(Queue类)10.6节给出一个Stock类。设计一个名为Queue的类用于存储整数。像栈一样,队列保存元素。在栈中,元素后进先出。队列中元素先进先出

10.10&#xff08;Queue类&#xff09;10.6节给出一个Stock类&#xff0c;设计一个名为Queue的类用于存储整数 题目程序破题 代码Test10.javaTest10_Queue.java UML 题目 程序 Test10.java&#xff1a;测试程序 Test10_Queue.java&#xff1a;构造程序 破题 以数组形式完成一…

2023年计算机专业毕业设计选题有哪些?(附源码)

计算机毕业设计这个选题的话其实有很多的&#xff0c;就看你自己能接受怎么样的&#xff0c;比如可以做网站类、系统类、小程序类、安卓app、大数据类等等&#xff0c;这个也要看你个人能力和技术问题&#xff0c;如果技术小白或者有一点点基础的话建议选择网站类和系统类的&am…

2022FALL嵌入式大纲

Jamslade 部分内容有遗漏&#xff0c;可结合 超文本 2022FALL《嵌入式系统原理》期末复习笔记 一起观看 文章目录 嵌入式系统片上系统实时系统硬实时系统软实时系统伪指令DMA传输波特率单/半双/全双工通信&#xff1b;对齐/非对齐访问地址译码代码临界区RISCBIOSUARTSPII2CWDTR…

【PMP学习笔记】第9章项目资源管理

⚫ 了解几个激励理论—马斯洛&#xff1a;需求层次理论 马斯洛的需求层次理论----人有五个层次的需求&#xff0c;从最低等级到最高等级依次是&#xff1a;生理需求、安全需求、 社交需求、尊重需求、自我实现需求。通常&#xff0c;人们只有在较低层次的需求得到满足后&#…

Downloading NEX-GDDP data from google Earth Engine

https://code.earthengine.google.com/139432f76ae3f6a81b1459762325ef7f UCASleon // 指定开始和结束日期 var startDate ee.Date(2018-01-01); var endDate ee.Date(2019-01-01);// get the dataset between date range and extract band on interest var dataset ee.Im…

《操作系统真象还原》第七章 中断 第一节 初探中断

配合视频学习效果更佳&#xff1a;https://www.bilibili.com/video/BV1Nk4y1s7Qg/?vd_source701807c4f8684b13e922d0a8b116af31 代码仓库地址&#xff1a;https://github.com/xukanshan/the_truth_of_operationg_system 中断就是发生了事情通知CPU&#xff0c;但是处不处理就…

day03_《谷粒商城》的完整流程(详细版二)

文章目录 笔记链接:P247—P260 RabbitMQ的知识P261—P263 订单服务—环境搭建P264 订单确认页—登录拦截P265 订单确认页—数据获取1P266 订单确认页—数据获取2P267 订单确认页—Feign远程调用丢失请求头问题1.总说:2.代码:P268 订单确认页—Feign异步调用丢失请求头问题P2…

数据挖掘期末考题针对复习

选择题 1、下面不属于数据挖掘迭代序列的是( ) A、数据清理 B、数据集成 C、数据删除 D、数据变换 C 解析&#xff1a; 数据清理、数据集成、数据变换、数据归约 2、属性(attribute)是一个数据字段&#xff0c;表示数据对象的一个特征。下面不属于典型的属性分类的是( ) A、…