记录两个比较有趣但是又想不到怎么做的题
1)。输入三个数得到从小到大的排列
我的代码 | 他人的代码 |
intx,y,z,first,seond,third; printf("请输入三个整数:"); scanf("%d%d%d",&x,&y,&z); if(x<=y) { if(z>=y) { first=x;seond=y;third=z; } else//z<y { if(z>=x) { first=x;seond=z;third=y; } else//z<x { first=z;seond=x;third=y; } }
} else//x>y { if(z<=y) { first=z;seond=y;third=x; } else//z>y { if(z>=x) { first=y;seond=x;third=z; } else//z<x { first=y;seond=z;third=x; } } } printf("从小到大的顺序是:%d,%d,%d\n",first,seond,third);
| int num1,num2,num3,temp; printf("请输入三个数字:"); scanf("%d%d%d",&num1,&num2,&num3); if(num1>num2) { temp=num2; num2=num1; num1=temp; //保证num1<num2 }
if(num1>num3) { temp=num3; num3=num1; num1=temp; //保证num1<num3 }
if(num2>num3) { temp=num2; num2=num3; num3=temp; //保证num2<num3 } printf("%d<=%d<=%d\n",num1,num2,num3); |
我的代码不是很整齐,并且容易出错,但是他人的做法就比较整齐,容易理解,不易出错。 |
|
2)。求某年某月某日是这一年的第几天
我的代码 | 他人的代码 |
intyear,month,day,dayth,isRunNian=0; printf("请输入年月日:"); scanf("%d%d%d",&year,&month,&day); if(year/4==0) { if(year%100==0) { isRunNian=year%400==0; } else { isRunNian=1; } } switch (month) { case1://1月 dayth=day; break; case2://2月 dayth=31+day; break; case3://3月 dayth=31+28+day; break; case4://4月 dayth=31+28+31+day; break; case5://5月 dayth=31+28+31+30+day; break; case6://6月 dayth=31+28+31+30+31+day; break; case7://7月 dayth=31+28+31+30+31+30+day; break; case8://8月 dayth=31+28+31+30+31+30+31+day; break; case9://9月 dayth=31+28+31+30+31+30+31+30+day; break; case10://10月 dayth=31+28+31+30+31+30+31+30+31+day; break; case11://11月 dayth=31+28+31+30+31+30+31+30+31+30+day; break; case12://12月 dayth=31+28+31+30+31+30+31+30+31+30+31+day; break; default: printf("月份输入出错!\n"); break; } if(isRunNian&&month>2)//如果是闰年,并且月份大于2,则计算天数的会多一天 { dayth++; } printf("这一天是这一年的第%d天\n",dayth);
| int year=0,month=0,day=0,days=0; scanf("%d%d%d",&year,&month,&day); switch (month) { case12: days +=30; case11: days +=31; case10: days +=30; case9: days +=31; case8: days +=31; case7: days +=30; case6: days +=31; case5: days +=30; case4: days +=31; case3: days +=28; case2: days +=31; case1: days +=day; }
if (year%400==0||((year%4==0)&&(year%100!=0))) { if (month>2) { days +=1; } } printf("%d",days);
|
其实这段代码在刚开始谢了这么多的一样的数据的时候就应该嗅到了坏的味道,但是还是因为自己的一些坏习惯,导致写出了这样的代码,检讨检讨!
|
|
易错点:
int a=1;
switch(a)
{
case 1:{}
default:{}//default可以不写break 但是必须加上结束的语句,例如{}或者‘分号’
}