柯源-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 简单调整输出格式后顺利输出

  

 

posted @ 2020-09-15 12:17  柯源  阅读(193)  评论(0)    收藏  举报