美文网首页C语言新手家园(1万钻以下)
郑州轻工业大学oj题解(c语言)1087: 获取出生日期(多实例

郑州轻工业大学oj题解(c语言)1087: 获取出生日期(多实例

作者: 缘点点 | 来源:发表于2019-12-05 22:39 被阅读0次

还记得之前有一期曾经提到过%d的种种用法。如果没记错应该是1012题,有介绍过%d保留小数的用法。
恰好今天要写的这道题就与%d的其他用法有关,就顺带把我以前积累过的一些用法一起介绍了吧。

1087: 获取出生日期

  • 题目描述
    输入某人的18位身份证号,输出其出生日期。
  • 输入
    多实例测试。首先输入一个整数n,表示测试实例的个数,然后是n行,每行是一个18位身份证号。
  • 输出
    对于输入的每个身份证号,输出一行,即其对应的出生日期,输出格式为:yyyy-mm-dd。
  • 参考代码:
#include<stdio.h> 
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\n",y,m,a); 
       } 
} 
  • 代码解析:
    这道题的代码逻辑上没有什么太值得深究的地方。循环上就是1078的写法,如果还不够理解的同学也可以返回去看之前的代码,多抄几遍,加深印象再来看本题。
    1.题目的提示行中有写到。scanf()函数中,可用%md指定读取位数。 这里的m就是位数。例如代码里的%4d,指的就是读取4位整数到参数y中,%2d就是读取2位整数到参数m中,以此类推,%2f,%3c,也是读取相应位数的浮点型数和字符型数的作用。
    2.在%4d前还有一个%6d,这里表示的是,跳过6位整数读取之后的数。%nd是跳跃读取的用法。和上一条一样,%2f,%3c也是一样的用法。而在读取行的最后有一个%*d,意思为跳过之后的所有数。

下面附上一段保存在电脑快一年的笔记:

scanf()函数中,可用%md指定读取位数,我们可以只读取需要的,其余的不用理会。
如果在 % 后有一个 " * " 号,这是一个附加说明符,表示读取时跳过它指定的列数。
例如: %*6d%4d%2d%2d 表示读入6位整数但不赋值给任何变量。然后再读入4位整数、2位整数,2位整数,
最后结束读取
%06d补足6位
%s整串输出

👆以上为去年学习时记下的笔记,仅作分享学习之用,就不排版介绍了。

相关文章

网友评论

    本文标题:郑州轻工业大学oj题解(c语言)1087: 获取出生日期(多实例

    本文链接:https://www.haomeiwen.com/subject/mcrjgctx.html