博文

多项式求和(递归)(2006-08-05 11:05:00)

摘要:#include <iostream.h>int f(int x,int n){    int a=1;    for(int i=1;i<=n;i++)    a*=x;    return a;}int fn(int n,int x,int a[]){    if(n==0)        return a[0];    else        return fn(n-1,x,a)+a[n]*f(x,n);}int main(){    int n,x,count=0;    int a[20];        cout<<"输入n和x:"<<endl;    cin>>n>>x;        cout<<"输入a[]:"<<endl;    for(int i=0;i<=n;i++)    cin>>a[i];    cout<<"结果为:"<<endl;    cout<......

阅读全文(32377) | 评论:0

学习c++的50条忠告(初学者必看)(2006-08-04 16:06:00)

摘要:1.把C++当成一门新的语言学习(和C没啥关系!真的。);2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;6.会用Visual C++,并不说明你会C++;7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;9.看Visual C++的书,是学不了C++语言的;10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?11.浮躁的人容易问:我到底该学什么;——别问,学就对了;12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;17.C++不仅仅是支持面向对象的程序设计语言;18.学习编程最好的方法之一就是阅读源代码;19.在任何时刻都不要认为自己手中的书已经足够了;20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;23.请看《Effective C++》和《More Effective C++》以及《Exceptiona......

阅读全文(2381) | 评论:0

梅齐亚克砝码问题(转载)(2006-08-04 15:55:00)

摘要:法国数学家梅齐亚克在他著名的《数字组合游戏》(1962)中提出了一个问题: 一位商人有一个重40磅的砝码,一天不小心将砝码摔成了 四块。后来商人称得每块的重量都是整磅数,而且发现这 四块碎片可以在天平上称1至40磅之间的任意重量。请问 这四块碎片各重多少? 问题分析与算法设计 题目中给出的条件是“在天平上”,这意味着:同一砝码 既可以放在天平的左侧,也可以放在天平的右侧。若规定 重物只能放在天平的左侧,则当天平平衡时有: 重物重量+左侧砝码重量总和=右侧砝码重量总和 由此可得: 重物重量=右侧砝码重量总和-左侧砝码重量总和 编程时只要根据以上公式,使得 右侧砝码重量总和-左侧砝码重量总和 可以表示1到40之间的全部重量即可。编程中要注意的是: 怎样采用一种简单的方法来表示一个砝码是在天平的左侧 还是在天平的右侧,或是根本没有使用。 以下程序采用1、 -1和0分别表示上述三种情况。 程序与程序注释**************************************************/ #include<stdio.h>#include<math.h>int main(void){    int weight1,weight2,weight3,weight4;//摔坏的四块砝码的重量    int d1,d2,d3,d4;//四块砝码是放在左盘还是右盘,或者根本没有使用    int x,flag;//x:可用四块砝码称出的重量,flag:满足题意的标记       printf("The weight is broke up as following 4 pieces:");   ......

阅读全文(4400) | 评论:0

排列(2006-08-04 11:47:00)

摘要:题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去      掉不满足条件的排列。 2.程序源代码:main(){int i,j,k;printf("\n");for(i=1;i<5;i++)    /*以下为三重循环*/ for(j=1;j<5;j++)   for (k=1;k<5;k++)   {    if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/    printf("%d,%d,%d\n",i,j,k);   }}......

阅读全文(2685) | 评论:1

企业利润提成(2006-08-04 11:46:00)

摘要:题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高   于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提   成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于   40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于   100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。      2.程序源代码:main(){long int i;int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;scanf("%ld",&i);bonus1=100000*0.1;bonus2=bonus1+100000*0.75;bonus4=bonus2+200000*0.5;bonus6=bonus4+200000*0.3;bonus10=bonus6+400000*0.15; if(i<=100000)  bonus=i*0.1; else if(i<=200000)     bonus=bonus1+(i-100000)*0.075;    else if(i<=400000)        bonus=bonus2+(i-200000)*0.05;       else if(i<=600000)           bonus=bonus4+(i-400000)*0.03;          else if(i<=1000000)              bonus=bonus6+(i-600000)*0.015;             else              bonus=bonus10+(i-1000000)*0.01;printf("bonus=%d",bonus);} ......

阅读全文(4905) | 评论:5