最近得知三级C语言上机满分通过,特将之前在FF发的一篇文章发上来亮心情。 本文首发于霏凡论坛编程区,现发布于作者的个人主页亮心情,由素还真原创,转载请注明作者与出处。 一年前我报的是三级网络,笔试没问题,但由于从来没有学过程序设计语言,机试时面对题目可以说是一窍不通。一年后,我报的是数据库技术(网络比较熟了,再考就没有意义),笔试依然没问题,机试时,我顺利把程序调试出来了!现把我上机调试的经验写出来给大家参考一下: 三级C语言的绝大部分题目都出在南开一百题里,网上很多地方都有,百度一下就好。 记得要保存,不保存什么都没用。 主函数main()、读函数ReadDat()和写函数WriteDat()的内容不需要动,动了就基本出错。 实际上我们要做的就是编一个函数而已,这个函数没有入口也没有返回值,其改变的是全局变量。这种函数不符合一般函数要求的高内聚性和低耦合性,这样的设计估计是为了方便评分系统的评分。 程序起码要通过TC的编译,由于TC没有语法着色,所以如果编译时出错要细心查找。实际上官方并没有强制用TC,我们可以到考生文件夹里,找到源程序用其他的编译器编译(如果有的话)。 (以下针对TC) 有输出的题目,可以通过Run->User screen查看结果。 但绝大部分都的题目都是没有输出的,即使过了编译,运行的结果不一定对,如何检查呢? 这时可以在TC里手动打开IN.DAT和OUT.DAT。File->Open,将*.C改为*.DAT就好了,对比这两个文件,看输出的结果和题目的要求是否有差别。 大部分题目都涉及到排序,由于不需要考虑算法的效率,只需记得一种就可以了,我比较喜欢的是冒泡法(没有跳出的语句): int i,j; int temp; int mc[80]; for(i=80;i>1;i--) //注意i=80,其初值为数组的长度 { for(j=0;j<i-1;j++) //注意是j<i-1 { if(mc[j]<mc[j+1]) //小于是从大到小排序,大于是从小到大排序 temp=mc[j],mc[j]=mc[j+1],mc[j+1]=temp; //交换 } } 排序中要特别注意的是字符串的比较和复制要用下面两个函数: strcmp(str1,str2); //字符排序比较时要用此函数, //比的是ASCII码,英文字典中位置后的比较大,小写字母比大写字母大, //如果str1==str2,函数值为0, //如果str1>str2,函数值为正数, //如果str1<str2,函数值为负数, strcpy(str1,str2); //字符排序比较交换时要用此函数,是将后面字符数组里的值赋给前面字符数组 其他几个有可能用到的字符串处理函数: strcat(str1,str2); //将str2连接到str1后面 strlen(str); //求字符数组长度 strlwr(str); //将字符数组里的大写字母转换为小写 strupr(str); //将字符数组里的小写字母转换为大写
|