能花上4个多小时参与这次比赛我感到很值得。虽然成绩不是非常的满意,但是我也经历了学习了很多。
这次比赛的题目我认为不是特别的难(仅就非选做题而言),因为我时间把握的不是太到位,在一些问题上犹豫了太多的时间从而让我的表现表现不佳。困扰我的问题主要是一些计算机原理方面的问题。
说明我对程序代码细微知识的把握还是不行。
下面容我详细谈谈我参加比赛的的感触。
1.孔融让梨
思路:其实最小梨孩子吃掉,剩下的所有梨加起来就是父母得到梨的质量。根据此思路,可以减少计算机工作量和减少很多冗余的代码。
源代码
- #include <stdio.h>
- int main()
- {
- int n,i,a,min=65535,sum=0; //min预置较大值,sum预置为0,便于比较。
- scanf("%d",&n);
- for(i=1;i<=n;i++)
- {
- scanf("%d",&a);
- if(min>a)
- min=a; //找出最小的梨,即孩子吃得梨。
- sum+=a; //将所有梨加起来,最后减去min即可。
- }
- printf("%d\n",sum-min);
- return 0;
- }
PS:此题较为简单。思路容易想出。
2.打印方块
思路:打印方阵,代码骨架必然是两个循环嵌套。
源代码:
- #include <stdio.h>
- int main()
- {
- int n,j;
- int a;
- scanf("%d",&n);
- for(j=1;j<=n;j++) //首层末层没有#,故单独打印(在循环变量无其他用途时。三个单独循环可以共用一个循环变量,可以节省空间)
- printf("*");
- printf("\n");
- for(j=1;j<=2*n-5;j=j+2)
- {
- if(j<=n-2) //此分支j代表#个数
- {
- for(a=1;a<=(n-j)/2;a++)
- printf("*");
- for(a=1;a<=j;a++)
- printf("#");
- for(a=1;a<=(n-j)/2;a++)
- printf("*");
- printf("\n");
- }
- else //此分支中,由于j超出最大值。故#个数由公式转换得出。(j+4-n)/2
- {
- for(a=1;a<=(j+4-n)/2;a++)
- printf("*");
- for(a=1;a<=2*n-j-4;a++)
- printf("#");
- for(a=1;a<=(j+4-n)/2;a++)
- printf("*");
- printf("\n");
- }
- }
- for(j=1;j<=n;j++)
- printf("*");
- printf("\n");
- return 0;
- }
阅读(957) | 评论(0) | 转发(0) |