用c++编写程序。选择排序法和插入排序法(由大到小)。分开写,有必要的注释。

各位帮忙写一个c++由日期的到星期几的模块算法图吧,谢谢。

#include<iostream.h>
void main()
{
int flag=0,year,month,day;
long n;
cout<<"设公元1年1月1日为星期一."<<endl;
cout<<"请输入日期(年 月 日):"<<endl; //输入日期,并检验日期的合法性,直到输入正确为止
do{
if(flag=0)
cout<<"\n\n输入日期无效!请重新输入:"<<endl;
cin>>year>>month>>day;
flag=1;
if(year<1) //检验"年"
{
flag=0;
cout<<"年份大于零"<<endl;
continue;
}
if(month<1||month>12) //检验"月"
{
flag=0;
cout<<"月份为1—12"<<endl;
continue;
}
switch(month) //检验"日"
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
if(day>31)
{
flag=0;
cout<<"大月的天数为1—31天!"<<endl;
continue;
}
break;
case 2:
if((year%4==0)&&year%100!=0||(year%400==0))
{
if(day>29)
{
flag=0;
cout<<"闰年2月的天数为1-29天!"<<endl;
continue;
}
}
else if(day>28)
{
flag=0;
cout<<"非闰年2月的天数为1-28天!"<<endl;
continue;
}
break;
case 4: case 6:case 9:case 11:
if(day>30)
{
flag=0;
cout<<"小月的天数为1-30天!"<<endl;
continue;
}
}
}
while(flag); //计算公元1年1月1日到输入日期的天数
n=(year-1)*365; //公元1年到输入日期的天数(不考虑闰年)
n+=(year-1)/4; //考虑闰年
n-=(year-1)/100;
n+=(year-1)/400;
switch(month-1) //输入日期那年1月至输入日期那年那月的天数
{
case 11:n+=30;
case 10:n+=31;
case 9:n+=30;
case 8:n+=31;
case 7:n+=31;
case 6:n+=30;
case 5:n+=31;
case 4:n+=30;
case 3:n+=31;
case 2:
if((year%4==0)&&year%100!=0||(year%400==0)) n+=29;
else n+=28;
case 1:n+=31;
}
n+=day; //输入日期那年那月的天数
n%=7; //折成星期几。若为0,则为星期天
cout<<"输入日期是星期"; //输出星期几
switch(n)
{
case 0:cout<<"天"<<endl; break;
case 1:cout<<"一"<<endl; break;
case 2:cout<<"二"<<endl; break;
case 3:cout<<"三"<<endl; break;
case 4:cout<<"四"<<endl; break;
case 5:cout<<"五"<<endl; break;
case 6:cout<<"六"<<endl; break;
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

...对7个数分别用选择排序法和插入排序法(由大到小)排序。有必要的注释...
void select_sort(int *x, int n) { \/\/选择排序 int i, j, min;int t;for (i = 0; i < n - 1; i++) { \/\/ 要选择的次数:0~n-2共n-1次 min = i; \/\/ 假设当前下标为i的数最小,比较后再调整 for (j = i + 1; j < n; j++) { \/\/循环找出最小的数...

C++之如何将N个实数由大到小排序
回答:n个实数用数组a描述。 本例提供用选择排序方法与冒泡排序方法分别实现n个实数由大到小排序的函数搜索。 算法一:选择排序。 选择排序需反复进行求最大值与交换两个数这两种住房基本操作。 对a[o]、a[1]、…、a[n一1]由大到小排序:先求所有数的最大值,然后将最大值与a[o]进行交换;...

求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
通过使用某种排序算法,如冒泡排序、选择排序或插入排序,将输入的整数序列按升序排列。冒泡排序通过反复比较相邻元素交换位置,直到整个序列有序。选择排序则是每次找出剩余序列中最小(或最大)的元素,与当前位置进行交换。完成排序后,将排序后的数值及其序号组合在一起。最后,根据序号输出排序后的10个整...

用C++程序实现四个整数从大到小排列。。。
include<iostream>using namespace std;int main(){ int i,j; int a[4];\/\/这里小了 a[6] 吧,因为从a[0]开始的 cout<<"请输入4个整数:"<<endl; for(i=1;i<5;i++) { cin>>a[i]; } for(i=1;i<5;i++) { for(j=1;j<4;j++) 这里写成 for(j=1;ja[j])...

...C++风格的程序,输入两个整数,将它们按由大到小的顺序输出。要求使用...
include using namespace std;int main(){void compare(int &a, int &b);int a,b;cout<<"请输入需要比较的两个数。"<>a>>b;compare(a,b);return 0;}void compare(int &a,int &b){if(a>b)cout<<"最大值为"<<a<<"最小值为"<<b<<endl;if(a<b)cout<<"最大值为"<<b<<...

求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
(1)交换排序:参照求最大值和最小值的思想,按升序排序的基本过程是将第一个数字与下一个数字进行比较。如果后面的数字很小,那么交换和第一个数字的位置。否则,不要交换。(2)气泡排序:交换和重复两个相邻数字的过程。一般来说,如果有n个数字要排序,则需要n-1起泡。(3)选择排序:在交换...

求C++程序:任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果...
为了实现C++程序,可以按照以下步骤来完成一个从键盘输入10个整数并按从小到大排序的功能:首先,创建一个结构体,名为`IntInfo`,包含整数值(数值域)、排名(排名域)和序号(序号域)。接着,定义一个`IntInfo`类型的数组`d`,用于存储输入的10个整数及其相关信息。定义两个自定义函数:`compare...

C++ “直接选择排序”
很简单 程序这样理解:一个数组当两个用,前面(白色)是已排序的部分,后面(灰色)是待排序部分,每次找待排序数组中最小的数与数组第一位交换,并将它放入已排序部分。在待排序数组中寻找最小的那个元素要记录寻找过程中(即在循环中)已找到的最小值,以便用它不断和后面的元素比较,有更小的就...

3. 用任意一种编程语言(C\/C++\/Java\/C#\/VB.NET)写出任意一种你所知的...
void InsertSort(int a[], const int first, const int last);\/\/插入排序 void SelectSort(int a[], const int first, const int last);\/\/选择排序 void MergeSort(int a[], const int p, const int r);\/\/合并排序 void QuickSort(int a[],const int p,const int r);\/\/快速排序 ...

求c语言选择排序法和 冒泡排序法代码!
应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 冒泡排序 1、排序方法 将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个...

相似回答