運用要件20190905から3コマンドラインコンソールプログラミング

このジョブは、[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2101]参照が必要です

 

コマンドラインやコンソールに精通1

そして、アプリケーションが現在のディレクトリにB.TXTファイルがA.EXEことが想定され、はいコマンドどのようなコンソール以下の効果を補助データフローグラフとテキストの説明をしてください。

A:Cに出力される入力データとして番組コンテンツ、最終結果と結果を保存B。

 

、CのD.EXEでアプリケーションを開発するコンソール・コマンドラインパラメータからコマンドを読み取り、それぞれ、コンソールにおいて、B、Cの値を印刷させてください。

コードは以下の通りであります:

 

する#include <stdio.hに> 
する#include <STDLIB.H> int型のmain()
{ int型、B、C。
    scanf関数(" A =%DB =%DC =%dの"、&​​、&B、&C)。
    printf(" %d個の\ n " 、A)。
    printf(" %d個の\ n " 、B)。
    printf(" %d個の\ n " 、C)。
    リターン0 ; 
}


     

次のように業績は以下のとおりです。

 2. テストケースに精通

(1)サイト[https://pintia.cn/]登録されたアカウントを作成します。

(2)タイトルに完全なタイトルで、必要に応じてPAT(初級)実践(中国)3を設定します。

次のようにショットは、以下のとおりです。

(3)コードの解釈。

公開されたブログは、3つのトピックは、コードスニペットは、あなたが誇りに感じて表示するスクリーンショット、画期的な、困難な場所での実装の影響を考えると、重要示し、コード/難易度でハイライト導入しました。

1001は(3N + 1)の推測の魅力を殺しました

重难点:这个题目属于比较简单的题目,就是判定一下数据是奇数还是偶数,判定后分别给予不同的处理罢了。

代码片段:

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

执行效果截图:

1002 写出这个数

重难点:我感觉这个题的重难点是如何把一个数各分位上的数加起来,我采用了将一个数按字符串输入,然后再转换成数字,用For循环将所有的数加起来,将0到9用拼音表示存在数组中,通过除法和除余来判断各个位上的数字然后再分别输出。

代码片段:

#include<stdio.h>
int main(){
    char n[100];
    int i=0;
    int j;
    scanf("%s",&n);
    for(;n[i]!='\0';i++)
    {
        j=j+(n[i]-'0');
    }
    char a[10][10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
    if(j>99)
    {
        printf("%s ",a[j/100]);
        printf("%s ",a[j%100/10]);
        printf("%s",a[j%100%10]);
    }
    else if(j>9)
    {
        printf("%s ",a[j/10]);
        printf("%s",a[j%10]);
    }
    else{
        printf("%s",a[j]);
    }
    return 0;
}

执行效果截图:

1003 我要通过

重难点:我认为这道题还是比较难的,首先这个读题就花费了很多的时间,第三个条件是最难判断的,前期一直不对,后来看了他给的测试用例,才猜测P前面A的个数乘以P和T之间的A的个数必须等于T后面的A的个数。

代码片段:

def func(lis):

    if 'A' in lis and 'P' in lis and 'T' in lis:

        if len(set(lis)) == 3 and lis.index('P') < lis.index('T'):
            start = lis.index('P')
            end = lis.index('T')
            numbefore = len(lis[:start])
            nummid = len(lis[start+1:end])
            numafter = len(lis[end+1:])

            if numbefore*nummid == numafter:
                return 1
            else:
                return 0
        return 0
    return 0


n = int(input())
ret = []
for i in range(n):
    ret.append(list(input()))
for lis in ret:
    if func(lis):
        print('YES')
    else:
        print('NO')

执行结果截图:

 

(4) PSP

 

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

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

总结出现时间差的原因

1 C语言的基本语法忘掉的太多,很多时候出现很低级的错误。

2 编写代码是逻辑混乱,对如何使用数组竟然产生了疑问,编写了一半又去查找关于数组方面的资料,导致编码时间过长。

3 对题目的解读能力太差,一直没有读懂第三个条件该如何写,测试了很多用例不通过,后来在给定的用例中发现规律,三个位置的A的数量是存在关系的,通过这种关系写的限制条件,这个题目我是用Python写的,因为我感觉用C语言实在是太麻烦了。

 

おすすめ

転載: www.cnblogs.com/hejw031/p/11493807.html