【无标题】出生日期输入输出(包含部分控制格式符的理解)

数据范围:年份满足 1990≤y≤2015 ,月份满足 1≤m≤12 ,日满足 1≤d≤30

输入描述:
输入只有一行,出生日期,包括年月日,年月日之间的数字没有分隔符。

输出描述:
三行,第一行为出生年份,第二行为出生月份,第三行为出生日期。输出时如果月份或天数为1位数,需要在1位数前面补0。

示例1
输入:

20130225

复制输出:

year=2013
month=02————此处需要%0来自动左补0
date=25
——————————————————————————————

#include<stdio.h>
int main()
{
	int y, m, d;
	scanf("%d%d%d,&y,&m,&d);//——如果直接输入20130225,最后输出结果为
							//y=20130225 m=0 d=0
	printf("%d\n%d\n%d\n",y,m,d);
	return 0;
}
*原因是由于缺少控制字符来控制域的宽度*

通过scanf函数的%m格式控制可以指定输入域宽,输入数据域宽(列数),按此宽度截取所需数据;通过printf函数的%0格式控制符,输出数值时指定左面不使用的空位置自动填0。
————————————————————————————

#include<stdio.h>
int main()
{
    int y, m ,d;
    scanf("%4d%2d%2d",&y,&m,&d);//m是一个数字,在标准输出函数里.	
                               //m表示输出长度控制,表示以m个字符输出,
                               //不足m个字符的用空格填补,输出时右对齐.
                               //原本输出超过m个字符的此时m无效.
                               //相应的%-md同上,-表示左对齐。
     //固4d即从20130225里从左取四位数——2013,再2d——2(因为0默认为了空格)
     //再2d——25
    if(y>=1990&&y<=2015)
    {    
        if(m>=1&&m<=12)
        {
            if(d>=1&&d<=30)
                printf("year=%04d\n",y);
                printf("month=%02d\n",m);//因为输入时%2d,为2,固需要%0来左补位
                printf("date=%02d\n",d);//同上
        }
    }      
    else 
        printf("error");
    return 0;
}

%m.nd:m代表输出一共占m列,不够m列前面补空格,够m列不作任何处理,n代表这个数一共要有n列,不够前面补0,够n列不做任何处理

int main()
{
	int a = 123;
	printf("%.4d\n",a);
	printf("%5d\n", a);
	printf("%5.4d\n", a);
	return 0;
}

————————————————

1.格式控制符的形式

%  [-]  [0]  [m/m.n]  [l/h] 格式控制符
 其中[ ]里面的内容是可选的
 -:表示左对齐,缺省情况下为右对齐(若没规定输出数据的宽度则为左对齐)。
 0:当规定输出数据的宽度时,所输出数据实际的宽度小于规定的宽度,则在左边用“0”补齐。
 m/m.n:m规定了输出数据的宽度(位数),若数据实际的宽度大于m,则突破m的限制全部输出,反之, 将数据全部输出之后用空格进行左补齐;对于实数n是指小数点后的位数,若n小于小数点后实际的位数,则按四舍五入原则进行截取;对于字符串,n表示从左至右截取的字符个数。
 l/h:l表示长整型数据(可用于%ld。%lo,%lx,%lu),以及double型数据(%lf或%le);h表示短整型数据(可用于%hd。%ho,%hx)。

2.格式控制符及其功能

%d:用来输出有符号的十进制整数(包括char类型)

%u:用来输出无符号的十进制整数(包括char类型)

%o:用来输出无符号的八进制整数

%x:用来输出无符号的十六进制整数

%c:用来输出单个字符

%s:用来输出一个字符串

%f:用来输出小数形式的十进制浮点数(输入时小数形式和指数形式都可以识别)

%e:用来输出指数形式的十进制浮点数(输入时小数形式和指数形式都可以识别)

%g:用来输出指数形式和小数形式两者中较短的十进制浮点数(输入时小数形式和指数形式都可以识别)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值