20200910-3 命令行和控制台编程

此作业的要求参见[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中每项时间花费的差距,分析原因。

原文地址:https://www.cnblogs.com/houwx744/p/13659478.html