文章目录

  • 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises26
  • P320
  • P321
  • P324
  • P325

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises26

本次练习用到的数据文件

Comp.txt for P320

123 + 556

Comp.txt for P321

123 + 556
300 - 215
1001 - 18976
9123 + 5156

Comp.txt for P324

123
300
1001
9123
9000

CompA.txt

+
-
-
+

compB.txt

556
215
18976
5156

P320

/* 读文件,完成运算
编写一程序P320.C实现以下功能在文本文件Comp.txt里有需要计算结果的整数算式,每个算式占一行且文件中只有一个算式,运算类型只有“加法(+)”或者“减法(-)”且运算符前后至少有一个空格。
计算该算式的结果并在屏幕上显示。单击此处下载程序运行时测试用的算式文件Comp.txt(加法示例,编程时还应考虑算式为减法的情况)并保存到程序P320.C所在的文件夹且文件名保持不变。
编程可用素材:
printf("%d + %d = %d\n");
printf("%d - %d = %d\n");程序的运行效果应类似地如图1和图2所示。123 + 556 = 679
图1 程序运行效果示例(测试用算式文件Comp.txt内容为整数加法算式)123 - 556 = -433    */
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{int data1, data2;int result;char ch;    FILE *fp;// open fileif ((fp = fopen("Comp.txt", "r")) == NULL){printf("Open file failure.\n");exit(0);}// read data// 只有一行数据,直接格式化读取,注意,%c前有一个空格fscanf(fp, "%d %c %d", &data1, &ch, &data2);if ('+'==ch){result = data1 + data2;printf("%d + %d = %d\n", data1, data2, result);}else{result = data1 - data2;printf("%d - %d = %d\n", data1, data2, result);}//close filefclose(fp);return 0;
}

P321

/*
编写一程序P321.C实现以下功能在文本文件Comp.txt里有需要计算结果的整数算式,每个算式占一行且文件中有多个(数量不确定)算式,运算类型只有“加法(+)”或者“减法(-)”且运算符前后至少有一个空格。
计算这些算式的结果并在屏幕上显示。单击此处下载程序运行时测试用的算式文件Comp.txt并保存到程序P321.C所在的文件夹且文件名保持不变。
编程可用素材:
printf("Line %03d:  %5d + %-5d = %-6d\n");
printf("Line %03d:  %5d - %-5d = %-6d\n");程序的运行效果应类似地如图1所示。Line 001:    123 + 556   = 679
Line 002:    300 - 215   = 85
Line 003:   1001 - 18976 = -17975
Line 004:   9123 + 5156  = 14279
图1 程序运行效果示例(使用系统提供的测试用算式文件Comp.txt)*/
#include <stdio.h>
#include <stdlib.h>int main(int argc, char *argv[])
{int data1, data2;int result;char ch;int i = 1;FILE *fp;// open fileif ((fp = fopen("Comp.txt", "r")) == NULL){printf("Open file failure.\n");exit(0);}// read datawhile (!feof(fp)){fscanf(fp, "%d %c %d", &data1, &ch, &data2);if (!('+' == ch || '-' == ch)) // 如果读出来的不是运算符号,就终止{break;}if ('+' == ch){result = data1 + data2;printf("Line %03d:  %5d + %-5d = %-6d\n", i, data1, data2, result);}else{result = data1 - data2;printf("Line %03d:  %5d - %-5d = %-6d\n", i, data1, data2, result);}ch = '\0';  // 每一次用完之后,就将运算符清空i++;}// close filefclose(fp);return 0;
}
/* 另一种思路,就是将fscanf的返回值拿来判断程序中用到fscanf、fprintf,为了判断异常,需要知道两个函数的返回值含义原型:int fscanf(FILE* stream, const char* format, [argument...]);1.fscanf正常情况下返回从文件中读出的参数个数fscanf返回的是实际读取的数据个数,出错或者到结尾返回EOF。2.fprintf正常情况下返回写入文件的字节数注意细节:1. 在空白符这个意义上来讲,fscanf 对空格、制表符、换行符是一视同仁的,不加区分的;%s会跳过前面的空白符,但是不会跳过后面的空白符;%c不会跳过空白符。2. *表示读取一个域,但是不赋值给变量。3. []表示只读取中括号内的字符,[]表示不读取中括号内的字符,值得注意的是%[]s将不会跳过前面的空白符。4. 如果还没有任何一个域匹配成功或者任何一个匹配失败发生之前,就达到了文件流末尾,就算出错;或者读取文件流出错。这两种情况下,fscanf 返回EOF。*/

P324

/*
编写一程序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");程序的运行效果应类似地如图1所示。Line 001:    123 + 556   = 679
Line 002:    300 - 215   = 85
Line 003:   1001 - 18976 = -17975
Line 004:   9123 + 5156  = 14279
图1 程序运行效果示例
*/
#include <stdio.h>int main(void)
{int a1, a2, n = 1;char ch;FILE *fp1, *fp2, *fp3;fp1 = fopen("Comp.txt", "r");fp2 = fopen("CompA.txt", "r");fp3 = fopen("CompB.txt", "r");// 赋值后再判断,语句更简单一些if (fp1 == NULL || fp2 == NULL || fp3 == NULL){printf("error\n");return 0;}while (!feof(fp2))  // 运算完成,首先要有运算符{// 充分利用返回值判断读取是否成功,三个数据要同时都有,才可以完成运算if ((fscanf(fp1, "%d", &a1) == 1) && (fscanf(fp2, " %c", &ch) == 1) && (fscanf(fp3, "%d", &a2) == 1)){if (ch == '+'){printf("Line %03d:  %5d %c %-5d = %-6d\n", n, a1, ch, a2, a1 + a2);}else{printf("Line %03d:  %5d %c %-5d = %-6d\n", n, a1, ch, a2, a1 - a2);}n++;    // 计数器}else        // 如果读取失败【即两个操作数和一个操作符,只要有一个未读到数据,就不再处理】{break;} }// 要记得关闭文件fclose(fp1);fclose(fp2);fclose(fp3);return 0;
}

P325

/*
编写一程序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");程序运行后生成的文件CompC.txt的内容应类似地如图1所示。图1 程序运行效果示例(生成的文件CompC.txt之内容)*/
#include <stdio.h>
#include <stdlib.h>int main(int argc,char *argv[])
{int data1, data2, result;char ch;int i = 1;int r1, r2, r3; // 文件读取返回值FILE *fp1, *fp2, *fp3, *fp4;// 文件正常打开if ((fp1 = fopen("Comp.txt", "r"))==NULL){printf("open file Comp.txt failure.\n");exit(0);}if ((fp2 = fopen("CompA.txt", "r"))==NULL){printf("open file CompA.txt failure.\n");exit(0);}if ((fp3 = fopen("CompB.txt", "r"))==NULL){printf("open file CompB.txt failure.\n");exit(0);}// 注意:这个文件是写数据if ((fp4 = fopen("CompC.txt", "w"))==NULL){printf("open file CompC.txt failure.\n");exit(0);}while (!feof(fp2))   // 要有运算符号,才可以运算{r1 = fscanf(fp2, " %c", &ch);r2 = fscanf(fp1, "%d", &data1);r3 = fscanf(fp3, "%d", &data2);if ((r1 == 1) && (r2 == 1) && (r3 == 1))    //是否都成功读取了数据{if ('+' == ch){result = data1 + data2;fprintf(fp4, "Line %03d:  %5d %c %-5d = %-6d\n", i, data1, ch, data2, result);}else{result = data1 - data2;fprintf(fp4, "Line %03d:  %5d %c %-5d = %-6d\n", i, data1, ch, data2, result);}i++;    // 计数器}else{break;}}// 关闭文件fclose(fp1);fclose(fp2);fclose(fp3);fclose(fp4);return 0;
}

20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises26相关推荐

  1. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises02

    文章目录 20201015-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises02 成信大-C语言程序设计上机作业-参考 **20201学期& ...

  2. 20201104-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises07

    文章目录 20201022-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises07 P702 P754 P112 P793 P744 2020 ...

  3. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises29

    文章目录 20201022-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises29 程序改错与填空要求 具体要求 具体题面 D1 D2 D3 ...

  4. 20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises03

    文章目录 20201015-成信大-C语言程序设计-20201学期<C语言程序设计B>C-trainingExercises03 P122 P708 P133 P135 P721 P735 ...

  5. 成信大2020C语言编程114,南京信息工程大学2020考研大纲822CC语言程序设计

    <南京信息工程大学2020考研大纲822CC语言程序设计>由会员分享,可在线阅读,更多相关<南京信息工程大学2020考研大纲822CC语言程序设计(8页珍藏版)>请在人人文库网 ...

  6. 成信大807程序综合设计2015-2022历年真题及答案【持续更新中】

    快速导航 2015年 一.填空题 二.程序改错题 三.分析程序题 四.算法设计及编程题 2016年 一.单项选择题 二.判断题 三.程序分析题 四.程序设计题 2017年 一.单项选择题 二.判断题 ...

  7. 成信大807常用函数复习

    快临近考试了,这里在带领大家复习一遍常用的函数库函数,考场上可以直接调用省去一大堆的推演代码时间 目录 #include//以下函数包含使用头文件 #include//以下函数包含使用头文件 真题函数 ...

  8. 成信大C语言D1,网络空间安全学院成功举办C语言程序设计大赛

    4月24日晚,在学院蔺冰老师的细心指导下,由网络空间安全学院科技实践部主办,生活纪检部与外联部协办的C语言程序设计大赛在第二实验楼6607教室举行. 随着主持人宣布--比赛正式开始,现场的工作人员以最 ...

  9. 成信大c语言答案P239.C,2011秋季江苏省计算机二级C语言试题与答案.doc

    2011秋季江苏省计算机二级C语言试题与答案 [本试卷的欠妥处]经过对2011秋江苏省C语言试卷仔细阅读和上机调试,本试卷卷面错误比2011春有较大改进.但还存在如下三处不足之处或命题欠妥处,有待改进 ...

最新文章

  1. 将来以静态网页形式展示漏洞影响产品信息
  2. twisted Unhandled error in Deferred scrapy
  3. 【剑指Offer】16重建二叉树
  4. HTTP缓存原理介绍
  5. centOS6.5下openfoam-2.4.0安装及并行实现
  6. Asp.Net.Core WebApi 版本控制
  7. 如何在局域网上托管ASP.NET Web应用程序
  8. 使用 JQueryElement ResponseProgress 显示页面执行进度
  9. 【SQL】连接 —— 内连接、外连接、左连接、右连接、交叉连接
  10. Levenberg-Marquardt算法简介和C++实现
  11. FISCO BCOS源码(2)启动顺序
  12. php js树状菜单,php+mysql+js实现树形菜单代码
  13. PIC中档单片机汇编指令详解(2)
  14. python遥感数据有偿处理_地质男转行学遥感Python——DMSP数据预处理二
  15. docker本地仓库(本地镜像仓库)环境搭建
  16. ubuntu 卸载anaconda
  17. 通达信指标公式编写基础(一)
  18. 网络信息安全之零信任
  19. Win7串口开发的的一些错误以及解决方案
  20. 建立FTP服务器的免费软件

热门文章

  1. AX3600开启SSH功能
  2. 【ROS】移动机器人导航仿真(2)——SLAM(gmapping)
  3. 【USB网络摄像头】基于mjpeg-streamer的视频采集与播放【QT上位机软件】
  4. Panabit专业流量监控开源软件
  5. php 随机生成邮箱,php 生成随机帐号密码邮箱
  6. 新员工加入企业微信的2种方法:邀请和被邀请
  7. 一不小心就四个月的实习总结。。。
  8. 计算机教育专业的专业任选课,什么叫自由选修课 又什么叫全校任选课
  9. 友盟集成QQ第三方登录
  10. python网络爬虫进入(一)——简单的博客爬行动物