此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523
1.熟悉命令行和控制台
假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,请以数据流图并辅助以文字说明下述控制台命令的作用是什么。
a.exe < b.txt > c.txt
数据流图:
b文本的内容是a程序输入的数据,a程序运行后得到结果再输出到c文本中。
请用C言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例。
d.exe a=1 b=2 c=3
1
2
3
d.exe a=11 b=22 c=33
11
22
33
代码如下:
#include<stdio.h> int main(){ int a,b,c; while(scanf("a=%d b=%d c=%d",&a,&b,&c)){ printf("%d ",a); printf("%d ",b); printf("%d ",c); } return 0; }
执行效果截图:
2.熟悉 测试用例
(1)请在网站 [https://pintia.cn/]注册账号。
(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名。
(3)代码解读。发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。
1001 害死人不偿命的(3n+1)猜想
重点:首先判断n是奇数还是偶数,每次循环累加一次,循环终止条件是n=1.
重要代码片段:
int main(){ int n; scanf("%d",&n); int s=0; while(n!=1){ if(n%2==0){ n=n/2; s++; } else{ n=(3*n+1)/2; s++; } } printf("%d",s); return 0; }
执行效果截图:
1006 换个格式输出整数
重点:输入一个三位数,计算出个位十位和百位数字,循环输出个数.
重要代码片段:
int main(){ int n,B,S,G; scanf("%d",&n); B=n/100; S=n%100/10; G=n%10; for(int i=0;i<B;i++) printf("B"); for(int i=0;i<S;i++) printf("S"); for(int i=1;i<=G;i++) printf("%d",i); return 0; }
执行效果截图:
1011 A+B 和 C
重点:输入测试次数,判断a+b是否大于c,循环多次输出结果.
重要代码片段:
int main() { int num,i; scanf("%d",&num); long a,b,c; for(i=0;i<num;i++){ scanf("%ld%ld%ld",&a,&b,&c); if(a+b>c) printf("Case #%d: true ",i+1); else printf("Case #%d: false ",i+1); } return 0; }
执行效果截图:
(4) PSP
总结:本次作业选择的三道编程题难易程度其实不大,但对我来说还是比较困难,花费较长的时间来完成。很多编程题都是能够看懂代码但上手操作后就会出错,还是实际操作的次数太少,相信通过这门课以后也会有所改善,也是对自己的一种锻炼吧。