“写一个函数,输入一个8位整数,如20180327,输出2018-03-27”c语言如何实现?
3个回答
展开全部
int fun(int day) //把要转换的数字作为参数
{int y,m,d; //y,m,d分别代表年月日
y=day/10000; //除以10000,就是截掉后面4位,得到年份
m=(day/100)%100; //除以100就是截掉后面2位,再取余得到月份
d=day%100; //用100取余得到最后两位,得到日期
printf("%4d-%02d-%02d\n",y,m,d);} //输出年月日,不足部分补0
int main()
{fun(20181203);
system("PAUSE"); //暂停屏幕,以看清结果
return 0;} //结束程序
追问
如果要求为1、该函数为独立函数,可输入任意八位数,非法输入提示错误信息;2、有循环语句,输入文件结束标志EOF时程序结束。呢?
追答
#include<iostream>
#include<stdio.h>
#include<conio.h>
using namespace std;
int fun() //独立函数
{int day,y,m,d; //y,m,d分别代表年月日
do{printf("请输入一个8位整数:"); //显示提示信息
if(scanf("%d",&day)==0) //输入一个整数,如果读取失败
setbuf(stdin, NULL); //清除键盘缓冲区
if(day==EOF) return 0; //如果输入EOF返回0
if(day<10000000||day>99999999) //如果超过8位数
printf("输入错误\n"); //显示错误信息
else break;}while(1); //如果输入正确结束循环
y=day/10000; //除以10000,就是截掉后面4位,得到年份
m=(day/100)%100; //除以100就是截掉后面2位,再取余得到月份
d=day%100; //用100取余得到最后两位,得到日期
printf("%4d-%02d-%02d\n",y,m,d); //输出年月日,不足部分补0
return 1;} //函数正常结束,返回1值
int main()
{for(;fun();); //一个循环一直到函数返回0值结束
system("PAUSE"); //暂停屏幕,以看清结果
return 0;} //结束程序
展开全部
参考代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int date,mon;
scanf("%d",&date);
mon=(date/100)%100;
printf("%d-%02d-%02d",date/10000,mon,date%100);
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
int date,mon;
scanf("%d",&date);
mon=(date/100)%100;
printf("%d-%02d-%02d",date/10000,mon,date%100);
return 0;
}
更多追问追答
追问
如果要求为1、该函数为独立函数,可输入任意八位数,非法输入提示错误信息;2、有循环语句,输入文件结束标志EOF时程序结束。呢?
追答
好的,我看看。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
追问
如果要求为1、该函数为独立函数,可输入任意八位数,非法输入提示错误信息;2、有循环语句,输入文件结束标志EOF时程序结束。呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询