此作业的要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523
1.熟悉 命令行和控制台
(1)假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,请以数据流图并辅助以文字说明下述控制台命令的作用是什么。
答:b文件的内容输入进a程序中,然后将输出结果保存在c文件中。
(2)请用C语言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例。
代码如下:
#include<stdio.h> int main() { int a,b,c; scanf("a=%d b=%d c=%d",&a,&b,&c); printf("%d %d %d",a,b,c); }
执行效果截图如下:
2.熟悉 测试用例
(1)请在网站 [https://pintia.cn/]注册账号。
(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。
截图如下:
(3)代码解读。
发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。
1001 害死人不偿命的(3n+1)猜想
此题较为容易,利用递归判断下奇偶数便可得出结果。
代码片段如下:
int kan(int i,int n) { if(i==1) return n; else if(i%2==0) { n++; kan(i/2,n); } else if(i%2!=0) { n++; kan((3*i+1)/2,n); } }
执行效果截图如下:
1002 写出这个数
此题的难点在于如何利用字符串来处理这个大数,以及如何处理结果为X0X、X00(X指1-9任意一个数字)这一类数字的输出。
代码片段如下:
if(bai!=0) { switch1(bai); printf(" "); switch1(shi); printf(" "); switch1(ge); } else if(shi!=0) { switch1(shi); printf(" "); switch1(ge); } else if(ge!=0) { switch1(ge); }
执行效果截图如下:
1006 换个格式输出整数
此题较为简单,判断一下输入数字的位数然后利用循环便可做出来。
代码片段如下:
if(bai!=0) { for(int temp1=0;temp1<bai;temp1++) printf("B"); } if(shi!=0) { for(int temp2=0;temp2<shi;temp2++) printf("S"); } if(ge!=0) { for(int temp3=1;temp3<=ge;temp3++) printf("%d",temp3); }
执行效果截图如下:
(4)PSP
在同一篇博客中,参照教材第35页表2-2和表2-3,为上述3个题目制作PSP阶段表格。PSP阶段表格第1列分类,如功能1、功能2、测试功能1等。
出现时间差的原因:
1、在编写1001题和1006题的时候,我发现我的C语言并没有遗忘那么多,于是就很顺利的完成了编码以及测试,所以出现了预计时间大于实际时间的状况。
2、1002题的字符串处理大数在一开始构思的时候想的很好,到了实际编码才发现各种函数都忘得一干二净,只能临时补课;后来测试的时候出现了错误,一开始忽略掉了某种类型结果的输出,后来思考后改正。于是1002题的实际耗时比预估时间超出了不少。