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的值。运行效果形如下面的示例(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 argc,char *argv[]){
      int a,b,c;
      sscanf(argv[1],"a=%d",&a);
      sscanf(argv[2],"b=%d",&b);
      sscanf(argv[3],"c=%d",&c);
      printf("%d\n",a);
      printf("%d\n",b);
      printf("%d\n",c);

      return 0;
}

运行结果:

2.熟悉 测试用例

(1)请在网站 [https://pintia.cn/]注册账号。(0分)

(2)在题目集 PAT (Basic Level) Practice (中文) 中任选3道题目完成。截图如下,要求包括1.红色对号、2.标号、3.用户名(此例中为 Young)。(30分)

(3)代码解读 (20分)
1001 害死人不偿命的(3n+1)猜想
此题只要区分好奇偶数就可以。

int n;
int num = 0;
scanf("%d",&n);
while(n!=1){
      if(n%2 == 0){
            n/=2;
            num++;
      }else{
            n = (n*3+1)/2;
            num++;
      }
}
printf("%d",num);

代码运行结果:

1004 成绩排名
最大值最小值的初始化分别为-1和101,然后再与输入进的值进行比较,将目前最大值最小值存入进去。

int n,i;
cin>>n;
string name,xuehao;
int grade;
string maxn,maxx,minn,minx;
int max=-1,min=101;
for(i=0;i<n;i++){
      cin>>name>>xuehao>>grade;
      if(grade>max){
            max=grade;
            maxn=name;
            maxx=xuehao;
	}
	if(grade<min){
            min=grade;
            minn=name;
            minx=xuehao;
	}
}
cout<<maxn<<" "<<maxx<<endl;
cout<<minn<<" "<<minx;

代码运行结果:

1006 换个格式输出整数
开始想把数字存放数组中,但是只想起来比较麻烦,就直接把数字分割开,再输出对应的字符。

int n,i;
while(scanf("%d",&n)!=EOF){
      for(i=0;i<(n/100);i++){
            printf("B");
      }
            for(i=0;i<(n/10%10);i++){
            printf("S");
      }
      for(i=0;i<(n%10);i++){
            printf("%d",i+1);
      }
      printf("\n");
}

代码运行结果:

(4)控制台应用 (15分)

1001 害死人不偿命的(3n+1)猜想

测试数据:
234、23

1004 成绩排名

测试数据:
张三 qwe 76
李四 ert 98
王五 pop 100
杜一 pgs 85

1006 换个格式输出整数

测试数据:
345、723

(4) PSP(8分)

posted @ 2020-09-20 00:13  Dul  阅读(125)  评论(0编辑  收藏  举报