博文
多项式求和(递归)(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];
&......
学习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++ Bibl......
梅齐亚克砝码问题(转载)(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:满足题意的标记
......
排列(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("bo......