鄭州軽工業大学oj問題解(c言語)1087:生年月日取得(多例試験)

1416 ワード

前に%dのいろいろな使い方について言及したことがあるのを覚えています.覚え間違いがなければ1012題で、%d保留小数の使い方を紹介したことがあります.ちょうど今日書くこの問題は%dの他の使い方と関係があるので、私が以前蓄積した使い方を紹介しましょう.

1087:生年月日取得

  • 題目は、ある人の18人の身分証明書番号を入力し、生年月日を出力することを記述する.
  • マルチインスタンステストを入力します.まず整数nを入力し、テストインスタンスの個数を表し、次にn行であり、各行は18ビットの身分証明書番号である.
  • は、入力された各身分証明書番号について、1行、すなわち対応する生年月日を出力し、出力フォーマットはyyyy-mm-ddである.
  • 参照コード:
  • #include 
    int main() 
    { 
    int y,m,a,n; 
    scanf("%d",&n); 
    for(int i = 1; i <= n;i++) { 
            scanf("%*6d%4d%2d%2d%*d",&y,&m,&a); 
            printf("%d-%02d-%02d
    ",y,m,a); } }
  • コード解析:この問題のコード論理にはあまり深く研究する価値のあるところはありません.ループ上は1078の書き方で、まだ理解していない学生も前のコードを見に戻って、何度も写して、印象を深めてから本題を見ることができます.1.タイトルの提示行に書いてあります.scanf()関数では、%mdで読み取りビット数を指定できます.ここのmは桁数です.例えば、コードの%4 dとは、4ビットの整数をパラメータyに、%2 dとは、2ビットの整数をパラメータmに読み出すことであり、これに類して、%2 f、%3 cは、対応するビット数の浮動小数点型数と文字型数を読み取る役割を果たす.2.%4 dの前にもう1つの%6 dがあります.ここでは、6ビットの整数をスキップして読み取った後の数を示します.%ndはジャンプ読み取りの使い方です.前の1本と同じように、%2 f、%3 cも同じ使い方です.一方、読み出し行の最後には、スキップ後のすべての数を意味する%*dがあります.

  • パソコンに保存されている1年近くのメモを添付します.
    scanf()関数では、%mdで読み取りビット数を指定できます.必要なものだけを読み込むことができます.残りは気にしないでください.%の後に「*」という記号が付いている場合、これは読み取り時に指定した列数をスキップしたことを示す追加の説明子です.たとえば、%*6 d%4 d%2 d%2 dは、6ビットの整数を読み込みますが、変数に値を割り当てません.次に4ビット整数、2ビット整数、2ビット整数を読み込み、最後に6ビット%sのシリアル出力を読み取り%06 dで補完する
    以上は去年の勉強でメモしたもので、勉強を分かち合うためだけに、レイアウトして紹介しませんでした.