第23~24课时 模拟考试及试卷分析
一、教学内容
“模拟考试及试卷分析”
二、教学目标
(1)检查前阶段学生对知识的掌握情况,让学生熟悉高考题型 三、重点难点
教学重点:选择题与写运行结果 教学难点:程序填空与程序分析题 四、教学过程
C语言模拟冲刺试卷(二)
姓名:_____________班级:_____________成绩:_____________
制卷人:颜明生
一、选择题(每小题5分,共20分)
1.设以下变量均为int类型,则值不等于7的表达式是( ) A)(x=y=6,x+y,x+1) B)(x=y=6,x+y,y+1) C)(x=6,x+1,y=6,x+y) D)(y=6,y+1,x=y,x+1)
2.有输入语句:scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);为使变量 a的值为1,b的值为3,c的值为2,则正确的数据输入方式是( ) A)132↙ B)1,3,2↙
C)a=1 b=3 c=2↙ D)a=1,b=3,c=2↙ 3.以下正确的函数定义是( )
A)double fun(int x, int y) B)double fun(int x,y) { z=x+y ; return z ; } { int z ; return z ;}
C)fun (x,y) D)double fun (int x, int y) { int x, y ; double z ; { double z ; z=x+y ; return z ; } return z ; }
4. 若要用fopen函数打开一个新的二进制文件,该文件既要能读也能写,则文件打开方式字符串应是( )
A.”ab+” B.”wb+” C.”rb+” D.”ab”
二、阅读程序,写出程序的运行结果(每小题5分,共25分) 1、#include
printf(“%d\\n”,++x); else
printf(“%d\\n”,--x); }
程序的运行结果是:
2、 #include
1
main()
{ int a[]={2,4,6,8,3,6,7},*ptr=&a[0],x=8,y,z; for(y=0;y<3;y++)
z=(*(ptr+y) 2 程序的运行结果是: 3、#include { int a=2,b=4,c=5; switch (a>0) { case 1:switch (b=b>>2) { case 1:printf(\ case 0:printf(\ default:printf(\ } case 0:switch (c==5) { case 0:printf(\ case 1:printf(\ dafault:printf(\ } default:printf(\ } printf(\ } 程序的运行结果是: 4、#include { int m[5],n[5],*px,*py,k; px=n;py=m; for (k=1;k<4;k++,px++,py++) { *px=k;*py=2*k; printf(\ } printf(\ px=&m[1]; py=&n[1]; for (k=1;k<3;k++) { *px+=k;*py*=k; printf(\ } } 程序的运行结果是: 5、#include { int i=0,s=0,arr[5]={1,3,5,7,9}; fun(arr+3); for(;i<5;i++) s+=arr[i]; printf(“%d”,s); } 3 程序的运行结果是: 三、程序填空。按照题目的要求,将正确内容填入相应位置,使程序完整(每空5分,共25分) 1、分别求出一批非零整数中的偶数、奇数的平均值,用零作为终止标记。 main() { int x,i=0,j=0; float s1=0,s2=0,av1,av2; scanf(\ while(① ) { if(x%2==0) {s1=s1+x;i++;} else { s2=s2+x; j++; } scanf(\ } if(i!=0) av1=s1/i; else av1=0; if(j!=0) (__② ___ ) ; else av2=0; printf(\ } 2.用等分法在有序的循环数组中,找到最小元素的位置。 int cyclic_min(int x[], int n) { int left = 0 ; int right = n - 1; int mid; while (③ ) { mid = (left + right)/2; if (x[mid] < x[right]) right = mid; else ④ ; } return left; } #include { int x[] = { 20, 23, 28, 35, 39, 40, 42, 8, 10, 15, 17, 19}; int n = sizeof(x)/sizeof(int); int loc, i; printf(\ printf(\ printf(\ for (i=0; i 4 printf(\ loc=cyclic_min(⑤ ); printf(\ } 四、阅读程序,修改程序中的错误,不得增行或删行,也不得更改程序结构。请指出错误所在的行号,并给出该行修改后的程序代码。(每空 5 分,共 25 分) 1.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,程序中有两处错误。 L1 #include L3 { int a[10],max,min,i,j,k1,k2 ; L4 for (i=0; i<10; i++) L5 scanf(“%d”,a[i]); L6 max=min=0; L7 for (i=0; i<10; i++) L8 { if (a[i] L11 a[k1]=max; L12 a[k2]=min; L13 for (i=0; i<10; i++) L14 printf(“%d”,a[i]); L15 } 2、下面函数fun的功能是:将长整型数中偶数位置上的数依次取出,构成一个新数返回,例如,当s中的数为:87653142时,则返回的数为:8642;程序中有三处错误。 L1 long fun(long s) L2 { long t , sl=0; L3 int d ; L4 t=0 ; L5 while (s>0 ) L6 { L7 d=s; L8 if(d%2=0) L9 {t=d* sl+ t; L10 sl*=10; L11 } L12 s\\=10; L13 } L14 return (t); L15 } 五、程序设计题(本大题共20分,每空5分) 下面的str_count函数的功能是计算串substring在母串string中出现的次数,并将次数返回。请将程序补充完整。 int str_count(char *string,char *substring) { int i,j,k; int count=0; 5 for (i=0; string[i]!= ① ; i++) for (j= ② ,k=0; substring[k]==string[j]; k++,j++) if (substring[③ ]=='\\0') { count++; break; } return ④ ; } 六、编程(15分) 1. 输入20个整数,按由小到大的顺序输出。(请分别用选择法排序和冒泡法排序编程) 6