1、【程序 4】 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以 3 月 5 日为例,应该先把前两个月的加起来,然后再加上 5 天即本年的第几天,特殊 情况,闰年且输入月份大于 3 时需考虑多加一天。 2.程序源代码: main() int day,month,year,sum,leap; printf(“nplease input year,month,dayn“); scanf(“%d,%d,%d“, switch(month)/*先计算某月以前月份的总天数*/ case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59
2、;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf(“data error“);break; sum=sum+day; /*再加上某天的天数*/ if(year%400=0|(year%4=0 else l
3、eap=0; if(leap=1 printf(“It is the %dth day.“,sum); = 【程序 5】 题目:输入三个整数 x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 xy 则将 x 与 y 的值进行交换, 然后再用 x 与 z 进行比较,如果 xz 则将 x 与 z 的值进行交换,这样能使 x 最小。 2.程序源代码: main() int x,y,z,t; scanf(“%d%d%d“, if (xy) t=x;x=y;y=t; /*交换 x,y 的值 */ if(xz) t=z;z=x;x=t
4、;/*交换 x,z 的值 */ if(yz) t=y;y=z;z=t;/*交换 z,y 的值 */ printf(“small to big: %d %d %dn“,x,y,z); = 【程序 8】 题目:输出 9*9 口诀。 1.程序分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列。 2.程序源代码: #include “stdio.h“ main() int i,j,result; printf(“n“); for (i=1;i=90 分的同学用 A 表示,60-89 分之间的用 B 表示,60 分以下的用 C 表示。 1.程序分析:(ab)?a:b 这是条件运算符的基本例子
5、。 2.程序源代码: main() int score; char grade; printf(“please input a scoren“); scanf(“%d“, grade=score=90?A:(score=60?B:C); printf(“%d belongs to %c“,score,grade); = 【程序 17】 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 1.程序分析:利用 while 语句,条件为输入的字符不为n. 2.程序源代码: #include “stdio.h“ main() char c; int letters=0,space
6、=0,digit=0,others=0; printf(“please input some charactersn“); while(c=getchar()!=n) if(c=atem=ai;ai=amin;amin=tem;/*output data*/printf(“After sorted n“);for(i=0;iprintf(“%5d“,ai);=【程序 38】题目:求一个 3*3 矩阵对角线元素之和 1.程序分析:利用双重 for 循环控制输入二维数组,再将 aii累加后输出。2.程序源代码:main()float a33,sum=0;int i,j;printf(“please input rectangle element:n“);for(i=0;iend)a10=number;elsefor(i=0;inumber)temp1=ai;ai=number;for(j=i+1;j#include main() float a45,sum1,sum2;int i,j;for(i=0;i3;i+)for(j=0;j4;j+)scanf(“%f“,for(i=0;i3;i+) sum1=0;for(j=0;j4;j+)sum1+=aij;ai4=sum1/4;for(j=0;j5;j+) sum2=0;for(i=0;i3;i+)sum2+=aij;