OJ1087: 获取出生日期(多实例测试)(C语言)
生活随笔
收集整理的這篇文章主要介紹了
OJ1087: 获取出生日期(多实例测试)(C语言)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目描述
輸入某人的18位身份證號(hào),輸出其出生日期。
輸入
多實(shí)例測(cè)試。首先輸入一個(gè)整數(shù)n,表示測(cè)試實(shí)例的個(gè)數(shù),然后是n行,每行是一個(gè)18位身份證號(hào)。
輸出
對(duì)于輸入的每個(gè)身份證號(hào),輸出一行,即其對(duì)應(yīng)的出生日期,輸出格式為:yyyy-mm-dd。
樣例輸入 Copy
3
410106199411178657
410104198202095479
410122197911218097
樣例輸出 Copy
1994-11-17
1982-02-09
1979-11-21
提示
scanf()函數(shù)中,可用%md指定讀取位數(shù)。
法一(提示方法):
#include<stdio.h> int main() {int i,n;int a,b,c;scanf("%d\n",&n);for(i=0;i<n;i++){scanf("%*6d%4d%2d%2d%*4d",&a,&b,&c);//表示讀入數(shù)據(jù)時(shí)跳過(guò)六列、讀入四位數(shù)、讀入兩位數(shù)、讀入兩位數(shù)、跳過(guò)四位數(shù)printf("%4d-%02d-%02d\n",a,b,c);//分別以四位數(shù)、兩位數(shù)、兩位數(shù)的形式輸出a、b、c("%02d"表示不足兩位用0補(bǔ)齊)} }法二(定義字符數(shù)組(逐個(gè)賦值),所以用以下兩種方式解決換行符覆蓋數(shù)組值的問(wèn)題):
**1**將數(shù)組長(zhǎng)度定義為19,多一位存放換行符,防止將換行符傳給下一個(gè)數(shù)組 #include<stdio.h> int main() {char a[19]; int i,j,n;scanf("%d",&n);for(i=0;i<n;i++){for(j=0;j<19;j++){scanf("%c",&a[j]);}printf("%c%c%c%c-%c%c-%c%c\n",a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13]);}//換行return 0; } **2** 用getchar()將回車吸收 #include<stdio.h> int main() {char a[18]; int i,j,n;scanf("%d\n",&n);for(i=0;i<n;i++){for(j=0;j<18;j++){scanf("%c",&a[j]);}getchar();//讀入回車printf("%c%c%c%c-%c%c-%c%c\n",a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13]);}//換行(此處也可以不換行,仍用getchar()接收回車)return 0; }
法三(較簡(jiǎn):字符串的輸入):
#include<stdio.h> int main() {char a[18]; int i,j,n;scanf("%d",&n);for(i=0;i<n;i++){scanf("%s",&a);printf("%c%c%c%c-%c%c-%c%c\n",a[6],a[7],a[8],a[9],a[10],a[11],a[12],a[13]);} return 0; }PS: 如果有幫到你,希望留個(gè)贊,謝謝!
總結(jié)
以上是生活随笔為你收集整理的OJ1087: 获取出生日期(多实例测试)(C语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux fflush函数,fflus
- 下一篇: zzulioj 1120: 最值交换