博文
博客搬家了!!!!(2007-05-16 11:20:00)
摘要: 博客搬家了!!!!
本人博客已搬至:http://yhbspace.blog.163.com
欢迎各位去坐坐,
愿与广大C++爱好者一同学习
同时本人还创建一个C++爱好者的圈子
里面可有众多高手!......
c++入门实例之循环与判断三(2007-03-16 17:10:00)
摘要:求100至200之间的所有素数。素数即不能被 2——其2次方根√m 中的任一个整数整除。
#include<iostream>#include<cmath>using namespace std;int main(){ int m,k,s; for(m=101;m<200;m+=2) { s=sqrt(m); for(k=2;k<=s;k++) { if(m%k==0) break; } if(m%k!=0) cout<<m<<" "; } return 0;}......
母牛生小牛问题(2007-03-16 15:20:00)
摘要: 前段时间看钱能的C++程序设计教程,有一个母牛生小牛问题:有一头母牛,从出生第四年起,每一年都生一头小母牛,以此类推,第N年时共有多少头母牛。 这应该也是一个Fibonacci数,和我的另一篇文章母兔生小兔基本一样(http://blog.programfan.com/trackback.asp?id=24000)只是算法有点出入,规律应该是:年份 小牛 中牛 老牛 总头数1 1 0 0 12 0 1 0 13 0 0 1 14 1  ......
C++入门实例之编程初步二(2007-03-16 14:44:00)
摘要: 这是一个古老的数学问题,有一对免子,从出生第三个月起每个月都生一对兔子,假如兔子都不死的话,求每个月兔子的总对数。这实际上是一个Fibonacci数,即前两个数是1,第三个数起,其后的每个数都是前面两个数之和。即:1 1 2 3 5 8 13......因此可用递归算法实现:
#include<iostream>#include<iomanip>using namespace std;int main(){ long f1=1,f2=1; for(int i=1;i<=10;i++) //求20个月时每个月兔子的总对数 { cout<<setw(16)<<f1<<setw(16)<<f2; //每次输出两个月 f1=f1+f2; f2=f2+f1; } return 0;}
如果要实现某一个月的兔子的总对数,可用函数的递归调用:
#include<iostream>#include<iomanip>using namespace std;int main(){ long fac(int ); cout<<"输入要查询的月份:"; int n; cin>&g......
c++入门实例之循环与判断二(2007-03-16 13:52:00)
摘要:二、求PI的值。PI/4=1-1/3+1/5-1/7+1/9......直至最后一项的绝对值小于10的负17次方(即1E-7)。我看钱能的书上有不止一种算法,但我也是初学,所以在此只列出一种最简单的算法。 本文旨在掌握for循环与while循环的使用。1、用for循环实现:
#include<iostream>#include<cmath> //由于要用到绝对值函数fabs(),故包含此头文件#include<iomanip> //格式化输出using namespace std;int main(){ int s=1;double n=1,m,t=0;for(m=1;fabs(n)>1e-7;m+=2,n=s/m) //m在循体内完成初始化{ t=t+n; s=-s;}cout<<setiosflags(ios::fixed)<<setprecision(8);cout<<"pi="<<4*t<<endl;return 0;}
2、用while循环实现,只需修改循环体即可:
#include<iostream>#include<cmath> //由于要用到绝对值函数fabs(),故包含此头文件#include<iomanip> //格式化输出using namespace std;int main(){ int s=1;double n=1,m=1,t=0; //此处要对m进行初始化为1while(fabs(n)>1e-7){ t=t+n; s=-s; m+=2; n=s/m;}cout<<setiosflags(ios::fixed)<<setprecision(8);c......
c++入门实例之循环与判断一(2007-03-16 11:00:00)
摘要:一、一运输公司要对用户计算运费,假设每吨每公里的价格为P,货物重量为W,路程为S,折扣为D,其运费计算标准如下:
路程:s<250 折扣:d=0 250<=s<500 d=0.02 500<=s<1000 d=0.05 1000<=s<2000 d=0.08 &nb......
C++入门实例之编程初步一(2007-03-15 14:03:00)
摘要:一、求一元二次方程 ax2+bx+c=0 的根:#include<iostream>#include<cmath>#include<iomanip.h>using namespace std;int main(){ float a,b,c; float x1,x2; cout<<"请输入a,b,c的值:"; cin>>a>>b>>c; float t=b*b-4*a*c; if(t<0) cout<<"此方程无实根."<<endl; else { x1=(-b+sqrt(t))/(2*a); x2=(-b-sqrt(t))/(2*a); cout<<setiosflags(ios::fixed)<<setiosflags(ios::right); cout<<setprecision(4); cout<<"x1= "<<x1<<endl; cout<<"x2= "<<x2<<endl; } return 0;}二、判别某一年是否为闰年,满足闰年的条件是:1、能被4整除而不能被100整除,2、能同时被100和400整除。#include<iostream>using namespace std;int main(){ int year; cout<<"请输入要查询的年份:"; cin>>year; if((year%4==0 && year%100!=0)||(year%400==0)) cout<<year<<"是闰年"<<endl; els......
C++入门实例之数据类型与表达式(2007-03-15 11:46:00)
摘要:一、阅读以下代码,观察输出结果,通过此段代码,可进一步认识 C++中复合 运算符的应用。 #include<iostream> using namespace std; int main()将 { int i,j,m,n; i=8; j=10; m=++i+j++; n=(++i)+(++j)+m; cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n<<endl; return 0; } 通过运行,其输出应为:10 12 19 41二、将“China”设为密码,用原来字母后的第四个字母代替原来的
字母,如:A后的第四个字母是E,用E代替A,因此“China”
应译为 “Gimre” ,编程实现: #include<iostream> using namespace std; int main() { char c1,c2,c3......
中国老百姓的顺口溜(转)(2007-03-15 11:16:00)
摘要: 这年头,警察脾气特横,说打就打,说骂就骂,越看越像流氓;流氓啥事都管,组织纪律性不断提高,越看越像警察。你能分得清,谁是警察,谁是流氓吗? 这年头,官员小手常伸,得拿就拿,得搂就搂,越看越像小偷;小偷衣冠楚楚,风度翩翩教养十足,越看越像官员。你能分得清,谁是官员,谁是小偷吗? 这年头,明星时常犯贱,今天卖给他,明天卖给你,越看越像妓女;妓女时尚新潮,风情万种楚楚动人,越看越像明星。你能分得清,谁是明星,谁是妓女吗?
这年头,导演生性风流,玩了这个,再玩那个,越看越像色狼;色狼和蔼可亲,循循善诱诲人不倦,越看越像导演。你能分得清,谁是导演,谁是色狼吗? 这年头,学者专门溜须,上面说什么,他就阐述什么,越看越像屁精;屁精意气风发,苦心钻研拍马之道,越看越像学者。你能分得清,谁是学者,谁是屁精吗? 这年头,教授一心向钱,手里有什么,他就卖什么,越看越像商人;商人附庸风雅,脸上眼镜身后书架,越看越像教授。你能分得清,谁是教授,谁是商人吗? 这年头,医生心黑手辣,只管赚钱,不顾人命,越看越像杀手;杀手精益求精,宛若庖丁解牛娴熟自如,越看越像医生。你能分得清,谁是医生,谁是杀手吗? 这年头,流言飞遍天下,基本属实,极少掺假,越看越像新闻;新闻一屁俩谎,隐瞒真相胡吹乱侃,越看越像流言。你能分得清,哪是流言,哪是新闻吗? &......
深入理解C语言指针的奥秘( 转)(2007-03-13 15:45:00)
摘要:
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。 要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: (1)int*ptr; (2)char*ptr; (3)int**ptr; (4)int(*ptr)[3]; (5)int*(*ptr)[4]; 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型: (1)int*ptr;//指针的类型是int* (2)char*ptr;//指针的类型是char* (3)int**ptr;//指针的类型是int** (4)int(*ptr)[3];//指针的类型是int(*)[3] (5)int*(*ptr)[4];//指针的类型是int*(*)[4] 怎么样?找出指针的类型的方法是不是很简单? 指针所指向的类型 当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。 从语法上看,你只须把指针声明语句中的指针名字和名字左边的指针声明符*去掉,剩下的就是指针所指向的类型。例如: (1)int*ptr;//指针所指向的类型是int (2)char*ptr;//指针所指向的的类型是char (3)int**ptr;//指针所指向的的类型是int* (4)int(*ptr)[3];//指针所指向的的类型是int()[3] (5)int*(*ptr)[4];//指针所指向的的类型是int*()[4] 在指针的算术运算中,指针所指向的类型有很大的作用。 指针的类型(即指针本身的类型)和指针所指向的类型是两个概念。当你对C越来越熟悉时,你会发现,把与指针搅和在一起的"类型"这个概念分成"指针的类型"和"指针所指向的类型"两个概念,是精通指针的关键点之一。我看了不少书,发现有些写得差的书中,就把指......
