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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3. 程序调试题3 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改 该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确 的结果。将结果(包括D_2_3.C文件和D_2_3.EXE文件)保存到指定目 录中。 功能说明:函数myStrupr将字符串str中的小写字母转换为大写,并返回 转换的小写字母数。程序输入一个长度小于80的字符串,调用myStrupr 函数将小写字母转换为大写,如果输入串没有小写字母,则输出提示信 息。 如输入:Hello, Everybody. 则输出:HELLO, EVERYBODY. 又输入:I AM BIG.?!@#$% 则输出:no lowercase 带错误原程序(见C:\KS\D_2_3.C): #include<stdio.h> int myStrupr(char str[]) { int i,ct=0; for (i=0;Str[i]!='\0';i++) if (str[i]>='a' || str[i]<='z') { str[i]=str[i]-32; ct++; } return ct; } main() { char str[80]; gets(str); if (myStrupr(str)==0) puts(str); else printf("no lowercase\n"); getchar(); /*本句没错,暂停程序,按任意键继续 */ } (二)编程题 1.编程题1 编程要求:
图6-15 字符倒三角形
源程序: #include <stdio.h> void main() { int i,j; char k; for(i=1;i<=4;i++) { for(j=1; ____1____;j++) putchar(' '); /* 输出空格 */ k='a'; for(j=9-2*i; ____2____;j--) { printf("%c",____3____); k++; } putchar('\n'); } getchar(); /*暂停程序,按任意键继续*/ } 2. 输入一个长度小于40的字符串到数组s,并复制到数组t中,再将s 中的字符串逆序连接到t的后面并输出。例如:输入"ABCD",则字符串t 为"ABCDDCBA"。 源程序: #include <stdio.h> #include <string.h> void main() { char s[80],t[80]; int i; ____1____; printf("输入字符串:" ); scanf("%s",s); m=strlen(s); for(i=0; ____2____;i++) t[i]=s[i]; for(i=0;i<m;i++)
t[m+i]=s[____3____]; t[m+i]='\0'; printf("新的字符串:____4____\n",t); getchar(); /*暂停程序,按任意键继续*/ } 3. 程序说明:函数f用于求数组中的最大值或最小值;主程序调用f求 数组a中最大值和数组b中最小值,并输出最大值与最小值的差。 源程序: #include <stdio.h> float f(float x[],int n, ____1____) { float y; int i; y=x[0]; for(i=1;i<n;i++) if(flag*x[i]>flag*y) y = ____2____; return y; } void main() { float a[6]={3,5,9,4,2.5,1},b[5]={3,-2,6,9,1}; float max; ____3____; max= f(a,6,1); min= ____4____; printf("%.2f\n",____5____); getchar(); /*暂停程序,按任意键继续*/ } 三、操作题 (一)程序调试题 1. 程序调试题1 调试要求:下列程序包含2个错误,请按题中的功能要求,调试并修改 该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确 的结果。将结果(包括D_2_1.C文件和D_2_1.EXE文件)保存到指定目 录中。 功能说明:打印从1~1000 能同时被 3和 5 整除的前n个数。 如输入:3 则输出:15 30 45
请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括 D_4_1.C文件和D_4_1.EXE文件)保存到指定目录中。 功能说明:编写程序,实现以下成绩处理功能(输出格式参见示例): (1)输入学生数n和n个成绩(整数类型,数组名记为a,假设 1≤n≤50); (2)统计n个学生中及格(≥60分)人数及其平均成绩(保留一位小 数); (3)统计n个学生中不及格(<60分)人数及其平均成绩(保留一位小 数)。 运行示例: 输入:8 70 99 50 88 53 48 60 78 输出:Pass:5,79.0 Fail:3,50.3 2.编程题2 编程要求: 请按题中的功能要求,编写程序并能得到正确的结果。将结果(包括 D_4_2.C文件和D_4_2.EXE文件)保存到指定目录中。 功能说明:编写程序,通过以下步骤验证一个正整数是否符合特定的规 则: (1)输入一个4位正整数n,将n分拆成a与b,a为n的低2位,b为n的高2 位; (2)计算a的所有因子之积,记为s(当1≤i<a时,如果a是i的倍数, 则i是a的因子); (3)如果s的低2位等于b,则输出"Yes",否则输出"No"; (4)将a,b,s的值保存到文本文件"D42.TXT"中。 输出格式参见以下示例。 运行示例1: 输入:4412 输出:12: 1*2*3*4*6=144, Yes 运行后文件内容:12 44 144 说明:输入数为4412(对应n)分拆为12(对应a)和44(对应b),12 的因子为1、2、3、4和6,累乘值为144(对应s),s的低2位和b相等, 输出"Yes"。a,b,s的值保存在文件中。
带错误原程序(见C:\KS\D_2_1.C): #include <stdio.h> main( ) { int k; scanf("%d",&n); for(k=1;k<=1000;k++) if(k%3==0&&k%5==0) { print("%d ",k); n--; if(n==0) break; } getchar(); /*本句没错,暂停程序,按任意键继续 */ } 2. 程序调试题2 调试要求:下列程序包含3个错误,请按题中的功能要求,调试并修改 该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确 的结果。将结果(包括D_2_2.C文件和D_2_2.EXE文件)保存到指定目 录中。 功能说明:从键盘输入一个Leabharlann Baidu进制整数n,转化成八进制存入数组a,输 出八进制结果。 如输入:70 则输出:106 带错误原程序(见C:\KS\D_2_2.C): #include <stdio.h> main() { int a[10],n,i=0,j; scanf("%f",&n); do { a[i++]=n%8; n/=10; } while(n>0); for (j=i-1;j>=0;j--) printf("%d",a(j)); getchar(); /*本句没错,暂停程序,按任意键继续 */ }
2010年上海市高等学校计算机等级考试试卷 二级 C语言程序设计 ( C 卷)
(本试卷考试时间 120 分钟) 一、单选题 1. C程序是由_______组成的。 A. 子程序 B. 过程 C. 子函数 D. 主函数和子函数 2. 若有定义语句:char c='\n'; 则变量c _______。 A. 包含4个字符 B. 包含2个字符 C. 包含1个字符 D. 说明不合法,c的值不确定 3. 设有float x=1.25; int n=x; 则语句printf("%.2f,%d\n",x,n); 的输出是:_______ 。 A. 1.25,1.25 B. 1,1 C. 1,1.25 D. 1.25,1 4. 设x为int型变量,且初值为 'f',则执行printf("%c\n", 'A'+(x'a'+1));后的输出结果是 _______。 A. G B. H C. I D. J 5. 设有int n; 则判断“n为二位数(10至99)”的表达式是: _______ 。 A. 10<=n<=99 B. 10<=n || n<=99 C. 10<=n, n<=99 D. 10<=n && n<=99 6. 下列if语句中,错误的是 _______。 A. if(a==b) a-- else b++; B. if(a-b>0) printf("a>b\n"); C. if(x>0&&x<10) y=x*x-1.5;
Image
图6-14 链表结构
A. r->data=p->data; p->data=r; B. p->data=r; r->next=p->next; C. r->next= p->next; p->next=r; D. p->next=r; r->next=p->next; 二、程序填空题 1. 程序运行时输出如图6-15所示的字符倒三角形。 abcdefg abcde abc a
D. swap( p, q ); 13. 若有结构体定义及初始化语句: struct node { int num; float score; } stu[2]= {101,91.5,102,92.5},*p=stu; 则表达式p->score的结果是:_______ 。 A. 101 B. 91.5 C. 102 D. 92.5 14. 设有定义FILE *fp;将整数n以文本方式写到fp文件的语句: _______。 A. fp = fopen( "file.txt", "w" ); B. fprintf( fp, "%d", n ); C. fwrite( &n, sizeof(int), 1, fp ); D. fclose(fp); 15. 假定建立了如图6-14所示的链表结构,指针p指向如图6-14所示的 结点,则将r所指结点直接插入p所指结点后的语句是:_______。
D. if(x) y+=1; 7. 设:int i,n ; float sum; 则求调和级数s=1+1/2+1/3+...前n项 之和的正确循环语句是_______。 A. for(i=1;i<=n;i++) sum+=1/i ; B. for(i=1,sum=0.0;i<=n;i++) sum+=1/i; C. for(i=1,sum=0.0;i<=n;i++) sum+=(float)(1/i) ; D. for(i=1,sum=0.0;i<=n;i++) sum+=1.0/i; 8. C程序中,return语句的作用是_______。 A. 终止程序运行 B. 返回到上层循环 C. 返回到外层结构 D. 返回到上层函数 9. 以下数组定义语句中,错误的是_______。 A. int a[][3]; B. int a[][3]={1,2,3,4,5,6,7,8,9}; C. int a[2][3]={1,2,3,4,5,6}; D. int a[2][3]={1,2,3}; 10. 设有变量定义:char st[]="computer"; int i=0; char *s=st; 当执行完语句:while(*s++!= 'u') i++; 之后,则_______。 A. i的值为5,*s的值为't' B. i的值为5,*s的值为'u' C. i的值为4,*s的值为't' D. i的值为4,*s的值为'u' 11. 设char b[5], *p=b; 下列赋值语句中 _______是正确。 A. b="abcd"; B. *b="abcd"; C. p="abcd"; D. *p="abcd"; 12. 若有函数原型和变量定义语句: void swap( int *p, int *q ); int x, y; 则合法的函数调用语句是:_______ 。 A. swap( x, y ); B. swap( *x, *y ); C. swap( &x, &y );
相关文档
最新文档