有段简单的php代码C++代码

C++做的一个简单小程序,还很实用
C++做的一个简单小程序,还很实用
题目:编写一个程序,输入一个年份(大于2010年),输出这一年的年历已知:1、日是星期五2、闰年366天,非闰年为365天3、闰年二月为29天,非闰年为28天4、1、3、5、7、8、10、12月为31天5、4、6、9、11月为30天#includeclass calendar {public:calendar(int y = 2010, int m = 1, int d = 1);~calendar() {}void calShow();private:int manyDaysOneYear = 365;//默认一年是365天int manyDaysOneMonth = 30;//默认一个月是30天int FirstWeekofYear = 5;//第一个月的第一天是星期几,缺省值为日,星期五};calendar::calendar(int y, int m, int d){year = month = day =// 计算用户选择该年这个月共多少天=========================================================================if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)manyDaysOneMonth = 31;else if (month == 4 || month == 6 || month == 9 || month == 11)manyDaysOneMonth = 30;else if (month == 2 && manyDaysOneYear == 366)manyDaysOneMonth = 29;else if (month == 2 && manyDaysOneYear == 365)manyDaysOneMonth = 28;else cout && &月份输入错误!!!& &&// =======================================================================================================// 判断是否为闰年并计算出该年第一天是星期几===============================================================if ((year % 4 == 0 && year % 100 != 0 || year % 400 == 0))manyDaysOneYear = 366;if (year &= 2010)for (int i = 0; i & (year - 2010); i++)if (((2010 + i) % 4 == 0 && (2010 + i) % 100 != 0 || (2010 + i) % 400 == 0))FirstWeekofYear = (FirstWeekofYear + 366 % 7) % 7;//闰年的情况下,算出下一年的第一天是周几elseFirstWeekofYear = (FirstWeekofYear + 365 % 7) % 7;}else if (year & 2010)for (int i = 1; i &= (2010 - year); i++)if (((2010 - i) % 4 == 0 && (2010 - i) % 100 != 0 || (2010 - i) % 400 == 0))if ((FirstWeekofYear - 366 % 7) % 7 &= 0)FirstWeekofYear = (FirstWeekofYear - 366 % 7) % 7;//闰年的情况下,算出下一年的第一天是周几FirstWeekofYear = 7 + (FirstWeekofYear - 366 % 7) % 7;//闰年的情况下,算出下一年的第一天是周几if ((FirstWeekofYear - 365 % 7) % 7 &= 0)FirstWeekofYear = (FirstWeekofYear - 365 % 7) % 7;FirstWeekofYear = 7 + (FirstWeekofYear - 365 % 7) % 7;void calendar::calShow()int FirstDayofMonth = FirstWeekofY//本年第一个月的第一天是星期FirstWeekofYearfor (int m = 1; m & m++)if (m == 1|| m == 3 || m == 5 || m == 7 || m == 8 || m == 10 || m == 12)FirstDayofMonth = (FirstDayofMonth + 31 % 7) % 7;//计算一个月的第一天是星期几else if (m == 4 || m == 6 || m == 9 || m == 11)FirstDayofMonth = (FirstDayofMonth + 30 % 7) % 7;//计算一个月的第一天是星期几else if (m == 2 && manyDaysOneYear == 366)FirstDayofMonth = (FirstDayofMonth + 29 % 7) % 7;//计算一个月的第一天是星期几else if (m == 2 && manyDaysOneYear == 365)FirstDayofMonth = (FirstDayofMonth + 28 % 7) % 7;//计算一个月的第一天是星期几/*cout && &您选择的是& && year && &年& && month && &月& && day && &日& &&cout && &这一年天数共有& && manyDaysOneYear && &天& &&cout && &该年第一天是星期&;switch (FirstWeekofYear)case 0: cout && &日& &&case 1: cout && &一& &&case 2: cout && &二& &&case 3: cout && &三& &&case 4: cout && &四& &&case 5: cout && &五& &&case 6: cout && &六& &&//判断用户选择的这一天是星期几cout && year && &年& && month && &月& && day && &日& && &是星期&;switch ((FirstDayofMonth + (day % 7 - 1)) % 7)cout && &这个月共有& && manyDaysOneMonth && &天& &&cout && &\n\t\t & && year && &年& && month && &月日历\n& &&*/cout && &一\t& && &二\t& && &三\t& && &四\t& && &五\t& && &六\t& && &日& &&if (FirstDayofMonth == 0)// 因为本程序里0代表是星期7for (int j = 0; j & 7 - 1; j++)cout && &\t&;for (int j = 0; j & FirstDayofMonth - 1; j++)for (int i = 1; i &= manyDaysOneM i++)cout && i && &\t&;if ((FirstDayofMonth + i - 1) % 7 == 0)cout && &\n&;int main(void)while (true)system(&cls&);time_t tt = time(NULL);tm* t = localtime(&tt);cout && t-&tm_year + 1900 && &年& && t-&tm_mon + 1 && &月& && t-&tm_mday && &日&&&t-&tm_hour && &时& && t-&tm_min && &分& && t-&tm_sec && &秒\t& && &星期& && t-&tm_wday &&cout && &\n\t\t & && t-&tm_year + 1900 && &年& && t-&tm_mon + 1 && &月日历\n& &&calendar c(t-&tm_year + 1900, t-&tm_mon + 1);c.calShow();_sleep(1000);cout &&getchar();return 0;
本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。
百家号 最近更新:
简介: 分享最新科技资讯,独到观点和前沿科技信息
作者最新文章4718人阅读
程序设计(83)
编写一个简单的C++程序
每个C++程序都包含一个或多个函数(function),其中一个必须命名为main。操作系统通过调用main来运行C++程序。下面是一个非常简单的main函数,它什么也不干,只是返回给操作系统一个值:
int main()
一个函数的定义包含四部分:返回类型(return type)、函数名(function name)、一个括号包围的形参列表(parameterlist,允许为空)以及函数体(function body)。虽然main函数在某种程度上比较特殊,但其定义与其他函数是一样的。
在本例中,main的形参列表是空的(()中什么也没有)。6.2.5节(第218页)将会讨论main的其他形参类型。
main函数的返回类型必须为int,即整数类型。int类型是一种内置类型(built-in type),即语言自身定义的类型。
函数定义的最后一部分是函数体,它是一个以左花括号(curly brace)开始,以右花括号结束的语句块(block of statements):
这个语句块中唯一的一条语句是return,它结束函数的执行。在本例中,return还会向调用者返回一个值。当return语句包括一个值时,此返回值的类型必须与函数的返回类型相容。在本例中,main的返回类型是int,而返回值0的确是一个int类型的值。
请注意,return语句末尾的分号。在C++中,大多数C++语句以分号表示结束。它们很容易被忽略,但如果忘记了写分号,就会导致莫名其妙的编译错误。
在大多数系统中,main的返回值被用来指示状态。返回值0表明成功,非0的返回值的含义由系统定义,通常用来指出错误类型。
重要概念:类型&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
类型是程序设计最基本的概念之一,在本书中我们会反复遇到它。一种类型不仅定义了数据元素的内容,还定义了这类数据上可以进行的运算。
程序所处理的数据都保存在变量中,而每个变量都有自己的类型。如果一个名为v的变量的类型为T,我们通常说“v具有类型T”,或等价的,“v是一个T类型变量”。
编译、运行程序
编写好程序后,我们就需要编译它。如何编译程序依赖于你使用的操作系统和编译器。你所使用的特定编译器的相关使用细节,请查阅参考手册或询问经验丰富的同事。
很多PC机上的编译器都具备集成开发环境(Integrated Developed Environment,IDE),将编译器与其他程序创建和分析工具包装在一起。在开发大型程序时,这类集成环境可能是非常有用的工具,但需要一些时间来学习如何高效地使用它们。学习如何使用这类开发环境已经超出了本书的范围。
大部分编译器,包括集成IDE的编译器,都会提供一个命令行界面。除非你已经了解IDE,否则你会觉得借助命令行界面开始学习C++还是很容易的。这样学习方式的好处是,可以先将精力集中于C++语言本身(而不是一些开发工具),而且,一旦你掌握了语言,IDE通常是很容易学习的。
程序源文件命名约定
无论你使用命令行界面或者IDE,大多数编译器都要求程序源码存储在一个或多个文件中。程序文件通常被称为源文件(source file)。在大多数系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接一个或多个字符组成的。后缀告诉系统这个文件是一个C++程序。不同编译器使用不同的后缀命名约定,最常见的包括.cc、.cxx、.cpp、.cp及.C。
从命令行运行编译器
如果我们正在使用命令行界面,那么通常是在一个控制台窗口内(例如UNIX系统中的外壳程序窗口或者Windows系统中的命令提示符窗口)编译程序。假定我们的main程序保存在文件prog1.cc中,可以用如下命令来编译它
$ CC prog1.cc
其中,CC是编译器程序的名字,$是系统提示符。编译器生成一个可执行文件。Windows系统会将这个可执行文件命名为prog1.exe。UNIX系统中的编译器通常将可执行文件命名为a.out。
为了在Windows系统中运行一个可执行文件,我们需要提供可执行文件的文件名,可以忽略其扩展名.exe:
在一些系统中,即使文件就在当前目录或文件夹中。你也必须显式指出文件的位置。在此情况下,我们可以键入
“.”后跟一个反斜线指出该文件在当前目录中。
为了在UNIX系统中运行一个可执行文件,我们需要使用全文件名,包括文件扩展名:
如果需要指定文件位置,需要用一个“.”后跟一个斜线来指出可执行文件位于当前目录中。
访问main的返回值的方法依赖于系统。在UNIX和Windows系统中,执行完一个程序后,都可以通过echo命令获得其返回值。
在UNIX系统中,通过如下命令获得状态
在Windows系统中查看状态可键入
$ echo %ERRORLEVEL%
运行GNU或微软编译器&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
在不同操作和编译器系统中,运行C++编译器的命令也各不相同。最常用的编译器是GNU编译器和微软Visual Studio编译器。默认情况下,运行GNU编译器的命令是g++:
$g++ -o prog1 prog1.cc
此处,$是系统提示符。-o prog1是编译器参数,指定了可执行文件的文件名。在不同的操作系统中,此命令生成一个名为prog1或prog1.exe的可执行文件。在UNIX系统中,可执行文件没有后缀;在Windows系统中,后缀为.exe。如果省略了-o prog1参数,在UNIX系统中编译器会生成一个名为a.out的可执行文件,在Windows系统中则会生成一个名为a.exe的可执行文件(注意:根据使用的GNU编译器的版本,你可能需要指定-std=c++0x参数来打开对C++11的支持)。
运行微软Visual Studio 2010编译器的命令为cl:
C:\Users\me\Programs&cl /EHsc prog1.cpp
此处,C:\Users\me\Programs&是系统提示符,\Users\me\Programs是当前目录名(即当前文件夹)。命令cl调用编译器,/EHsc是编译器选项,用来打开标准异常处理。微软编译器会自动生成一个可执行文件,其名字与第一个源文件名对应。可执行文件的文件名与源文件名相同,后缀为.exe。在此例中,可执行文件的文件名为prog1.exe。
编译器通常都包含一些选项,能对有问题的程序结构发出警告。打开这些选项通常是一个好习惯。我们习惯在GNU编译器中使用-Wall选项,在微软编译器中则使用/W4。
更详细的信息请查阅你使用的编译器的参考手册。
练习1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行第2页的main程序。
练习2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系统如何处理main返回的错误标识。
本文节选自《C++ Primer中文版(第5版)》
【美】Stanley B.Lippman( 斯坦利 李普曼)& Josee Lajoie(约瑟 拉乔伊 )& Barbara E. Moo (芭芭拉 默) &著
王刚& 杨巨峰 译
电子工业出版社出版
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3801000次
积分:52313
积分:52313
排名:第58名
原创:1434篇
转载:83篇
评论:3421条
(3)(8)(11)(8)(20)(22)(13)(21)(15)(14)(4)(21)(4)(5)(4)(6)(9)(4)(6)(4)(7)(7)(5)(8)(13)(3)(7)(4)(9)(10)(8)(7)(23)(16)(4)(17)(13)(8)(29)(23)(4)(21)(23)(14)(23)(11)(12)(16)(12)(22)(20)(25)(26)(31)(47)(33)(7)(11)(7)(14)(27)(26)(14)(19)(32)(20)(19)(19)(30)(27)(5)(20)(19)(20)(17)(18)(38)(26)(44)(40)(38)(30)(21)(24)(52)(30)(15)(10)(1)(2)(10)(7)
() () () () () () ()一个c++简单程序的源代码_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
一个c++简单程序的源代码
我有更好的答案
cin&int main(){a#include &iostream.h&&gt
采纳率:20%
include &这是输出&
return 0;}上面是输出一行文字;&&iostream.h&&int main(){
为您推荐:
等待您来回答小木虫 --- 600万学术达人喜爱的学术科研平台
热门搜索:
&&【原创】一个简单的kNN分类算法 (k-Nearest Neighbor algorithm) 的C++实现(附源码)
【原创】一个简单的kNN分类算法 (k-Nearest Neighbor algorithm) 的C++实现(附源码)
KNN算法的决策过程
  k-Nearest Neighbor algorithm
是K最邻近结点算法(k-Nearest Neighbor algorithm)的缩写形式,是电子信息分类器算法的一种
该算法的基本思路是:在给定新文本后,考虑在训练文本集中与该新文本距离最近(最相似)的 K 篇文本,根据这 K 篇文本所属的类别判定新文本所属的类别
  左图中,绿色圆要被决定赋予哪个类,是红色三角形还是蓝色四方形?如果K=3,由于红色三角形所占比例为2/3,绿色圆将被赋予红色三角形那个类,如果K=5,由于蓝色四方形比例为3/5,因此绿色圆被赋予蓝色四方形类。
  K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
  KNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。
  该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。因此可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
KNN-主要应用领域
·文本分类·聚类分析·数据挖掘·机器学习·预测分析·减少维度·模式识别·图像处理
我的kNN分类算法程序:
------------------- Code written by Stephen Liu -----------------------
#define MAX 1000
//输入的已知类别的数据
//需要根据kNN判断类别的未知数据
void input_data()
cout << "请输入已知点的个数:";
for ( i = 1; i <= i++)
&&cout <<"请输入点 " << i&&<<"&&的坐标x , y 和所属类别:" ;
&&cin >> data.x >> data.y >> data.
void Distance()//计算未知类别点与所有已知类别点的距离
for ( i = 1; i <= i++ )
&&data.distance = sqrt&&(&&(data.x - point.x) * (data.x - point.x) + (data.y - point.y) * (data.y - point.y) );
void sort()//对距离进行从小到大排序
for( i = 1; i <= i++)
&&for(j = j > j--)
& &if(data.distance&&< data.distance)
int kNN( )
int the_type,num = 0,
cout <<"请输入kNN的k值:";
for ( i = 1; i <= 99; i++)
&&types = 0;
for ( i = 1; i <= i++)//对已排序的前k位距离类别进行统计
&&types ++;
for ( i = 1; i <= 99; i++)//找出未知类别点属于的类别
&&if (types > num )
& &num = types;
& &the_type =
return ( the_type);
int main()
input_data();
cout <<"请输入未知类别点的坐标x,y(输入0 0退出):";
cin >> point.x >> point.y;
&&Distance();
&&cout <<"点( " << point.x << " , " << point.y <<" )属于类"<<&&kNN() <<
&&cout <<"请输入未知类别点的坐标x,y(输入0 0退出):";
&&cin >> point.x >> point.y;
while ( point.x != 0 && point.y != 0);
cout <<"======= kNN分类算法 Stephen Liu&&E-mail:& &2010.8 ======= ";
system("pause");
------------------------- Code end ---------------------------------
我的评价:
这是kNN分类算法的最简单的一种情况,当k取不同值时分类可能会出现不同。样本过大时,由于要比较的次数增多,效率降低。
谢谢前辈指点,这个只是我写的粗略算法,正在改进中
我也查了不少关于kNN改进算法的论文,等考完研了再认真看看,总觉得精力太有限~~~~(>_<)~~~~ 。模式识别挺有意思的哈,
我也查了不少关于kNN改进算法的论文,等考完研了再认真看看,总觉得精力太有限~~~~(>_<)~~~~ 。模式识别挺有意思的哈
谢谢前辈指点!
学术必备与600万学术达人在线互动!
扫描下载送金币如何用C++写一个简单的小游戏? - 知乎147被浏览60471分享邀请回答12414 条评论分享收藏感谢收起

我要回帖

更多关于 一段简单的python代码 的文章

 

随机推荐