| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1297 人关注过本帖
标题:有哪个大哥大姐能帮我看看这道题?
只看楼主 加入收藏
依然辰听
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-12
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:20 
有哪个大哥大姐能帮我看看这道题?

这是一道编程题;

合同和其他法律文档中经常使用下列日期格式:
Dated this ______day of _______,20__.
下面编写程序,用这种格式来显示日期。用户以月/日/年的格式录入日期,然后计算机显示出“法定”格式的日期:
Enter  date (mm/dd/yy): 7/19/14
Dated this 19th day of July,2014.
提示:需要注意如何为日添加“th”(或者“st”,“nd”、“rd“),以及如何用单词而不是数字来显示月份。
搜索更多相关主题的帖子: 大姐 
2010-04-12 14:39
雨夜星光
Rank: 4
等 级:业余侠客
帖 子:66
专家分:230
注 册:2009-11-25
收藏
得分:10 
#include<stdio.h>
#include<string.h>
main()
{
    char a[10]={0},N[5]={0},Y[5]={0},R[5]={0};
    int i,m, n=0,y=0,r=0,count=0;
    printf("请输入日期,**/**/****\n");
    scanf("%s",a);   
    m=strlen(a);
    for(i=0;i<m;i++)
    {
        if(a[i]!='/')
        Y[y++]=a[i];
        else
            break;
    }
    for(i=y+1;i<m;i++)
    {
        if(a[i]!='/')
            R[r++]=a[i];
        else
            break;
    }
    for(i=r+y+2;i<m;i++)
    {
        if(a[i]!='/')
            N[n++]=a[i];        
        else
            break;
    }
    printf("date this is ");
    if(strlen(R)<=1)
    {
    switch(*R)
    {
    case '1':
        printf("%sst",R);
        break;
    case '2':
        printf("%snd",R);
        break;
    default:
        printf("%sth",R);
        break;
    }
    }
    else
        printf("%sth",R);
    printf(" day of ");
    switch(*Y)
    {
    case '1':
        printf("Jan");
        break;
    case '2':
        printf("Feb");
        break;
    case '3':
        printf("Mar");
        break;
    case '4':
        printf("Apr");
        break;
    case '5':
        printf("May");
        break;
    case '6':
        printf("Jun");
        break;
    case '7':
        printf("Jul");
        break;
    case '8':
        printf("Aug");
        break;
    case '9':
        printf("Sep");
        break;
    case '10':
        printf("Oct");
        break;
    case '11':
        printf("Nov");
        break;
    case '12':
        printf("Dec");
        break;
    default:
        printf("错误月份");
    }
    printf("    ,20%s\n",N);   
   
}


初步实现,但是算法不是很好!

C/C++交流群:65802335
2010-04-12 19:07
依然辰听
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-12
收藏
得分:0 
谢啦,不过,你的好像错了,
2010-04-13 12:42
依然辰听
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-12
收藏
得分:0 
你看看我的,我不过也有错误,帮个忙修改下



#include <stdio.h>
void main()
{
 int month,date,year;
    printf("Please Enter  date (mm/dd/yy):\n ");/*请按mm/dd/yy格式输入*/
    loop:{
    scanf("%2d%2d%2d",&month, &date,&year);
     if (month>12||date>31||year>99)
    {
        printf("Error!\n");
        goto loop;
    }
  else switch(month)
           {
           case 1:month="January";break;
           case 2:month=("February");break;
           case 3:month=("March");break;
           case 4:month=("April");break;
           case 5:month=("May");break;
           case 6:month=("June");break;
           case 7:month=("July");break;
           case 8:month=("August");break;
           case 9:month=("September");break;
           case 10:month=("Octorber");break;
           case 11:month=("November");break;
           case 12:month=("December");break;
           default:printf("Error!\n");
                goto loop;
            }
        switch(date)
        {
        case 01:printf("Dated this %dst day of %s,20%2d.\n",month,date,year);break;
        case 02:printf("Dated this %dnd day of %s,20%2d.\n",month,date,year);break;
        case 03:printf("Dated this %drd day of %s,20%2d.\n",month,date,year);break;
        default:printf("Dated this %dth day of %s,20%2d.\n",month,date,year);break;
        }
        goto loop;
    }
}
2010-04-13 12:45
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:10 
我把二楼的答案改了下。。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
main()
{
    char a[10]={0},N[5]={0},Y[5]={0},R[5]={0};
    int i,m, n=0,y=0,r=0,count=0;
    int yue;
    printf("请输入日期,**/**/****\n");
    scanf("%s",a);   
    m=strlen(a);
    for(i=0;i<m;i++)
    {
        if(a[i]!='/')
        Y[y++]=a[i];
        else
            break;
    }
    yue=atoi(Y);
    for(i=y+1;i<m;i++)
    {
        if(a[i]!='/')
            R[r++]=a[i];
        else
            break;
    }
    for(i=r+y+2;i<m;i++)
    {
        if(a[i]!='/')
            N[n++]=a[i];        
        else
            break;
    }
    printf("date this is ");
    if(strlen(R)<=1)
    {
    switch(*R)
    {
    case '1':
        printf("%sst",R);
        break;
    case '2':
        printf("%snd",R);
        break;
    default:
        printf("%sth",R);
        break;
    }
    }
    else
        printf("%sth",R);
    printf(" day of ");
    switch(yue)
    {
    case 1://把所有的字符'1'~'2'改为了整型
        printf("Jan");
        break;
    case 2:
        printf("Feb");
        break;
    case 3:
        printf("Mar");
        break;
    case 4:
        printf("Apr");
        break;
    case 5:
        printf("May");
        break;
    case 6:
        printf("Jun");
        break;
    case 7:
        printf("Jul");
        break;
    case 8:
        printf("Aug");
        break;
    case 9:
        printf("Sep");
        break;
    case 10:
        printf("Oct");
        break;
    case 11:
        printf("Nov");
        break;
    case 12:
        printf("Dec");
        break;
    default:
        printf("错误月份");
    }
    printf(" ,20%s\n",N);   
   
}

坚持做对的事情,而不是容易的事情。
2010-04-13 13:35
brackenbo
Rank: 1
等 级:新手上路
帖 子:6
专家分:5
注 册:2010-4-9
收藏
得分:0 
试试这个,应该短一点。
#include <stdio.h>

typedef struct DATE
{
    int day;
    int month;
    int year;
}DATE;

char Mon[][12] = { "NULL","January", "February", "March", "April", "May", "June", "July", "August", "September", "Octorber", "November", "December" };

int main()
{
    int i = 0;
    DATE date;
    char *mon = 0;
    char *suffix = 0;

    printf("Enter date (mm/dd/yy):");
    scanf( "%d/%d/%d", &date.month, &date.day, &date.year );
   
    for ( i = 0; i < 12; i++ )
    {
        if ( date.month == i )
        {
            mon = Mon[i];
        }
    }

    switch ( date.day )
    {
    case 01 :
        suffix = "st";break;
    case 02 :
        suffix = "nd";break;
    case 03:
        suffix = "rd";break;
    default:
        suffix = "th";
    }
    printf( "Dated this %d%s day of %s,20%.2d.", date.day, suffix, mon, date.year );

    return 0;
}
2010-04-13 13:52
依然辰听
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-12
收藏
得分:0 
楼上的大哥,你的也有问题呢,虽然程序没有错误,但是你的输出的就是错误的,而且如果要有个循环就好,不可能要别人老打开你程序再输入吧。
2010-04-13 14:04
依然辰听
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-12
收藏
得分:0 
五楼的程序也是有漏洞,你们程序都正确,不过也是输出的结果不对。而且也不能循环使用该程序,输入一遍又要重新打开程序再输入。
2010-04-13 14:08
依然辰听
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2010-4-12
收藏
得分:0 
加油咯
2010-04-13 14:09
caiqianxing
Rank: 2
等 级:论坛游民
帖 子:79
专家分:17
注 册:2010-4-8
收藏
得分:0 
dddddddddddddddddddd
2010-04-13 14:17
快速回复:有哪个大哥大姐能帮我看看这道题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026744 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved