【例3.11】编写程序实现对输入的3个整数进行升序排序。
程序内容如下:
1 #include<stdio.h>
2 intmain()
3 {
4 intx,y,z,t;
5 printf("Pleaseinputx,y,z:\n");
6 scanf("%d,%d,%d",&x,&y,&z);
7 if(x>y)
8 {
9 t=x;
10 x=y;
11 y=t;
12 }
13 if(y>z)
14 {
15 t=y;
16 y=z;
17 z=t;
18 }
19 if(x>y)
20 {
21 t=x;
22 x=y;
23 y=t;
24 }
25 printf("%d,%d,%d",x,y,z);
26 return 0;
27 }
程序结果如图3.17所示:
图3.17 例3.11程序结果图
【例题中关键问题说明】
(1)本程序先将x与y比较,将两者较大者存到y中,然后将y与z比较,将两者较大者,同时也是x,y,z三者较大者,存到z中。再将x与y比较,将两者中的较大者存到y,较小者存到x,最终实现了三者的升序排序。
(2)在第9行到第11行两个变量进行交换的时候,借助了中间变量t,这里需要注意的是变量之间的赋值顺序,应该是先将其中的一个变量如x赋值给t,然后将另一个变量如y赋值给x,最后将t赋值给变量y,顺序不可以颠倒。
【例3.12】输入年份、月份,求当月的天数。
程序内容如下:
1 #include<stdio.h>(www.xing528.com)
2 int main()
3 {
4 int year,month,day;
5 printf("Please input year,month:\n");
6 scanf("%d,%d",&year,&month);
7 switch(month)
8 {
9 case 1:
10 case 3:
11 case 5:
12 case 7:
13 case 8:
14 case 10:
15 case 12:day=31;printf("There are%d day in this month",day);break;
16 case 4:
17 case 6:
18 case 9:
19 case 11:day=30;printf("There are%d day in this month",day);break;
20 case 2:if(year%400==0||(year%4==0&&year%100!=0))
21 day=29;
22 else day=28;
23 printf("There are%d day in this month",day);
24 break;
25 default:printf("error!");break;
26 }
27 printf("\n");
28 return 0;
29 }
程序结果如图3.18所示:
图3.18 例3.12程序结果图
【例题中关键问题说明】
(1)本程序在scanf()函数中的格式控制字符串为"%d,%d",所以在用户输入数据时,需要在输入的两个数据之间用逗号进行分隔。
(2)每年的1月、3月、5月、7月、8月、10月、12月有31天,4月、6月、9月11月有30天,闰年的2月为29天,平年的2月为28天。闰年的判断方法为:能被4整除,但不能被100整除的年份是闰年;能被400整除的年份是闰年,不符合这两个条件的年份不是闰年。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。