此作业的要求参见[https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11185]。
1.熟悉 命令行 和 控制台/标准输入和标准输出
假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,
请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)
a.exe < b.txt > c.txt
答:将文本b中存放的内容作为a程序的输入文件,然后a程序进行相应的处理之后,将结果输出到c文本中。
#include<stdio.h>
int main(int argc,char *argv[]){
int i;
for(i=1;i<argc;i++){
char* str = argv[i];
while(*str!='=')
str+=1;
str+=1;
printf("%s
",str);
printf("
");
}
return 0;
}
2.熟悉 测试用例
(1)请在网站 [https://pintia.cn/]注册账号。(0分)
(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名(此例中为 Young)。(30分)
注意,需要读完本作业全部题目才能开始做题,有对时间记录和代码解读的要求。
(3)代码解读 (20分)
发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。
代码片断要求1 凡不缩进的,此题目拒绝接收。不知道什么是“缩进”的同学,请自行补课,不接受以“不知道”作为理由。
代码片断要求2 要求使用cnblogs代码控件,参见往届同学黄兴、宫成荣的作业。凡粘贴IDE中的代码截图,或者贴文字而没有关键字高亮或彩色的,0分。
[http://www.cnblogs.com/huangxman/p/5871201.html]
[http://www.cnblogs.com/gongcr/p/5873493.html]
- 1001 害死人不偿命的(3n+1)猜想:
① 重点难点:技术和偶数的判断,然后就是给出的条件,要求的是n=1的情况,所以循环条件是n!=1.
② 重要代码片段:
#include <stdio.h>
int main(){
int n;
scanf("%d",&n);
int i=0;
while(n!=1){
if(n%2==0){
n=n/2;
}
else{
n=(3*n+1)/2;
}
i++;
}
printf("%d",i);
return 0;
}
③ 执行效果截图:
- 1004 成绩排名:
① 重点难点:主要是结构体的应用,结构体的定义、用法、赋值等。
② 重要代码片段:
#include <stdio.h>
struct student{
char name[11];
char number[11];
int score;
};
int main(){
int n,i,max,min;
scanf("%d",&n);
struct student student[n];
for(i=0;i<n;i++){
scanf("%s %s %d",student[i].name,student[i].number,&student[i].score);
}
printf("
");
max=min=0;
for(i=0;i<n;i++){
if(student[max].score<student[i].score){
max=i;
}
if(student[min].score>student[i].score){
min=i;
}
}
printf("%s %s
",student[max].name,student[max].number);
printf("%s %s
",student[min].name,student[min].number);
return 0;
}
③ 执行效果截图:
④ 困难的地方:见到这个题就能想起用结构体,但是一开始忘记结构体的用法,先查阅资料了解之后又进行的,还有就是最开始没有输出正确结果,检查很久之后才发现是一个特别不起眼的地方写错了,导致检查了恩多次都没有检查出来,所以以后要认真仔细。
- 1006 换个格式输出整数:
① 重点难点:根据题目找出规律,其实就是求出这个数的每一位上的数字。
② 重要代码片段:
#include<stdio.h>
int main(){
int n;
int i,b,s,g; //分别代表百位,十位和各位
scanf("%d",&n);
printf("
");
b=n/100;
for(i=1;i<=b;i++){ //依此用循环输出即可
printf("B");
}
s=(n-b*100)/10;
for(i=1;i<=s;i++){
printf("S");
}
g=n-b*100-s*10;
for(i=1;i<=g;i++){
printf("%d",i);
}
return 0;
}
③ 执行效果截图:
④ 得意、突破、困难的地方:一开始考虑的有点多,想着可能用到指针,但是也没有考虑好,后来静下心来分析之后才发现挺简单的,就是单纯的求每一位上的数字就可以。做题不能着急,静下心来慢慢思考就好。
(4)控制台应用 (15分)
要求在博客中给出测试数据。
参照上一题中“控制台”的知识,给出运行时从控制台读入测试数据和向控制台输出的截图。
图表过小、字迹不清、错别字、句子不通顺的,教师会因为读不懂而对此题扣分。
- 1001 害死人不偿命的(3n+1)猜想:
- 1004 成绩排名:
- 1006 换个格式输出整数:
(4) PSP(8分)
在同一篇博客中,参照教材第35页表2-2和表2-3,为上述3个题目制作PSP阶段表格。
PSP阶段表格第1列分类,如功能1、功能2、测试功能1等。
要求1 估算你对每个功能 (或/和子功能)的预计花费时间,填入PSP阶段表格,时间颗粒度为分钟。
要求2 记录词频统计项目实际花费时间,填入PSP阶段表格,时间颗粒度要求分钟。
要求3 对比要求1和要求2中每项时间花费的差距,分析原因。