| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4245 人关注过本帖
标题:发几条C编程题目看看
只看楼主 加入收藏
似水如风
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2008-8-24
收藏
得分:0 
回复 5# csynyk 的帖子
这应该是他们学C一学期后考试的题。
在北大的 onlinejudge   http://acm.pku. 上难题还是很多的。
2008-08-28 14:15
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
程序代码:
/*******************************************************************************

        描述 
        名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N
    块巧克力,20 > N >0)。妈妈告诉名名每天可以吃一块或者两块巧克力。假设名名每
    天都吃巧克力,问名名共有多少种不同的吃完巧克力的方案。例如:如果N=1,则名名
    第1天就吃掉它,共有1种方案;如果N=2,则名名可以第1天吃1块,第2天吃1块,也可
    以第1天吃2块,共有2种方案;如果N=3,则名名第1天可以吃1块,剩2块,也可以第1天
    吃2块剩1块,所以名名共有2+1=3种方案;如果N=4,则名名可以第1天吃1块,剩3块,
    也可以第1天吃2块,剩2块,共有3+2=5种方案。现在给定N,请你写程序求出名名吃巧
    克力的方案数目。


        关于输入 
        输入只有1行,即整数N。 


        关于输出 
        输出只有1行,即名名吃巧克力的方案数。 


        例子输入 
        4


        例子输出 
        5


        提示 
        无。 

################################################################################

        根据一个朋友的提示,引用了兔子问题的解法。大数(如20)的结果也不晓得正确
    与否,还望各位指正。

*******************************************************************************/

#include<stdio.h>
#define N 20
int main(void)
{
        int i,n;
        int a[N]={1,2,3,0};
        printf("请输入巧克力的数量(小于20的正整数):\n");
        while(9)      /*控制输入的数字为小于20的正整数*/
        {
                scanf("%d",&n);
                if(n<0||n>20)   continue;
                else break;
        }
        if(n<=3)    printf("共有%d种吃法。\n",n);
        else
        {
                for(i=3;i<n;i++)
                        a[i]=a[i-1]+a[i-2];
                printf("共有%d种吃法\n",a[i-1]);
        }
        getch();
}
2008-08-30 01:00
boyuan103826
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-11
收藏
得分:0 
第一题
#include <stdio.h>
#include <stdlib.h>

int main()
{

 int a;
 int b;
 int c;
 int i=0;
 for(a=1;a<=100;a++)
 {
    for(b=1;b<=100;b++)
    {
        for(c=1;c<=100;c++)
        {
            if(a*a+b*b==c*c)
            {    i++;
                printf("%d*%d + %d*%d =%d*%d\n",a,a,b,b,c,c);
            }
        }
    }
 }
 printf("\n");
 printf("add up the count is %d\n",i);
system("pause");
return 0;
2008-08-30 09:26
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:0 
第一题的沟股定理吧````

其他没看``没事的可以练练哦```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-08-30 12:36
hoodlum1980
Rank: 2
来 自:浙江大学
等 级:论坛游民
威 望:2
帖 子:289
专家分:23
注 册:2008-2-24
收藏
得分:0 
[bo][un]广陵绝唱[/un] 在 2008-8-30 01:00 的发言:[/bo]

/*******************************************************************************

        描述
        名名的妈妈从外地出差回来,带了一盒好吃又精美的巧克力给名名(盒内共有 N
    块巧克力,20 > N  ...


这道题其实就是求斐波那契数列,用那个递归函数即可。:f(n)=f(n-1)+f(n-2);
2008-08-30 19:26
keloy
Rank: 2
等 级:论坛游民
帖 子:107
专家分:16
注 册:2007-9-27
收藏
得分:0 
前面的几个题都是可以通过模拟和暴力完成的。

导弹有是最大上升子序列,有两种方法,时间是0(n^2)和0(nlgn)。

最后一题是回溯加深搜,相当于八皇后问题的变形,写起来还是有点小问题

字符串处理的时候可以使用stl中的string,就是个简单匹配问题,也没什么难度。

我感觉这题要及格还是容易,嘴个3,4个一般没问题,坚持的话应该可以做完的
2008-08-30 22:30
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
~~~~~~~~~~~~~~~~~~~~~~~
    13楼朋友的代码有点问题,因为如果出现3*3+4*4=5*5和4*4+3*3=5*5的时候,会照样打印出现,这与题意不符。试着作了个程序,如果有问题,欢迎指教。
程序代码:
/*******************************************************************************

        假设a、b、c均为整数,且满足a,b,c 大于1,并且小于等于100,找出所有符合
    条件:a2 + b2 = c2 的整数组。

        关于输入 
        无。

        关于输出 
        按a从小到大的顺序输出所有满足条件的整数组(若a相同,则按b从小到大的顺序
    输出),每行一组,每一组数据的输出样式为:

        3*3 + 4*4 = 5*5 

        注意: 

        1)3*3 + 4*4 = 5*5 和 4*4 + 3*3 = 5*5是同一组数据,后者不要输出; 
        2)加号和等号左右各有一个空格 
        3)9*9 + 12*12 = 15*15 (在前) 
        9*9 + 40*40 = 41*41 (在后)

*******************************************************************************/
#include<stdio.h>
#define M 2
#define N 100
int check(int *p,int *q,int n,int a,int b)
/* 检查函数,用于检查是否有相同的数据存在 */
{
        int i,m=1;
        for(i=0;i<n;i++)
            if(((a==p[i]&&b==q[i])||(a==q[i]&&b==p[i])))
            /* 如果发现a*a+b*b=c*c 的数据出现过,返回0 */
                m=0;
        return m;
}
int main(void)
{
        int a,b,c,i=0;
        int k[200]={0},l[200]={0};
        for(a=M;a<=N;a++)
            for(b=M;b<=N;b++)
                for(c=M;c<=N;c++)
                    if(a*a+b*b==c*c)
                    {
                        k[i]=a;
                        l[i]=b;
                        if(check(k,l,i,a,b))
                        /* 如果检查没有相同数据,就打印结果 */
                            printf("%d*%d + %d*%d = %d*%d\n",a,a,b,b,c,c);
                        i++;
                    }

        getch();
}
                        
            
2008-08-30 22:45
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
收藏
得分:0 
广陵加油。。。

学习需要安静。。海盗要重新来过。。
2008-08-30 22:47
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
谢谢开东。
2008-08-30 22:50
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
孙开东:

    我有个疑问:蛋糕的那道题,为什么和兔子问题扯上关系了呢?兔子问题是求积,而这蛋糕问题却是求分解整数的方法的数量,它们之间的联系是什么?

    如果其他朋友可以解答,也不胜感激。

    谢谢。
2008-08-30 22:53
快速回复:发几条C编程题目看看
数据加载中...
 
   



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

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