zoukankan      html  css  js  c++  java
  • 20190905-3 命令行和控制台编程

    此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/5523

    1.熟悉 命令行和控制台

    1.1 假设在当前目录下存在应用程序 a.exe 和 文件文件 b.txt,

    请以数据流图并辅助以文字说明下述控制台命令的作用是什么。(5分)

    a.exe<b.txt>c.txt

    数据流图:

    b.txt输入到a.exe里执行完毕后输出到c.txt里。

    1.2 请用C语言开发应用程序d.exe,从控制台指令读入命令行参数,并在控制台分别打印出a、b、c的值。运行效果形如下面的示例。

    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
    
    ",a);
            printf("%d
    
    ",b);
            printf("%d
    
    ",c);
            printf("
    ");
        }
        return 0;
    }

     运行结果如下

     2.熟悉 测试用例

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

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

    2.3 代码解读。(20分)

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

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

    这道题目先要判别奇偶性,如果是偶数就除以2,是奇数就3*n+1再除以2,然后设置一个计数器赋值为0,每执行一次加一,最后输出次数即可。

    重要代码片段:

     #include<stdio.h>
    int main()
    {
         int n,s=0;
         scanf("%d",&n);
         while(n!=1)
         {
             if(n%2==0)
                 n/=2;
            else
                n=(3*n+1)/2;
               s++;
         }
         printf("%d
    ",s);
         return 0;
    }

    执行效果截图

    (2)1004:成绩排名

    这个题我首先想到的是用结构题来做,但是第一次运行格式错误,我第一次的输入输出是用c的scanf和printf写的,scanf在输入字符串时会遇到空格和换行就结束,于是我想到了用cin做输入 cout做输出可以避免此类情况的发生,还可以提高效率。

    重要代码片段 :

    #include<iostream>
    #include<string>
    
    using namespace std;
    
    struct student{
        string name;
        string id;
        int score;
    };
    
    int main()
    {
        int n,max = 0,min = 0;
        string text_name,text_id,text_score;
        cin>>n;
        student acs[n];
        for( int i = 0; i < n; i++){
            cin>>acs[i].name;
            cin>>acs[i].id;
            cin>>acs[i].score;
            if( acs[i].score > acs[max].score) max = i;
            if( acs[i].score < acs[min].score) min = i;
        }
        cout<<acs[max].name<<" "<<acs[max].id<<endl;
        cout<<acs[min].name<<" "<<acs[min].id<<endl;
     }

    运行结果截图

    (3)1006:换个格式输出整数

    这个题是要把数字n的个位,十位,百位分别表示出来,然后输出个数是对应个位,十位,百位的数字,注意个位是输出数字。

    重要代码片段:

    #include<stdio.h>
    int main()
    {
        int n, b, s, g;
        scanf("%d", &n);
        b = n / 100;
        s = n % 100 / 10;
        g = n % 10;
        for(int i = 0; i < b; i++)  printf("B");
        for(int i = 0; i < s; i++)  printf("S");
        for(int i = 1; i <= g; i++) printf("%d", i);
    
        return 0;
    }

    运行结果截图:

    2.4 PSP(8分)

    在同一篇博客中,参照教材第35页表2-2和表2-3,为上述3个题目制作PSP阶段表格。

    1001题和1006时间差不是很大,因为题比较简单,1004题第一遍格式错误,改错改了一段时间所以时间差稍大。

     

  • 相关阅读:
    501. 二叉搜索树中的众数
    530. 二叉搜索树的最小绝对差
    Java强制类型转换注意
    PL_SQL常用快捷键及设置
    Java线程:大总结
    Java多线程售票程序分析
    Java多线程的几种实现方式
    Java线程的几种状态
    Java的同步机制:synchronized关键字
    Eclipse常用设置[不断完善]
  • 原文地址:https://www.cnblogs.com/xulijun811/p/11492296.html
Copyright © 2011-2022 走看看