工大在线

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2475|回复: 13
打印 上一主题 下一主题

[分享] 第六届"探索杯"编程大赛决赛题

[复制链接]

18

主题

0

好友

93

积分

秀才

Rank: 3Rank: 3

该用户从未签到

西工币
2151 枚
好评度
0 点
声望
41 点
注册时间
2007-4-23
帖子
72
积分
93
UID
9687
跳转到指定楼层
1#
发表于 2008-5-7 21:27:46 |只看该作者 |倒序浏览
(25分)俗话说“三天打鱼两天晒网”,若某人从2000年1月1日开始“三天打鱼两天晒网”,问此人在以后的某一天是“打鱼”还是“晒网”。

(25分)输入正整数N(0<N<1000),产生对应的英文字符串输出。如:
输入:135,则输出:ONE HUNDRED THIRTY FIVE

(50分)在指定文本文件中,查找是否存在指定的字符串。

(50分)一幅扑克52张牌,打桥牌时需将牌分给四个人。设计程序实现自动发牌。要求:黑桃用S(Spaces)表示,红心用H(Hearts)表示,方块用D(Diamonts)表示,梅花用C(Clubs)表示。
比赛时间为120分钟,第一题为样题,大多数同学在它上面花费的时间太多
答案将在比赛颁奖典礼上公布,同时会有专业老师亲临现场点评.

[ 本帖最后由 bigice803 于 2008-5-7 21:33 编辑 ]
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏0 顶!~顶!~0 扔鸡蛋~扔鸡蛋~0
我的西安工大~~~~~~

94

主题

5

好友

1182

积分

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
7832 枚
好评度
2 点
声望
648 点
注册时间
2008-1-3
帖子
841
积分
1182
UID
13745

终身成就奖 特殊贡献奖 论坛元老 音乐天才 金牛座 辰龙 MVP 音乐达人

2#
发表于 2008-5-7 22:10:08 |只看该作者
刚刚结束~
速度还真快啊~!
回复

使用道具 举报

74

主题

7

好友

2301

积分

荣誉会员

荣誉会员

Rank: 8Rank: 8

该用户从未签到

西工币
8575 枚
好评度
11 点
声望
321 点
注册时间
2007-9-9
帖子
2036
积分
2301
UID
12104

灌水龙王奖 帖子大王 超级清洁员 天蝎座 寅虎

3#
发表于 2008-5-8 08:05:46 |只看该作者
呵呵~这个了解~!呵呵~
回复

使用道具 举报

18

主题

0

好友

93

积分

秀才

Rank: 3Rank: 3

该用户从未签到

西工币
2151 枚
好评度
0 点
声望
41 点
注册时间
2007-4-23
帖子
72
积分
93
UID
9687
4#
发表于 2008-5-8 21:47:10 |只看该作者

样题中给出的答案有错误,现更正如下

#include<stdio.h>
typedef struct {
                int year;
                int month;
                int day;
               }Date,*P_date;/*在定义结构体的同时声明了类似"类型"的两个"类型",前一个为定义的该结构体类型;
                    后一个为,该结构体类型的指针类型.在后面可以直接用这两个类型声明变量.*/

int days(Date* day);

int main()
{
   P_date term,today;
   int yearday,year,day;
   printf("Enter year/month/day:");
     scanf("%d%d%d",&today->year,&today->month,&today->day); /*输入日期*/
   term->month=12; /*设置变量的初始值:月*/
   term->day=31; /*设置变量的初始值:日*/
   for(yearday=0,year=1990;year<today->year;year++)
     {
       term->year=year;
       yearday+=days(term); /*计算从1990年至指定年的前一年共有多少天*/
     }
   yearday+=days(today); /*加上指定年中到指定日期的天数*/
   day=yearday%5; /*求余数*/
   if(day>0&&day<4)
      printf("he was fishing at that day.\n"); /*打印结果*/
   else
      printf("He was sleeping at that day.\n");
getch();
}

int days(P_date day)
{
   int i,lp;
  static int day_tab[2][13]=
    {
      {0,31,28,31,30,31,30,31,31,30,31,30,31,}, /*平均每月的天数*/
      {0,31,29,31,30,31,30,31,31,30,31,30,31,},
    };

  lp=day->year%4==0&&day->year%100!=0||day->year%400==0;/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/
  for(i=1;i<day->month;i++) /*计算本年中自1月1日起的天数*/
     day->day+=day_tab[lp];
return day->day;
}
我的西安工大~~~~~~
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
5#
发表于 2008-5-9 14:36:20 |只看该作者
没事做 随便写写
#include"stdio.h"
long day(int year,int month,int day)
{
    int tmpy,tmpm;
    long count=0;

    for(tmpy=2000;tmpy<year;tmpy++)     //先找到年份的日子
    {
        if(tmpy%4==0)
            count+=366;
        else
            count+=365;
    }
   
    int month1[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    for(tmpm=1;tmpm<month;tmpm++)          //月找到日子
    {
        count+=month1[tmpm-1];
    }
    if(year%4==0&&month>2)                 //是否当年世闰年大于2月
        count++;

    count+=day-1;                          //加上当日;
   
    return count;
}

int main(void)
{
    int year,month,day1;
    printf("请输入年,月,日:\n");
    scanf("%d,%d,%d",&year,&month,&day1);
    long count=day(year,month,day1);
    printf("%d",count);
    if ((count%5)<4&&count%5!=0)
        printf("打鱼\n");
    else
        printf("晒网\n");
    return 0;
}
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
6#
发表于 2008-5-9 15:04:44 |只看该作者
随便写的 第二题

#include"stdio.h"

void trc(int n)
{
    switch(n)
    {
        case 1:printf("one");
        break;
        case 2:printf("two");
        break;
        case 3:printf("three");
        break;
        case 4:printf("four");
        break;
        case 5:printf("five");
        break;
        case 6:printf("six");
        break;
        case 7:printf("seven");
        break;
        case 8:printf("eight");
        break;
        case 9:printf("nine");
        break;
        case 10:printf("ten");
        break;
        case 11:printf("eleven");
        break;
        case 12:printf("twelve");
        break;
        case 13:printf("thirteen");
        break;
        case 14:printf("fourteen");
        break;
        case 15:printf("fifteen");
        break;
        case 16:printf("sixteen");
        break;
        case 17:printf("seventeen");
        break;
        case 18:printf("seventeen");
        break;
        case 19:printf("nineteen");
        break;
    }
}

void trcc(int n)
{
    switch(n)
    {
        case 2:printf("twenty ");
        break;
        case 3:printf("thirty ");
        break;
        case 4:printf("forty ");
        break;
        case 5:printf("fifty ");
        break;
        case 6:printf("sixty ");
        break;
        case 7:printf("seventy ");
        break;
        case 8:printf("eighty ");
        break;
        case 9:printf("eighty ");
        break;
    }
}
        
int main(void)
{
    int n,tmp;
    printf("请输入数字:\n");
    scanf("%d",&n);
    tmp=n;
   
    if(n>=100)
    {
        trc(n/100);
        printf(" HUNDRED ");
        tmp=n%100;
    }
   
    if(tmp>=20)
    {
        trcc(tmp/10);
        tmp=tmp%10;
    }
   
    trc(tmp);
    printf("\n");
   
    return 0;
}
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
7#
发表于 2008-5-9 15:21:30 |只看该作者
随便写的 第三题
#include<stdio.h>
#include<string.h>
#define NG 1
#define OK 0
#define BUF_SIZE 256
#define FILENAME "text.txt"  //文件名
#define SRT "123456"         //要查找的字符串

int   SeekStringInFile(char *stFind,char *stFilePath);
void main()
{
    int inRtn;

    inRtn=SeekStringInFile(SRT,FILENAME);

    if(inRtn==NG)
        printf("NG\n");
    else
        printf("OK\n");
}

int SeekStringInFile(char *stFind,char *stFilePath)
{
    char   stBuf[BUF_SIZE];
    FILE   *fpFile;
    if(strlen(stFind)==0x00||strlen(stFilePath)== 0x00)
        return NG;
   
    if((fpFile=fopen(stFilePath,"r"))==NULL)
        return NG;

    while(!feof(fpFile))
    {
        memset(stBuf,0X00,BUF_SIZE);
        fgets(stBuf,BUF_SIZE,fpFile);
        if(strstr(stBuf,stFind)!=NULL)
        {
            fclose(fpFile);
            return OK;
        }
     }

    fclose(fpFile);
    return NG;
}
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
8#
发表于 2008-5-9 15:56:07 |只看该作者
最后一题:
#include <stdlib.h>
#include <stdio.h>
#include <alloc.h>

struct all_card
{
  char mode;
  int number;
}card[52];

typedef struct lnode
{
  struct all_card data;
  struct lnode *next;
}lnode;

void creat(lnode *h)
{
    lnode *t,*p;
    int i,j,k;
    k=0;
    for(i=1;i<=4;i++)
    {
        for(j=1;j<=13;j++)
        {
          card[k].number=j;
          if(i==1)
            card[k].mode='S';
          if(i==2)
            card[k].mode='H';
          if(i==3)
            card[k].mode='D';
          if(i==4)
            card[k].mode='C';
          k++;
        }
     }

    t=h;
    for(k=0;k<52;k++)
    {
        p=(lnode*)malloc(sizeof(lnode));
        p->data=card[k];
        p->next=NULL;
        t->next=p;
        t=p;
    }
}


void print(lnode *h)
{
    int k=1;
    lnode *p;
    p=h->next;
    while(p)
    {
      printf("%d.%c %d  ",k,p->data.mode,p->data.number);
      p=p->next;
      k++;
    }
}

int take_big()
{
   int j;
   static int array[53]={0};
   srand(time(NULL));
   while(1)
   {
       j=(rand()%52)+1;
       if(array[j]==0)
       {
           array[j]=j;
           break;
       };
   }
   return j;
}


void putcard(lnode *h,lnode *h1,lnode *h2,lnode *h3,lnode *h4)
{
    lnode *p,*x1,*x2,*x3,*x4;
    lnode *t1,*t2,*t3,*t4;
    int i,j,k=1;
    p=h;
    t1=h1;
    t2=h2;
    t3=h3;
    t4=h4;
    while(k<=52)
    {
        i=take_big();
        if(k%4==0)
        {
            j=1;
            p=h->next;
            while(p&&j<i)
            {
                p=p->next;
                ++j;
            }
            if(i>0&&j==i)
            {

                x1=(lnode*)malloc(sizeof(lnode));
                x1->data=p->data;
                x1->next=NULL;
                t1->next=x1;
                t1=x1;
            }
        }
        else if(k%4==1)
        {
            j=1;
            p=h->next;
            while(p&&j<i)
            {
                p=p->next;
                ++j;
            }
            if(i>0&&j==i)
            {

                x2=(lnode*)malloc(sizeof(lnode));
                x2->data=p->data;
                x2->next=NULL;
                t2->next=x2;
                t2=x2;
            }
        }
        else if(k%4==2)
        {
            j=1;
            p=h->next;
            while(p&&j<i)
            {
                p=p->next;
                ++j;
            }
            if(i>0&&j==i)
            {

                x3=(lnode*)malloc(sizeof(lnode));
                x3->data=p->data;
                x3->next=NULL;
                t3->next=x3;
                t3=x3;
            }
        }
        else
        {
            j=1;
            p=h->next;
            while(p&&j<i)
            {
                p=p->next;
                ++j;
            }
            if(i>0&&j==i)
            {

                x4=(lnode*)malloc(sizeof(lnode));
                x4->data=p->data;
                x4->next=NULL;
                t4->next=x4;
                t4=x4;
            }
         }
         k++;
         }
}


void main()
{
    lnode *h,*h1,*h2,*h3,*h4;
    int i,j;
    int k;
   
    h=(lnode*)malloc(sizeof(lnode));
    h->next=NULL;
    h1=(lnode*)malloc(sizeof(lnode));
    h1->next=NULL;
    h2=(lnode*)malloc(sizeof(lnode));
    h2->next=NULL;
    h3=(lnode*)malloc(sizeof(lnode));
    h3->next=NULL;
    h4=(lnode*)malloc(sizeof(lnode));
    h4->next=NULL;
   
    creat(h);
    putcard(h,h1,h2,h3,h4);
    print(h1);
    printf("\n");
    print(h2);
    printf("\n");
    print(h3);
    printf("\n");
    print(h4);
    printf("\n");
}
回复

使用道具 举报

7

主题

0

好友

254

积分

举人

Rank: 4

该用户从未签到

西工币
759 枚
好评度
0 点
声望
235 点
注册时间
2006-9-12
帖子
136
积分
254
UID
3052
9#
发表于 2008-5-9 15:58:10 |只看该作者
总结:除了最后一题,其他题目难度都比较低,本科计算机专业的学生都应该能做出来.

PS:2个小时差不多,我觉得足够用,不知道大家的情况

也希望学弟学妹们,多练习,看到很多人毕业后,连hello world都不会写,真的不知道在大学里面都做了些什么.
回复

使用道具 举报

108

主题

8

好友

1525

积分

榜眼

变不成白天鹅的黑鸭子

Rank: 7Rank: 7Rank: 7

该用户从未签到

西工币
786 枚
好评度
37 点
声望
1481 点
注册时间
2006-7-19
帖子
741
积分
1525
UID
1279

特殊贡献奖 帖子大王 工大在线超人气MM 金牛座 卯兔

10#
发表于 2008-5-10 22:32:01 |只看该作者
LS的很牛啊
我们当时没学C,学校拿我们电信的04级做试验,直接上JAVA,结果是很失败,也把我们害惨了
以前以拥有它为豪为傲,却又被我弄丢了!
微笑背后是最最深刻的痛!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|xatubbs.com ( 苏ICP备11050183号 )

GMT+8, 2025-7-9 18:18 , Processed in 0.113955 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部