此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523]
1.熟悉 命令行和控制台
(1)假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)
a.exe < b.txt > c.txt
答:此控制台命令的作用将文件b.txt中的内容,流经a.exe,最后到c.txt,也就是说,数据基本流向为,由b经a到c,数据流图如上图所示。
(2)请用C言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例(6分)
d.exe a=1 b=2 c=3
1
2
3
d.exe a=11 b=22 c=33
11
22
33
答:代码及运行结果如下:
#includeint main(){ int a,b,c; while(scanf("a=%d b=%d c=%d",&a,&b,&c)){ printf("%d\n%d\n%d",a,b,c); } }
2.熟悉 测试用例
(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名(此例中为 Young)。(30分)
注意,需要读完本作业全部题目才能开始做题,有对时间记录和代码解读的要求。
答:题目完成情况如图:
(3)代码解读。(20分)
发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。
答:
①1001 害死人不偿命的(3n+1)猜想
#includeint main(){ int n,count=0; scanf("%d",&n); while(n!=1){ if(n%2==0){ n=n/2; }else{ n=(3*n+1)/2; } count++; } printf("%d\n",count); }
②1006 换个格式输出整数
#includeint main(){ int n; scanf("%d",&n); while(n/100!=0){ printf("B"); n=n-100; } while(n/10!=0){ printf("S"); n=n-10; } int a=1; while(n!=0){ printf("%d",a++); n=n-1; } }
③1007 素数对猜想
#include#include int isPrime_1(int num){ int tmp=sqrt(num); for(int i=2;i<=tmp;i++){ if(num%i==0) return 0; } return 1; } int main(){ int N; int count=0; int left=2; scanf("%d",&N); if(N>3){ for(int i=3;i<=N;i++){ if(isPrime_1(i)){ if(i-left==2){ count++; } left=i; } } } printf("%d\n",count); }
(4) PSP
出现时间差的原因:
1.长时间不用c语言,所以对c语言不熟悉,有些遗忘知识点。
2.选择的题目有的难,有的容易。