7-12
输入:月-日-年(mm-dd-yyyy),保证给出的日期是1900年元旦至今合法的日期。
输出:年-月-日(yyyy-mm-dd)
#include <stdio.h>
int main()
{
int yyyy,mm,dd;
scanf("%d-%d-%d",&mm,&dd,&yyyy);
printf("%04d-%02d-%02d",yyyy,mm,dd);
}
7-14 然后是几点
输入格式:输入两个整数,分别是以四位数字表示的起始时间,流逝的分钟数,其间以空格分隔。注意:在起始时间时,当小时为个位数时,没有前导的零,即5点30分表示为530;0点30分表示为030。流逝的分钟数可能超过60,也可能是负数。
输出格式:输出不多于四位数字表示的终止时间,当小时为个位数时,没有前导的零。题目保证起始时间和终止时间是在同一天。四位数字表示的时间,比如11点06分表示为1106。
#include <stdio.h>
int main()
{
int before;
int a;
scanf("%d %d",&before,&a);
int hour1=0;
int minute1=0;
int cnt=0;
cnt ++;
int i=before;//为了不让起始时间在进入while循环后,被赋予新的变量,故i=before;
i/=10;
while (i>0){
cnt ++;
i/=10;
}//数位数
if (cnt=2){
hour1=before/100;
minute1=before%100;
}
if (cnt==3){
hour1=before/100;
minute1=before%100;
}
if(cnt==4){
hour1=before/100;
minute1=before%100;
}
if (a>=0){
int hour2=a/60;
int minute2=a%60;
int m=hour1+hour2+(minute1+minute2)/60;
int n=(minute1+minute2)%60;
printf("%d%02d",m,n);
}else{
int minutemax=hour1*60+minute1;
int m=(minutemax+a)/60;
int n=(minutemax+a)%60;
printf("%d%02d",m,n);
}//如果流逝分钟数是负数。
return 0;
}
代码中printf("%02d");具体解释戳此格式化输出总结
代码中运用了数位数,变量名为cnt,具体用法戳此数位数
编辑该代码中,因考虑到起始时间有类似030的sample位数为2,无法进入if语句,赋值hour1、minute1,故增加一个if语句:if(cnt==2).