プログラミングの問題(2020オブジェクト指向プログラミングの最初の仕事)

この作品は、コースに属し 2020 Chunfuラージオブジェクト指向プログラミング
ジョブが必要とする場合 1つの冬の操作
対象のジョブ 学習過程を記録し、方言プログラミングを実現する、ブログを公開
ジョブのテキスト プログラミングの問題
その他の参考文献 文字の配列を持つ漢字預金

質問を読みます

中国文化はChangjeiの作成から始め、深遠で、漢字はこの日に受け継がれています。とき、我々は中国の文字の長い歴史を嘆いたが、また、ヘルプ感じ、なぜプログラミング言語は、中国語の文字を使用していないことはできませんか?
中国語の文字は、実際にプログラミングすることはできませんか?最近、古典的な火をプログラミング、私は番号を持っています。IIIは述べています。呼ばれる名前、「鎧。」この気取らない変数の定義は確かに素晴らしい仕事の開発で中国文化の数千年ではありません。
今日、王の学生はと思いますようにプログラムすることができ、古典方言?彼はあなたが、あなたは彼を助けるせました。
プログラミングは必要です
プログラムの作成、テキスト出力動作の一片の次の構文の要件を満たすために、入力の結果を。
変数の定義:整数ゼロ財布に等しい
演算(加算):財布は4だけ増加
演算(減算):財布は、4つの減少
ルック財布:出力
サンプル
入力:
整数ゼロ財布に等しい
財布4によって増加
財布低下3つの
ルック財布
出力:
A

モジュールを分割し、思考プロセス

我々は、タイトルから見ることができる
財布を初期値を定義するために使用される整数
割り当てに等しい
増加減少それぞれ加算および減算
の出力結果を表示すること

プログラムは次のセクションに関数で分割する必要があります

  • 中国語の文字入力はデジタルに変換され、
  • 計算結果は、文字の形で出力されます。
  • 障害のある入力を除外
  • 「増加」と「減少」を算出しています

書き込みモジュールとテストケース

Baiduの中国のWindowsオペレーティングシステムでは、デフォルトでは、各文字が2つのバイトを占有し、BGK中国の文字セットを使用することであること。このような文字の文字列が保存され、中に(B)をSTRCMPすることができ、bが0の値を返すことがstrcmpの関数で判断することができ、同じです。今、私たちは初期値を決定するために関数を記述することができます。

int change(char shu[])
{
    if(strcmp(shu,"一")==0) 
        return 1;
    if(strcmp(shu,"二")==0) 
        return 2;
    if(strcmp(shu,"三")==0) 
        return 3;
    if(strcmp(shu,"一")==0) 
        return 1;
    if(strcmp(shu,"四")==0) 
        return 4;
    if(strcmp(shu,"五")==0) 
        return 5;
    if(strcmp(shu,"六")==0) 
        return 6;
    if(strcmp(shu,"七")==0) 
        return 7;
    if(strcmp(shu,"八")==0) 
        return 8;
    if(strcmp(shu,"九")==0) 
        return 9;
    if(strcmp(shu,"零")==0) 
        return 0;
    
}

我々は出力に結果を関数を作成する必要がある次はかなり良い(単一のデジタル出力、それは主機能決意に配置することができる0-99桁のケースからのデータの保証に書き込み機能のみ)であります

void change1(int num)
{
    if(num==0) printf("零");
    if(num==1) printf("一");
    if(num==2) printf("二");
    if(num==3) printf("三");
    if(num==4) printf("四");
    if(num==5) printf("五");
    if(num==6) printf("六");
    if(num==7) printf("七");
    if(num==8) printf("八");
    if(num==9) printf("九");
}

どのように入力の最初の行最初の考えてみましょう。フォー短い文字列を保持することができる4つの言葉であり、誤差入力はレイド判断を提供します。変数名は、「財布」でない場合は、変数の名前として、それは必ずしも「財布」ではないので、入力時間の最初のライン入力エラーではない、と私たちはデータを初期化することができます。ここでは、最初の行とチェックの文を入力するための主な機能です。

scanf("%s %s %s %s",a,b,c,d);
 if(strcmp(a,"整数")!=0||strcmp(c,"等于")!=0)
    {printf("输入错误\n");
     return 0;
    }
 num=change(d);

「見た目」の必要性を出力として、その入力「見た目」は、計算を入力しなくなったとき。
また、入力エラーに属する最初の行とは異なる変数名、と計算された変数名の入力ライン場合。
この場合、入力値と次の計算式を除去した後。
計算とタイプ「増加」または「減少」は、異なる操作に、それぞれ、同じである場合であれば、操作に「プラス」、「マイナス」は、このような入力。

while(1)
    {scanf("%s",y);
     if(strcmp(y,"看看")==0) break;
     if(strcmp(y,b)!=0)
        {printf("输入错误\n");
         return 0;
        }
     scanf("%s",z);
     scanf("%s",x);
     if(strcmp(z,"增加")==0)
        num=num+change(x);
     else if(strcmp(z,"减少")==0)
        num=num-change(x);
     else 
        {printf("输入错误\n");
         return 0;
        } 
    }

オリジナルの出力部には、一つだけの文章を書きます

change1(num);

これは、入力と出力のサンプルを満たすことができます。

しかし、私は数字だけで9を通じてゼロがと思うが、10オペランドが得られることよりも何倍も大きいので、分類の計算結果。
3つのカテゴリーに分類することができ、最初のカテゴリは数字であり、第二は、整数10であり、第三のカテゴリーは、2桁の数字ではなく、全体の10です。

 if(num/10==0) 
    change1(num);
 else if(num%10==0) 
    {change1(num/10);
     printf("十"); 
    }
 else
    {change1(num/10);
     printf("十");
     change1(num%10);
    }

この準拠は、計算結果が10よりも大きい出力します。

ここでは、変数名を検出することはできませんされたサンプル「財布」

改善分野

入力は一桁の数字ではない場合、私はプログラムや計算を判断することはできません

完全なコード

#include<stdio.h>
#include<string.h>
int change(char shu[])
{
    if(strcmp(shu,"一")==0) 
        return 1;
    if(strcmp(shu,"二")==0) 
        return 2;
    if(strcmp(shu,"三")==0) 
        return 3;
    if(strcmp(shu,"一")==0) 
        return 1;
    if(strcmp(shu,"四")==0) 
        return 4;
    if(strcmp(shu,"五")==0) 
        return 5;
    if(strcmp(shu,"六")==0) 
        return 6;
    if(strcmp(shu,"七")==0) 
        return 7;
    if(strcmp(shu,"八")==0) 
        return 8;
    if(strcmp(shu,"九")==0) 
        return 9;
    if(strcmp(shu,"零")==0) 
        return 0;
    
}
void change1(int num)
{
    if(num==0) printf("零");
    if(num==1) printf("一");
    if(num==2) printf("二");
    if(num==3) printf("三");
    if(num==4) printf("四");
    if(num==5) printf("五");
    if(num==6) printf("六");
    if(num==7) printf("七");
    if(num==8) printf("八");
    if(num==9) printf("九");
}
int main()
{char a[10],b[10],c[10],d[10],y[10],z[10],x[10],m[10];
 int num;
 scanf("%s %s %s %s",a,b,c,d);
 if(strcmp(a,"整数")!=0||strcmp(c,"等于")!=0)
    {printf("输入错误\n");
     return 0;
    }
 num=change(d);
 while(1)
    {scanf("%s",y);
     if(strcmp(y,"看看")==0) break;
     if(strcmp(y,b)!=0)
        {printf("输入错误\n");
         return 0;
        }
     scanf("%s",z);
     scanf("%s",x);
     if(strcmp(z,"增加")==0)
        num=num+change(x);
     else if(strcmp(z,"减少")==0)
        num=num-change(x);
     else 
        {printf("输入错误\n");
         return 0;
        } 
    }
 scanf("%s",m);
 if(num/10==0) 
    change1(num);
 else if(num%10==0) 
    {change1(num/10);
     printf("十"); 
    }
 else
    {change1(num/10);
     printf("十");
     change1(num%10);
    }
 return 0;
}

おすすめ

転載: www.cnblogs.com/CCchaos/p/12233453.html