柯源-20200910-3 命令行和控制台编程
此作业要求参见https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11185
1.熟悉 命令行 和 控制台/标准输入和标准输出
假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,
请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)
a.exe < b.txt > c.txt
答:

文字说明:该指令的作用是将b.txt的数据传递给a.exe可执行文件,在执行后生成新的数据存储到c.txt当中。
请用C语言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。
答:
1 #include<stdio.h> 2 int main(int argc,char *argv[]) { 3 int a,b,c; 4 sscanf(argv[1],"a=%d",&a); 5 sscanf(argv[2],"b=%d",&b); 6 sscanf(argv[3],"c=%d",&c); 7 printf("\n"); 8 printf("%d\n",a); 9 printf("\n"); 10 printf("%d\n",b); 11 printf("\n"); 12 printf("%d",c); 13 return 0; 14 }
 
2.熟悉 测试用例
(1)请在网站 [https://pintia.cn/]注册账号。(0分)
(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名(此例中为 Young)。(30分)
答:

(3)代码解读 (20分)
发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。
答:
1.害死人不偿命的(3n+1)猜想
1 for(step=0;n!=1;step++) 2 { 3 if(n%2==0) 4 { 5 n=n/2; 6 } 7 else 8 { 9 n=3*n+1; 10 n=n/2; 11 } 12 } 13 printf("%d\n",step);

在之前的学习当中,oj平台的练习不足,这道题虽然在算法的层次上说不算难,但对于我来说这道题让我认识到在oj平台运行的注意事项。
2.写出这个数
1 char num[35]; 2 int sum,temp,a[10]; 3 scanf("%s",num); 4 for(sum=0,temp=0;num[temp]!='\0';temp++) 5 { 6 sum=sum+num[temp]-48; 7 } 8 for(temp=0;sum!=0;sum=sum/10,temp++) 9 { 10 a[temp]=sum%10; 11 } 12 for(temp=temp-1;temp>=0;temp--) 13 { 14 switch(a[temp]) 15 { 16 case 1: printf("yi");break; 17 case 2: printf("er");break; 18 case 3: printf("san");break; 19 case 4: printf("si");break; 20 case 5: printf("wu");break; 21 case 6: printf("liu");break; 22 case 7: printf("qi");break; 23 case 8: printf("ba");break; 24 case 9: printf("jiu");break; 25 default: printf("ling"); 26 } 27 if(temp>0) 28 { 29 printf(" "); 30 } 31 }

这道题对我来说最大的突破就是,对于超限的数据来说,要换一种做题思路,用字符串的形式去解决问题。
3.换个格式输出整数
1 if(num/100!=0) 2 { 3 temp=num/100; 4 } 5 for(;temp>0;temp--) 6 { 7 printf("B"); 8 } 9 if(num/10!=0) 10 { 11 num=num%100; 12 temp=num/10; 13 } 14 for(;temp>0;temp--) 15 { 16 printf("S"); 17 } 18 temp=num%10; 19 for(i=1;temp>0;temp--,i++) 20 { 21 printf("%d",i); 22 }

这道题对我来说,输出格式是我做的不够的地方,没有注意到一些输出细节,在经过思考之后,改正了这个问题。
(4)控制台应用 (15分)
要求在博客中给出测试数据。
答:
1.害死人不偿命的(3n+1)猜想
测试数据:3
结果显示:

2.写出这个数
测试数据:1234567890987654321123456789
结果显示:
 
3.换个格式输出整数
测试数据:234
结果显示:

(5) PSP(8分)
在同一篇博客中,参照教材第35页表2-2和表2-3,为上述3个题目制作PSP阶段表格。
PSP阶段表格第1列分类,如功能1、功能2、测试功能1等。
答:
| 预计花费时间 | 实际花费时间 | 时间差 | 原因 | |
| 害死人不偿命的(3n+1)猜想 | 10min | 16min | 6min | 不够熟悉oj平台的注意事项 | 
| 写出这个数 | 15min | 34min | 19min | 由于整型超限而转变了做题思路 | 
| 换个格式输出整数 | 15min | 12min | 3min | 简单调整输出格式后顺利输出 | 
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号