上机练习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;
}

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

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

    上机练习06 p112.c /* 编写一程序P112.C实现以下功能设某企业2006年的产值为5000万,计划以后每年的增长率为x(x从键盘输入,例如输入8.75表示8.75%),计算该企业的产值在哪 ...

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

    上机练习20 p312.c /* 编写一程序P312.C实现以下功能有一存储很多商品数据(每件商品的属性先后包括:品名.规格.数量.单价,编程时相应的数据类型 分别定义为字符串char(20).字符串 ...

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

    上机练习04 p111.c /* 编写一程序P111.C实现以下功能x(x只考虑整数int且必须定义为int.但F(x)完全可能超过int的表示范围) 通过键盘输入(输入前给出提示Please inp ...

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

    上机练习11 p137.c /* 编写一程序P137.C实现以下功能通过键盘输入两个姓名(约定均为汉字且最多4个汉字),判断并输出二者是否同姓. 编程可用素材: printf("请输入姓名1 ...

  5. c语言第一次上机作业答案,第一次上机作业参考答案

    大连理工大学 c语言作业 第一次上机作业参考答案: 1. 大写字母转换成小写字母 从键盘输入一个大写英文字母,输出相应的小写字母. 例:输入 G 输出 g #include void main() { ...

  6. c语言上机实验第五章答案,安徽大学C语言上机实验参考答案

    安徽大学C语言上机实验参考答案 C语言实验参考答案 实验一 5.输入并运行自已编写的程序(教材第一章P14 三编程题). 实验二 1.编写一个程序,从键盘接收3个实数(分别为10.0.20.0.5.0 ...

  7. 2021年春季学期-信号与系统-第一次作业参考答案-第三题

      本文是: 2021年春季学期-信号与系统-第一次作业参考答案 的参考答案. ▌第三题 判断下列各信号是否为周期信号, 如果是周期信号求出其基波周期. (1) cos⁡(10t)−cos⁡(30πt ...

  8. 2021年春季学期-信号与系统-第一次作业参考答案-第二题

      本文是: 2021年春季学期-信号与系统-第一次作业参考答案 的参考答案. ▌第二题: 写出下图所示的各波形的函数表达式: 第一小题: 求解: 这个函数可以使用分段函数来表示: 可以利用∣t∣\l ...

  9. 2021年春季学期-信号与系统-第一次作业参考答案-第六题

      本文是: 2021年春季学期-信号与系统-第一次作业参考答案 的参考答案. ▌第六题 MATLAB实验题1 请从网络学堂上下载音频信号,使用MATLAB软件绘制出它的视频联合分布图,分析其中电话号 ...

最新文章

  1. 2.1/2.2 系统目录结构, 2.3 ls命令, 2.4 文件类型, 2.5 alias命令
  2. jmeter 线程执行顺序_面试官让我说出8种线程顺序执行的方法!我懵了
  3. 第七讲:用户和用户组管理
  4. 开天辟地 —— Go scheduler 初始化(二)
  5. 关于__str__和__repr__的用法和区别
  6. Vue3+Vant+Vue-cli+Restful api实战—图书商城移动端
  7. 博客网最终能否破茧成蝶?
  8. 在windows实现和smtp交互发送邮件
  9. python基础教程菜鸟教程-python基础菜鸟教程,Python的基础语法
  10. python后台——aiohttp入门
  11. ENVI:There are no available ROls or EVFs associated with this input file.
  12. 29_2020年12月29日疫情一览
  13. Win10+caffe+CUDA9.1+vs2013+Matlab2018b+GPU环境,跑通faster_rcnn-master
  14. 【网络安全】PGP/GPG优质教程汇总
  15. 模拟电路,包括低频(模拟电子技术基础)和高频(高频电子线路)
  16. 电脑使用技巧提升篇2:修改电脑桌面固定图标
  17. 苏宁小店上线咖啡业务,成为国内O2O社区便利店的创领者!
  18. ubtuntu error:E45:‘readonly’ option is set(add ! to override
  19. FPGA信号处理系列文章——定点数据截位处理
  20. 三层交换(VLAN间通信)

热门文章

  1. Unknown column 'JOIN.id' in 'order clause'和 Unknown column 'XXXX.id' in 'order clause'的解决办法
  2. 讨论IOS开发以及自己的经验
  3. 截图工具FastStone Capture 10.0官方简体中文版
  4. awk 匹配_详解Linux三剑客之awk
  5. 硬件知识(二)无源RC二阶滤波电路
  6. IntelliJ IDEA 小技巧之Bookmark(书签)的使用
  7. fscanf php,php fscanf() 函数使用方法
  8. 若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起
  9. MapX编程详解(C++)----MapX发布技术
  10. [墨者学院] 日志文件分析溯源(脱裤的IP地址)