当前位置:文档之家› 上海市高等学校计算机等级考试试卷二级C语言程序设计A卷

上海市高等学校计算机等级考试试卷二级C语言程序设计A卷

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; i<5; i++){ if(a[i]%3 = =0)continue;c++;}之后,c的值是_____。

答案:CA.1B.2C.3D.43.以下程序运行结果为_______#define PII 3#define S(x) PII*x*xmain(){ int a=1, b=2, c;c = a+b;printf("%d\n",S(c));}答案:BA.9B.27C.7D.104.若有变量定义:int a[4], *p=a; 则以下对数组a的元素不正确的引用是_____。

答案:DA.*aB.*(p+1)C.p[1]D.a[4]5.设有变量定义:int d[50], *p=&d[0]; 下面表达式中________的计算结果为int类型的数值(非地址)。

答案:DA.p+=1B.p++C.&d[2]D.p-d6.为了判断两个字符串s1和s2是否相等,应当使用_____。

答案:DA.if (s1==s2 )B.if (s1 = s2 )C.if ( strcpy (s1,s2 ) )D.if ( strcmp( s1,s2) == 0 )7.设有变量定义int n; char str[80];与函数调用:n=hex2dec(str);则函数hex2dec正确的函数说明应该是_______。

答案:AA.int hex2dec(char str[]);B.void hex2dec(char str[]);C.int hex2dec(char str);D.void hex2dec(char str);8.设有以下结构体定义及初始化,表达式(stu[0].score+stu[1].score)/2的结果是_______。

struct student{int num;float score;} stu[2]={90,91.5,93,92.5};答案:CA.91.0B.91.5C.92.0D.92.59.在C语言中,将文件内部的位置指针重新指向一个流(数据流/文件)的开头的库函数是_______。

答案:BA.fgetcB.rewindC.fscanfD.fread10. 若建立了以下链表结构,head,p,q是指向结点的指针,以下_____组语句的功能是输出如下图所示的中间结点(数据为E的结点)的数据项。

答案:BA.q = p; printf("%c",q->data);B.q = p->next; printf("%c",q->data);C.q = p; printf("%c",q);D.q = p->next; 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 <math.h>void main(){ FILE *p;float f(float),max,x;if((p=fopen("___1____ ","w"))==NULL){ printf("cannot open FILE\n"); exit(0); }max=f(1);for(x=2;x<=10;x++)if(___2____ <f(x))max=f(x);fprintf(p,"%.3f",max);fclose(___3____);}float f(float x){ ___4____;y=x-10*cos(x)-5*sin(x);return y;}1):【data.txt】2):【max】3):【p】4):【double y】【float y】2. 在输入的字符串中删除小写字母t,并统计被删除字母的个数。

如输入:gt=5xt-6ty 则输出:删除后的串为:g=5x-6y 删除个数:3 #include<stdio.h>#include <string.h>int f(char s[]){int i=0, ___1____;while(s[i]!='\0')if(___2___ == 't'){strcpy(s+i,s+i+1);c=c+1;}elsei++;___3____;}void main(){ int s;char str[80];gets(str);s=f(___4____);printf("删除后的串为:") ;puts(str);printf("删除个数:%d",s) ;}1):【c=0】2):【s[i]】【*(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\中。

功能说明:程序从键盘输入8个学生计算机二级考试的成绩(成绩可能有小数),统计并输出成绩合格的学生的人数。

程序对有小数的成绩应也能够正确处理。

例如输入:71.5 46 64.5 82 94 53 79 48 则输出:5带错误原程序(见C:\KS\B_2_1.C):#include <stdio.h>int main(){int i, c;float score[8];c==0;for (i=0; i<8; i++){ scanf("%d", &score[i]);if (score[i]≥60) c++;}printf("%d\n", c);getchar(); /*本句无错;暂停程序,按任意键继续*/}2. 程序调试题2调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。

将结果(包括B_2_2.C文件和B_2_2.EXE文件)保存到目录C:\KS\中。

功能说明:程序从键盘输入一个字符串(长度不超过80),然后用选择法按照字符顺序从小到大进行排序,最后输出排序后的字符串。

例如输入:ca39t6k 则输出:369ackt带错误原程序(见C:\KS\B_2_2.C):#include <stdio.h>#include <string.h>int main(){char str[81], *p, *q, *minq;gets(str[81]);for (p=str; *p!='\0'; p++) // 用选择法按照字符顺序从小到大进行排序{for (q=minq=p; *q!='\0'; q++) // 用minq指向本趟排序字符值最小的字符的位置if (*q>*minq) 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\中。

功能说明:函数mysum的功能是计算n个整数中数值在70~80之间(含70和80)的整数的和,程序从键盘输入8个整数,通过调用函数mysum计算这8个整数中数值在70~80之间的整数的和,然后输出。

例如输入:23 71 56 85 94 78 63 80 则输出:sum=229带错误原程序(见C:\KS\B_2_3.C):#include <stdio.h>float mysum(int b[], int n){ float s;int i;for (i==0; i<n; i++)if (70<=b[i]<=80) s += b[i];return s;}int main(){int a[8], i;for (i=0; i<8; i++)scanf("%d", &a[i]);printf("sum=%.0f\n", mysum(int a[], 8));getchar(); /*本句无错;暂停程序,按任意键继续 */}(二)编程题(2小题,共35分)1.编程题1编程要求:请按题中的功能要求,编写程序并能得到正确的结果。

将结果(包括B_4_1.C 文件和B_4_1.EXE 文件)保存到目录C:\KS\中。

程序功能:从键盘上输入一个字符并存放到变量c ,再输入一个整数存放到变量n (设2≤n ≤20),输出以变量c 中的字符组成的n 行2n 列方波波形图案,当c,n 为#,8时,图案及坐标计算如下图所示。

程序运行两次,分别输入"# 8"和"@ 5"时的运行结果如下:2.编程题2######### # # # # # # # # # # # ######### #↑ ↑ ↑第1列 第n 列 第2*n 列←←第1行第n行编程要求:请按题中的功能要求,编写程序并能得到正确的结果。

相关主题