#include "iostream.h" #include "iomanip.h" ////////////////////////////////////////// void PrintMonth(int m);//打印第m月 int DaysOfMonth(int m);//计算m月有几天 int IsPrime(int year);//判断year是否是润年 int FirstDay(int year);//计算一年的第一天是周几
////////////////////////////////////////// int year; int FirMD;//一个月的第一天是周几 /////////////////////////////////////////////////////////// void main(){ int year,days; cout<<"Please input the year:"; cin>>year; if(year<1) {cout<<"year can't smaller than 0.\n"; return; } FirMD=FirstDay(year); for(int i=1;i<13;i++) { cout<<"\n\n"<<setw(2)<<i<<"月 SUN MON TUE WED THU FRI SAT\n"; days=DaysOfMonth(i); PrintMonth(days); }
cout<<"\n"; } /////////////////////////////////////////////////// int DaysOfMonth(int m) { switch(m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11:return 30; case 2:if(IsPrime(year)) return 29; else return 28; } return 0; }
/////////////////////////////////////////// int IsPrime(int year){
if((year%4==0&&year%100!=0)||(year%400==0)) return 1; else return 0; }
///////////////////////////////// int FirstDay(int year) { long m; m=365*year; for(int i=1;i<year;i++)//补上所有闰年多的一天 if(IsPrime(i)) m+=1; return(m%7); }
//////////////////////////////////////////// void PrintMonth(int m) { cout<<" ";//跳过第几月所占的位置,汉字占两个字节 for(int i=0;i<FirMD;i++) {cout<<" ";}//给本月的第一天找到对应的输出位置 for( i=1;i<=m;i++) { cout<<setw(9)<<i; if((i+FirMD)%7==0)//判断是否到周六进行换行 cout<<"\n "; } FirMD=(FirMD+m)%7; file://计算下个月的第一天为周几 }
#include<iostream.h> void main() { int a,b,c,d,t,t1,t2,t3; cin>>a>>b>>c>>d; cout<<endl; if(a>d){a=t;a=d;d=t}; if(b>c){b=t1;b=c;c=t1; if(c>d){c=t2;c=d;d=t2}; if(a>b){a=t3;a=b;b=t3}; else if(a>b)cout<<b<<c<<a<<d<<endl; else cout<<a<<b<<c<<d<<endl; }
我想问这个程序有什么问题?谢谢了
你的程序写的好麻烦,^_^!你最后是要把四个数按太小输出,是吧?
if(a>b) 交换a、b; if(b>c) 交换b、c; if (c>d) 交换c、d; if (a>b) 交换a、b; if (b>c) 交换b、c; if (a>b) 交换a、b; 这样子将大的数挨个往后排(先将最大的放到最后,依次类推),就搞定了。用for语句和数组来写这个排序的,更好些吧!
[此贴子已经被作者于2004-12-20 15:58:22编辑过]