C语言趣味程序设计题目百例.docx

上传人:b****5 文档编号:6488323 上传时间:2023-01-07 格式:DOCX 页数:45 大小:33.81KB
下载 相关 举报
C语言趣味程序设计题目百例.docx_第1页
第1页 / 共45页
C语言趣味程序设计题目百例.docx_第2页
第2页 / 共45页
C语言趣味程序设计题目百例.docx_第3页
第3页 / 共45页
C语言趣味程序设计题目百例.docx_第4页
第4页 / 共45页
C语言趣味程序设计题目百例.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

C语言趣味程序设计题目百例.docx

《C语言趣味程序设计题目百例.docx》由会员分享,可在线阅读,更多相关《C语言趣味程序设计题目百例.docx(45页珍藏版)》请在冰豆网上搜索。

C语言趣味程序设计题目百例.docx

C语言趣味程序设计题目百例

Contest-2011级C语言课程大作业

StartTime:

2012-02-1916:

25:

00EndTime:

2012-03-0122:

00:

00

CurrentTime:

2012-2-2315:

51:

18Status:

Running  Public

ProblemID

Title

Y

1211ProblemA

趣味程序设计_狼追兔子

Y

1212ProblemB

趣味程序设计_巧夺偶数

Y

1213ProblemC

趣味程序设计_五猴分桃

Y

1214ProblemD

趣味程序设计_高次方数

Y

1215ProblemE

趣味程序设计_借书方案

Y

1216ProblemF

趣味程序设计_过桥问题

Y

1217ProblemG

趣味程序设计_数制转换

1218ProblemH

趣味程序设计_打渔晒网

N

1219ProblemI

趣味程序设计_喝酒问题

Y

1220ProblemJ

趣味程序设计_哥德巴赫猜想

1221ProblemK

趣味程序设计_打印日历

Y

1222ProblemL

趣味程序设计_抓交通肇事逃逸犯

Y

1223ProblemM

趣味程序设计_反序数

Y

1224ProblemN

趣味程序设计_新郎新娘

1225ProblemO

趣味程序设计_称重砝码

1226ProblemP

趣味程序设计_求车速

Y

1227ProblemQ

趣味程序设计_谁是窃贼

Y

1228ProblemR

趣味程序设计_出售金鱼

Y

1229ProblemS

趣味程序设计_百钱百鸡

Y

1230ProblemT

趣味程序设计_谜语博士

1231ProblemU

趣味程序设计_猜牌术(-)

Y

1232ProblemV

趣味程序设计_舍罕王的失算

1233ProblemW

趣味程序设计_怎样存钱利最大

1234ProblemX

趣味程序设计_猜牌术

(二)

Y

1235ProblemY

趣味程序设计_爱因斯坦的数学题

Y

1236ProblemZ

趣味程序设计_取火柴游戏

1237Problema

趣味程序设计_平分鱼和筐

Y

1238Problemb

趣味程序设计_可逆素数

Y

1239Problemc

趣味程序设计_三色球问题

Y

1240Problemd

趣味程序设计_抢n游戏

写在最前:

本文档中的题目;在不不同的编译器中可能会有提示错误,呵呵,小小的动动手改下变量的定义就可以运行了………………..

由于能力不足..有题目未解决的…或者有错误的我会…认真听取大家的..意见的….

呵呵……..有一两个….偷了下懒哦………

提供原题目还有本人自己的解答的源代码。

感谢大家的。

建议…………….

问题A:

趣味程序设计_狼追兔子

时间限制:

1Sec  内存限制:

128MB

提交:

341  解决:

63

[提交][状态][讨论版]

题目描述

一只兔子躲进了n个环形分布的洞的某一个中。

狼在第一个洞没有找到兔子,就隔一个洞,到第三个洞去找;也没有找到,就隔两个洞,到第六个洞去找。

以后每次多一个洞去找兔子……这样下去,如果一直找不到兔子,请问兔子可能在哪个洞中?

输入

有多组测试数据,读取到文件结尾符为止。

每组测试数据输入n(2≤n≤100),即洞穴个数。

输入到文件结尾符为止。

输出

兔子可能藏匿的洞。

如果不止一个,按从小到大的顺序输出。

如果不存在,输出空行。

样例输入

10

8

15

样例输出

2479

245789111214

提示

用一个数组a[10],对应的元素a[0],a[1],a[2]……a[9]对应表示10个洞,初值均置1。

通过一个循环用“穷举法”找兔子,第n次查找对应第(n-1)%10个洞,如果在第(n-1)%10个洞中没有找到兔子,因此将数组元素a[(n-1)%10]置0值。

循环完成后,检查a数组各元素(各个洞)的值,若其值仍为1,则兔子可能藏身该洞中。

#include

#include

intok[110];

intmain()

{

    intn,s,i,find;

    while(scanf("%d",&n)!

=EOF)

    {

        memset(ok,0,sizeof(ok));

        for(i=1;i<=200;i++)

            if(!

ok[find=(i*(i+1)/2)%n])

                if(find==0)

                    ok[n]=1;

                else

                    ok[find]=1;

        for(s=0,i=1;i<=n;i++)

            s+=ok[i];

        for(i=1,find=0;i<=n;i++)

            if(!

ok[i])

            {

                if(find!

=(n-s-1))

                {

                    printf("%d",i);find++;

                }

                else

                    printf("%d",i);

            }

        printf("\n");

    }

    return0;

}

 

问题B:

趣味程序设计_巧夺偶数

时间限制:

1Sec  内存限制:

128MB

提交:

174  解决:

73

[提交][状态][讨论版]

题目描述

桌子上有25颗棋子。

游戏双方轮流取子,每人每次最少取走一颗棋子,最多可取走3颗棋子。

双方照这样取下去,直到取光所有的棋子。

于是双方手中必然一方为偶数,一方为奇数,偶数方为胜者。

请编程实现人机游戏。

人先走,计算机后走。

若游戏结束,则输出“Gameover!

”。

输入

输入人取走棋子的个数。

输入一次,按一次回车。

游戏不止一轮。

按下文件结尾符,退出游戏。

必须在完成一轮后退出游戏。

不得中途退出游戏。

输出

输出计算机取走的个数,每次输出最优解。

样例输入

1

1

1

1

1

1

1

2

1

3

2

1

3

1

样例输出

3

3

3

3

3

3

Gameover!

2

3

1

2

3

1

Gameover!

 

#include

intmain()

{

    intn,sum=25;

    loop:

    while(scanf("%d",&n)!

=EOF)

    {

        sum-=n; 

        if(sum==1)

        {

            printf("1\nGameover!

\n");

            sum=25;

            gotoloop;

        if(sum==3||sum==2)

        {

            printf("1\n");

            sum--;          

        }

      

        }

        else

        {   

            if(sum<=0)

            {       

                printf("Gameover!

\n");

                sum=25;

                gotoloop;

            }       

            else

            {

                printf("%d\n",4-n);         

                if(n==1)

                   sum-=3;

                if(n==2)

                   sum-=2;

                if(n==3)

                   sum-=1;

            }

        }

    }

    return0;

}

 

问题C:

趣味程序设计_五猴分桃

时间限制:

1Sec  内存限制:

128MB

提交:

186  解决:

102

[提交][状态][讨论版]

题目描述

5只猴子一起摘了1堆桃子。

因为太累了,它们商量决定,先睡一觉再分。

过了不知多久,1只猴子来了。

它见别的猴子没来,便将这1堆桃子平均分成5份,结果多了1个,就将多的这个吃了,拿走其中的1堆。

又过了不知多久,第2只猴子来了。

它不知道有1个同伴已经来过,还以为自己是第1个到的呢。

于是将地上的桃子堆起来,平均分成5份,发现也多了1个,同样吃了这1个,拿走其中的1堆。

第3只、第4只、第5只猴子都是这样……问这5只猴子至少摘了多少个桃子?

第5个猴子走后还剩下多少个桃子?

输入

输出

输出5只猴子至少摘了多少个桃子,第5个猴子走后还剩下多少个桃子。

中间用空格隔开。

样例输入

样例输出

31211020

提示

思路一:

“分”——假设至少摘了first_num个桃子,则令first_num=6,7,8,9,10,……这样不断的试,如果那个数能按规则(first_num=(first_num-1)/5*4)被5只猴子顺利的吃1个并分5组,则为所求。

思路二:

“凑”——假设最后剩下last_num个桃子,则令last_num=4,5,6,7,8,9,10,……这样不断的试,如果那个数能按规则(last_num%4==0则last_num=last_num/4*5+1)凑5次,则为所求。

 

#include

#include

intmain()

{

    intfirst,i,t;

    for(i=1;i<5000;i+=5)

    {

        first=i;

        for(t=1;t<=5;t++)

        {

            if(first%5==1)

            {

                first=(first-1)/5*4;

                if(t==5)

                    printf("%d%d\n",i,first);

            }

            else

                break;

        }       

    }

// printf("time:

%.2lf\n",(double)clock()/CLOCKS_PER_SEC);

    return0;

}

 

问题D:

趣味程序设计_高次方数

时间限制:

1Sec  内存限制:

128MB

提交:

559  解决:

80

[提交][状态][讨论版]

题目描述

求13的n次方(12

例如:

13的13次方的最后三位数是253,13的20次方的最后三位数是801。

输入

有多组测试数据,每组测试数据一行,即整数n。

以文件结尾符结束。

输出

输出13的n次方的最后三位数

样例输入

13

20

样例输出

253

801

提示

64位整型用longlong表示,格式串为"%lld"

#include

intfun(longlongn)

{

    intk=13,t=1;

    while(n>0)

    {

        if(n%2==1)

            t=t*k%1000;

        k=k*k%1000;

        n>>=1;

    }

    returnt;

}

intmain()

{

    longlongn;

    while(scanf("%lld",&n)!

=EOF)

        printf("%03d\n",fun(n));

    return0;

}

问题E:

趣味程序设计_借书方案

时间限制:

1Sec  内存限制:

128MB

提交:

429  解决:

154

[提交][状态][讨论版]

题目描述

小明有n本新书,要借给A、B、C三位小朋友。

只借一次。

若每人每次只能借一本,则可以有多少种不同的借法?

输入

有多组测试数据,输入整数n(5≤n≤1000),输入到文件结尾符为止。

输出

借法总数。

样例输入

5

6

7

8

样例输出

60

120

210

336

 

#include

intmain()

{

    longlongn;

    while(scanf("%lld",&n)!

=EOF)

        printf("%lld\n",n*(n-1)*(n-2));

    return0;

}

 

问题F:

趣味程序设计_过桥问题

时间限制:

1Sec  内存限制:

128MB

提交:

102  解决:

19

[提交][状态][讨论版]

题目描述

过桥问题。

有N(N≥2)个人在晚上需要从X地到达Y地,中间要过一座桥,过桥需要手电筒(而他们只有1个手电筒),每次最多两个人一起过桥(否则桥会垮)。

N个人的过桥时间依次存入数组t[N]中,分别为:

t[0],t[1],……,t[N-1]。

过桥的速度以慢的人为准!

注意:

手电筒不能丢过桥!

问题是:

编程求这N个人过桥所花的最短时间。

输入

有多组测试数据,

每组数据先输入一个人数N,然后输入这N个人过桥所花的时间。

输出

输出对应的最短时间。

样例输入

412510

452101

样例输出

17

17

#include

voidfun(int*a,intn)

{

    inti,j,t,k;

    for(i=0;i

    {

        k=i;

        for(j=i+1;j

        {

            if(a[j]

                k=j;

        }

        if(i!

=k)

        {

             t=a[i];

             a[i]=a[k];

             a[k]=t;

        }

    }

}

intmain()

{

    inta[100],i,n,time,k;

    while(scanf("%d",&n)!

=EOF)

    {

        time=0;

        for(i=0;i

            scanf("%d",&a[i]);

        fun(a,n);

        k=n-1;

        while

(1)

        {

            if(k<=2)

            {

            if(k==0)

                time+=a[0];

            if(k==1)

                time+=a[1];

            if(k==2)

                time+=(a[0]+a[1]+a[2]);

            printf("%d\n",time);

            break;

            }

            else

            {

                if(2*a[1]>=a[0]+a[k])

                    time+=(2*a[0]+a[k-1]+a[k]);

                if(2*a[1]

                    time+=(a[0]+2*a[1]+a[k]);

                k-=2;

            }

        }

    }

    return0;

}

 

问题G:

趣味程序设计_数制转换

时间限制:

1Sec  内存限制:

128MB

提交:

265  解决:

110

[提交][状态][讨论版]

题目描述

将任一整数转换为二进制数形式并输出。

输入

有多行数据,每行输入一十进制数字n(1≤n≤2147483647)。

输入到文件结尾符为止。

输出

输出n的二进制表示

样例输入

1

2

3

4

5

6

7

样例输出

1

10

11

100

101

110

111

 

#include

#include

voidf(longlongnum)

{

    if(num)

    {

        f(num/2); 

        printf("%lld",num%2);

    }

}

intmain(void)

{       

    longlongnum;  

    while(scanf("%lld",&num)!

=EOF)

    {

        f(num);

        putchar('\n');

    }   

    return0;

}

 

问题H:

趣味程序设计_打渔晒网

时间限制:

1Sec  内存限制:

128MB

提交:

205  解决:

28

[提交][状态][讨论版]

题目描述

中国有名俗语叫“三天打鱼两天晒网”。

小强从2000年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是在“打鱼”,还是在“晒网”?

输入

输入日期,格式是yyyy-mm-dd,例如2012-01-23。

输入到文件结尾符为止。

输出

如果小强在打鱼,那么输出“Heisfishing.”。

如果小强子在晒网,那么输出“Heisdryingnets.”

样例输入

2000-01-01

2000-01-05

样例输出

Heisfishing.

Heisdryingnets.

源代码:

#include

intfun(inta)

{

if(a%4==0&&a%100!

=0)

return1;

if(a%400==0)

return1;

return0;

}

intsumday(intyear,intmonth,intday)

{

intsum_day=0,a=0;

if(month>2)

if(fun(year))

a=1;

if(month>=2)sum_day+=31;

if(month>=3)sum_day+=28;

if(month>=4)sum_day+=31;

if(month>=5)sum_day+=30;

if(month>=6)sum_day+=31;

if(month>=7)sum_day+=30;

if(month>=8)sum_day+=31;

if(month>=9)sum_day+=31;

if(month>=10)sum_day+=30;

if(month>=11)sum_day+=31;

if(month>=12)sum_day+=30;

sum_day=sum_day+a+day;

returnsum_day;

}

intsumyear(intyear)

{

intsum_year=0,i;

for(i=2000;i

{

sum_year+=(365+fun(i));

}

returnsum_year;

}

intmain()

{

intyear,month,day,sum,t;

while(scanf("%d-%d-%d",&year,&month,&day)!

=EOF)

{

sum=sumday(year,month,day)+sumyear(year);

t=sum%5;

if(t==1||t==2||t==3)

printf("Heisfishing.\n");

if(t==0||t==4)

printf("Heisdryingnets.\n");

}

return0;

}

 

问题I:

趣味程序设计_喝酒问题

时间限制:

1Sec  内存限制:

128MB

提交:

97  解决:

30

[提交][状态][讨论版]

题目描述

n个人同桌吃饭,其中一个是数学家,他出了一道难题:

假定桌子上有3瓶啤酒,将每瓶中的酒平分给几个人喝,但喝各瓶酒的人数是不一样的,不过其中有且只有一个人喝了每一瓶中的酒,且加起来刚好是一瓶,请问喝这3瓶酒的各有多少人?

输入

有多组测试数据,每行输入总人数n。

输入到文件结尾符为止。

输出

输出这三杯酒分别被几个人喝,三个数字从小到大排列。

如果无解,输出“Nosolution”。

样例输入

3

4

10

样例输出

Nosolution

Nosolution

236

问题J:

趣味程序设计_哥德巴赫猜想

时间限制:

1Sec  内存限制:

128MB

提交:

216  解决:

98

[提交][状态][

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1