徐姗姗 20190905-3 命令行和控制台编程

此作业的要求参见[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

答:代码及运行结果如下:

#include<stdio.h>
int 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)猜想

#include<stdio.h>
int 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 换个格式输出整数

  

#include<stdio.h>
int 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<stdio.h>
#include<math.h>

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.选择的题目有的难,有的容易。

猜你喜欢

转载自www.cnblogs.com/samndbk/p/11496999.html
今日推荐