博文
多项式求和(递归)(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<......
学习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......
梅齐亚克砝码问题(转载)(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:"); ......
排列(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); }}......
企业利润提成(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);} ......
