1、2012年上海市高等学校计算机等级考试试卷二级 C语言程序设计 ( A 卷)(本试卷考试时间 120 分钟)一、单选题 ( 本大题 10 道小题 ,每小题 1 分,共 10 分),从下面题目给出的A、B、C、D四个可供选择的答案中选择一个正确答案。1。在一个C 语言源程序中,main()函数的位置_。 答案:CA。必须在最前面B。必须在其它函数之前C.可以在任意位置D。必须在最后面2。 设有变量定义:int a =5, 6, 1, 3, 7, c, i; 当执行完语句:for(i=c=0; inext; printf(”c,qdata);C。q = p; printf(c”,q);D.q =
2、pnext; printf(c,q);二、程序填空题 ( 本大题 2 道小题,每空 2。5 分,共 20 分)。1. 程序完成以下功能:对x=1,2,。.。,10,求函数f(x)=x-10cos(x)5sin(x)的最大值,并将该值写到新建文件data.txt中。#include stdio.h#include include string.hint f(char s)int i=0, _1_;while(si!=0) if(_2_ = t) strcpy(s+i,s+i+1);c=c+1; elsei+;_3_;void main() int s;char str80;gets(str);s
3、=f(_4_);printf(删除后的串为:”) ;puts(str);printf(”删除个数:%d,s) ;1):【c=0】2):【si】【(s+i)】3):【return c】【return c;】【return (c)】【return (c);】4):【str】三、操作题(一)程序调试题(3小题,第1,2小题各3处错,第3小题4处错,每改正1处得3分,共30分)1. 程序调试题1调试要求:下列程序包含2个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*/字样的注释),使其运行能得到正确的结果.将结果(包括B_2_1.C文件和B_2_1.EXE文件)保存到目录C:KS中。
4、功能说明:程序从键盘输入8个学生计算机二级考试的成绩(成绩可能有小数),统计并输出成绩合格的学生的人数。程序对有小数的成绩应也能够正确处理。例如输入:71。5 46 64.5 82 94 53 79 48则输出:5带错误原程序(见C:KSB_2_1.C):#include stdio。hint main()int i, c;float score8;c=0;for (i=0; i8; i+) scanf(d”, &scorei); if (scorei60) c+; printf(dn”, c);getchar(); /本句无错;暂停程序,按任意键继续 /2。 程序调试题2调试要求:下列程序包
5、含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*/字样的注释),使其运行能得到正确的结果。将结果(包括B_2_2。C文件和B_2_2。EXE文件)保存到目录C:KS中。功能说明:程序从键盘输入一个字符串(长度不超过80),然后用选择法按照字符顺序从小到大进行排序,最后输出排序后的字符串。例如输入:ca39t6k则输出:369ackt带错误原程序(见C:KSB_2_2.C):#include stdio。hinclude string。hint main()char str81, p, q, minq;gets(str81); for (p=str; *p!=0; p+)
6、/ 用选择法按照字符顺序从小到大进行排序for (q=minq=p; q!=0; q+) / 用minq指向本趟排序字符值最小的字符的位置if (qminq) minq=q; if (minq!=p) / 字符值最小的字符不在希望的位置上,则交换 c=minq; minq=p; *p=c; puts(str);getchar(); /本句无错;暂停程序,按任意键继续 /3。 程序调试题3调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*/字样的注释),使其运行能得到正确的结果.将结果(包括B_2_3.C文件和B_2_3.EXE文件)保存到目录C:KS中.
7、功能说明:函数mysum的功能是计算n个整数中数值在7080之间(含70和80)的整数的和,程序从键盘输入8个整数,通过调用函数mysum计算这8个整数中数值在7080之间的整数的和,然后输出。例如输入:23 71 56 85 94 78 63 80则输出:sum=229带错误原程序(见C:KSB_2_3。C):#include stdio。hfloat mysum(int b, int n) float s;int i;for (i=0; in; i+)if (70=bi=80) s += bi; return s;int main()int a8, i;for (i=0; i8; i+)s
8、canf(”%d”, ai);printf(sum=.0fn”, mysum(int a, 8); getchar(); /*本句无错;暂停程序,按任意键继续 */(二)编程题(2小题,共35分)1编程题1编程要求:请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_1。C文件和B_4_1。EXE文件)保存到目录C:KS中。程序功能:从键盘上输入一个字符并存放到变量c,再输入一个整数存放到变量n(设2n20),输出以变量c中的字符组成的n行2n列方波波形图案,当c,n为,8时,图案及坐标计算如下图所示.程序运行两次,分别输入” 8”和 5”时的运行结果如下:2编程题2编程要求:
9、请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括B_4_2。C文件和B_4_2.EXE文件)保存到目录C:KS中.功能说明:电力公司根据如下费率表进行收费:第一个300度(0到300度)以每度0。6元计,下一个 300度(301到600度)以每度0。5元计,再下一个 400度(601到1000度)以每度0。4元计,超过1000度的电量以每度0。3元计。(1)设计计费函数float fee(int x); 函数根据客户用电量(x)计算电费并返回;(2)设计主函数,从键盘上输入3个客户的用电量,调用fee函数分别计算出相应电费,并按示例格式输出(电费保留一位小数)。运行示例:输入:123 2011 985输出:fee(123)=73.8fee(2011)=793。3fee(985)=484。0