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分)

#include <stdio.h>
#include<string.h>

void main(int argc, char* argv[]) {
    int a, b, c;
    sscanf_s(argv[1],"a=%d", &a);//将控制台中的数据重新格式化,最新版中不支持sscanf函数,改为sscanf_s
    sscanf_s(argv[2], "b=%d", &b);
    sscanf_s(argv[3], "c=%d", &c);
    printf("%d
%d
%d", a, b, c);
}

  

 (控制台使用了CMD美化程序Cmder,非IDE内控制台)

 2.熟悉 测试用例

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

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

 注意,需要读完本作业全部题目才能开始做题,有对时间记录和代码解读的要求。

 

(3)代码解读 (20分)

发表博客,介绍上述3个题目代码中重点/难点,展示重要代码片断,给出执行效果截图,展示你感觉得意、突破、困难的地方。

1002 写出这个数

重难点:怎么样将数字用拼音写出来

<?php
$pinyin= array("ling","yi","er","san","si","wu","liu","qi","ba","jiu");
fwrite ( STDOUT , '');//输入字符
$num = trim ( fgets ( STDIN ) );//提取输入的字符
$sum=0;
for($i=0;$i<strlen($num);$i++){
    $single=substr($num, $i, 1);//截取一个字符
    $sum+=$single;
}
for($i=0;$i<strlen($sum);$i++){
    $single=substr($sum, $i, 1);
    echo $pinyin[$single];
    if($i<strlen($sum)-1)echo " ";
}
?>

1006 换个格式输出整数

重难点:提取出各位上的数字并输出相对应的替代字符,要注意个位十位百位的变换

<?php
fwrite ( STDOUT , '');//输入字符
$input = trim ( fgets ( STDIN ) );//提取输入字符
for($i=0;$i<strlen($input);$i++){
    $single=substr($input, $i, 1);//截取一位字符
    for($j=0;$j<$single;$j++){
        if($i==0&&strlen($input)==3)echo "B";
        if(($i==0&&strlen($input)==2)||($i==1&&strlen($input)==3))echo "S";
        if(($i==0&&strlen($input)==1)||($i==1&&strlen($input)==2)||($i==2&&strlen($input)==3))echo $j+1;
    }
}
?>

 

1017 A除以B

重难点:大数除法,int格式无法输入太大的数据,可以转化为数组方式并按照小学除法进行计算

<?php
fwrite ( STDOUT , '');//输入字符
$input = trim ( fgets ( STDIN ) );获取输入的字符
$num=substr($input,0,strpos($input," "));//提取空格前面的字符
$cs=substr($input,strpos($input," ")+1,1);//提取空格后面的字符
$next=0;//各位上的余数
$jieguo="";
for($i=0;$i<strlen($num);$i++){
    $single=substr($num, $i, 1);
    $single=$next.$single;
    $num2=intval($single/$cs);
    $ys=$single % $cs;
    if($num2>0||($num2==0&&$jieguo!=="")){
        $jieguo=$jieguo.$num2;
    }
    $next=$ys;
}
if($jieguo==="")$jieguo=0;
echo $jieguo." ".$next;
?>

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

要求在博客中给出测试数据。

 1002 写出这个数

测试数据1:99999999

输出样例1:qi er

测试数据2:10000000

输出样例2:yi

测试数据3:0

输出样例3:ling

测速结果:

 1006 换个格式输出整数

测试数据1:999

输出样例1:BBBBBBBBBSSSSSSSSS123456789

测试数据2:100

输出样例2:B

测试数据3:99

输出样例3:SSSSSSSSS123456789

测试数据4:10

输出样例4:S

测试数据5:9

输出样例5:123456789

测试数据6:0

输出样例6: 

测速结果:

1017 A除以B

测试数据1:49 7

输出样例1:7 0

测试数据2:0 1

输出样例2:0 0

测试数据3:1000 1

输出样例3:1000 0

测试数据4:1000 6

输出样例4:166 4

测试数据5:100000000000000000000000000000000000 6

输出样例5:16666666666666666666666666666666666 4

测速结果:

(4) PSP(8分)

原文地址:https://www.cnblogs.com/thinkget/p/13658217.html