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


    此作业的要求参见https://edu.cnblogs.com/campus/nenu/2020Fall/homework/11184

    1.熟悉 命令行 和 控制台/标准输入和标准输出

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

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

    数据图:

    作用:在控制台执行命令时,将文本b.txt中的数据输入到程序a.exe中运行,输出的结果存储到文本c.txt中。

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

    运行效果:

    代码如下:

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

    2.熟悉测试用例

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

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

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

     (3)代码解读 (20分)

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

    1004 成绩排名:

    重点/难点:此题需要用到结构体,同时要注意字符串的语法。题目中要求文本长度不超过10,由于字符串长度是字符长度加上,所以字符数组的长度应为11。

    代码:

    #include<stdio.h>
    #include <string.h>
    
    struct student
    {
        char name[11];
        char number[11];
        int score;
    };
    
    typedef struct student st;
    
    int main()
    {
        int n;
        scanf("%d",&n);
        st list[n];
        for(int i=0; i<n; i++)
        {
            //输入名字 学号 成绩
            scanf("%s %s %d",list[i].name,list[i].number,&list[i].score);
        }
        //选出分数最高和分数最低的学生
        st max=list[0], min=list[0];
        for(int i=1; i<n; i++)
        {
            if(max.score<list[i].score)
            {
                max=list[i];
            }
            if(min.score>list[i].score)
            {
                min=list[i];
            }
        }
        printf("%s %s
    %s %s
    ",max.name,max.number,min.name,min.number);
        return 0;
    }

    执行效果:

    1009 说反话:

    重点/难点:此题需要考虑字符串应该如何存储才能使逆序算法更简单。

    代码:

    #include<stdio.h>
    
    int main()
    {
        //用二维数组储存
        char str[20][80];
        int n=0;
        do
        {
            scanf("%s",str[n]);
            n++;
        }
        while(getchar()!='
    ');
        //逆序输出
        for(int i=n-1; i>=0; i--)
        {
            printf("%s",str[i]);
            if(i>0)
            {
                printf(" ");
            }
        }
        return 0;
    }

    执行效果:

    1013 数素数:

    重点/难点:本题需要用到数学中素数的知识。按照题目要求,需注意最后一个数即使不是第10个也不输出空格。

    代码:

    #include<stdio.h>
    #include<math.h>
    
    //判断是否为素数
    int IsPrime(int num)
    {
        int flag=1;
        for(int i=2; i<=sqrt(num); i++)
        {
            if(num%i==0)
            {
                flag=0;
                break;
            }
        }
        return flag;
    }
    
    int main()
    {
        int m,n,i=0,num=2,count=0;
        scanf("%d %d",&m,&n);
        //循环输出N个质数
        while(i<n)
        {
            //如果是素数则打印
            if(IsPrime(num))
            {
                i++;
                if(i>=m)
                {
                    printf("%d",num);
                    count++;
                    //每10个数换行
                    if(count%10==0)
                    {
                        printf("
    ");
                    }
                    else if(i<n){
                        printf(" ");
                    }
                }
            }
            num++;
        }
    }

    执行效果:

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

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

    参照上一题中“控制台”的知识,给出运行时从控制台读入测试数据和向控制台输出的截图。

    1004 成绩排名:

    输入样例:

    3
    Joe 2020990112 77
    Sia 2020990830 90
    Mike 2020991301 85

    输出样例:

    Sia 2020990830
    Joe 2020990112

    测试结果图:

    1009 说反话:

    输入样例:

    How are you

    输出样例:

    you are How

    执行效果图:

    1013 数素数:

    输入样例:

    7 20

    输出样例:

    17 19 23 29 31 37 41 43 47 53
    59 61 67 71

    执行效果图:

    (5) PSP(8分)

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

    PSP阶段表格第1列分类,如功能1、功能2、测试功能1等。

    PSP阶段 预计花费时间 实际花费时间 时间差 原因
    题目1004 30 46 16  字符串数组长度少了一位
    题目1009 20  15  -5  在设计存储结构时将一维数组改为二维数组
    题目1013 20 29  9 格式错误,多了空格
  • 相关阅读:
    poj 3468 A Simple Problem with Integers
    Autolayout约束动画化-Animating Autolayout Constraints
    HDU 1325 POJ 1308 Is It A Tree? (并查集)
    java小游戏代码
    《大话操作系统——做坚实的project实践派》(5)
    关于mysql存储过程创建动态表名及參数处理
    LeetCode Remove Duplicates from Sorted Array II
    centos 7安装 navicat
    Zxing二维码扫描
    Android adb shell学习心得(四)
  • 原文地址:https://www.cnblogs.com/siahu/p/13659346.html
Copyright © 2020-2023  润新知