“写一个函数,输入一个8位整数,如20180327,输出2018-03-27”c语言如何实现?

 我来答
czy7812
2018-11-05 · TA获得超过2670个赞
知道小有建树答主
回答量:518
采纳率:88%
帮助的人:189万
展开全部

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;}                          //结束程序
cylz0703
2018-11-05 · TA获得超过3.4万个赞
知道大有可为答主
回答量:1.8万
采纳率:83%
帮助的人:4468万
展开全部
参考代码如下:
#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时程序结束。呢?
追答
好的,我看看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
听不清啊
高粉答主

2018-11-05 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.9亿
展开全部

#include<stdio.h>
int main()
{int y,m,d;
 scanf("%4d%2d%2d",&y,&m,&d);
 printf("%d-%02d-%02d\n",y,m,d);
 return 0;
}
追问
如果要求为1、该函数为独立函数,可输入任意八位数,非法输入提示错误信息;2、有循环语句,输入文件结束标志EOF时程序结束。呢?
追答

#include<stdio.h>
void fun()
{int y,m,d,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
 while(scanf("%4d%2d%d",&y,&m,&d)!=EOF)
 {a[2]=28+(y%4==0&&y%100||y%400==0);
  if(y<1||m<1||m>12||d<1||d>a[m])
  {printf("date error!\n");continue;}
  printf("%d-%02d-%02d\n",y,m,d);
 }
}
int main() 
{fun();
 return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式