《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(六)

2026-01-29
| 2份
| 26页
| 67人阅读
| 0人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 第2章 基本数据类型与简单程序设计,第4章 循环结构程序设计,第6章 函数
类型 题集-专项训练
知识点 数据类型和简单程序设计,分支结构,循环结构,函数,结构体和共用体
使用场景 中职复习
学年 2026-2027
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 279 KB
发布时间 2026-01-29
更新时间 2026-01-29
作者 xkw_063129603
品牌系列 学易金卷·阶段检测模拟卷
审核时间 2026-01-29
下载链接 https://m.zxxk.com/soft/56221088.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《编程语言基础—C语言》高教版第五版 高频考点冲刺卷(六)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,不能作为C语言合法常量的是() A. 0.1e+6 B. 'cd' C. "\a" D. '\011' 答案:B 解析: 'cd'是多个字符,在C语言中不能用单引号括起来表示一个字符常量,除非是转义字符或单个字符。字符常量只能是单个字符或转义字符。 2. 设有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是() A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000 答案:A 解析:计算过程:a%3=1,(int)(x+y)=7,1*7=7,7%2=1,1/4=0(整数除法),x+0=2.5。 3. 在下列选项中,不正确的赋值语句是() A.++t; B. n1=(n2=(n3=0)); C.k=i=j; D.a=b+c=1; 答案:D 解析:不能给表达式赋值 4. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是() A. (!a==1) && (!b==0) B. (a<b) && !c||1 C. a && b D. a||(b+b)&&(c-a) 答案:A 解析: !a=0,所以(!a==1)为假,整个表达式为0。 5. 有以下程序段:int k=0; while(k=1) k++; while循环执行的次数是() A. 无限次 B. 有语法错,不能执行 C. 一次也不执行 D. 执行1次 答案:A 解析: while(k=1)是将1赋值给k,循环条件永远为真,无限循环。 6. 以下程序的输出结果是() #include <stdio.h> main() { int i=0, a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d ", a); } A. 21 B. 32 C. 33 D. 11 答案:B 解析: 第一次进入while,i=0,进入for,if条件成立,break跳出for,i+=11变为11,a=11。第二次while循环,i=11,进入for,if条件不成立,i--变为10,继续循环,if条件成立break,跳出for,i+=11变为21,a=11+21=32。此时i=21,while条件不成立,结束。 7. 以下程序的输出结果是() #include <stdio.h> main() { int a=5, b=4, c=3, d=2; if(a>b>c) printf("%d ", d); else if((c-1>=d)==1) printf("%d ", d+1); else printf("%d ", d+2); } A. 2 B. 3 C. 4 D. 5 答案:B 解析: a>b>c即(5>4)>3,5>4为1,1>3为假,所以执行else if。c-1>=d即3-1>=2为真,值为1,等于1,所以输出d+1=3。 8. 以下程序的输出结果是() #include <stdio.h> main() { int i, n=0; for(i=2; i<5; i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf("n=%d ", n); } A. n=5 B. n=2 C. n=3 D. n=4 答案:D 解析: i=2时,do-while循环:i%3=2非0,continue,但continue在do-while中跳到循环条件,!i为0,循环结束。n++一次,n=1。i=3时,i%3=0,不执行continue,n++变为2,然后while(!i)为0,退出内层循环,n++变为3。i=4时,i%3=1非0,continue,条件!i为0退出,n++变为4。 9. 以下程序的输出结果是() #include <stdio.h> main() { int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} }; int b[3]={0}, i; for(i=0; i<3; i++) b[i]=a[i][2-i]; for(i=0; i<3; i++) printf("%d ", b[i]); } A. 1 5 9 B. 3 5 7 C. 3 6 9 D. 1 4 7 答案:B 解析: b[i]=a[i][2-i],即b[0]=a[0][2]=3,b[1]=a[1][1]=5,b[2]=a[2][0]=7。 10. 以下程序的输出结果是() #include <stdio.h> main() { int a[4][4]={ {1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10} }; int i, s=0; for(i=0; i<4; i++) s+=a[i][1]; printf("%d ", s); } A. 18 B. 16 C. 20 D. 22 答案:A 解析:求第二列的和:3+4+5+6=18。 11. 以下程序的输出结果是() #include <stdio.h> int f(int x) { int y; if(x==0||x==1) return 3; y=x*x-f(x-2); return y; } main() { int z; z=f(3); printf("%d ", z); } A. 0 B. 9 C. 6 D. 8 答案:C 解析: f(3)=3×3-f(1)=9-3=6。 12. 以下程序的输出结果是() #include <stdio.h> int fun(int a, int b) { static int m=0, i=2; i+=m+1; m=i+a+b; return m; } main() { int k=4, m=1, p; p=fun(k, m); printf("%d,", p); p=fun(k, m); printf("%d ", p); } A. 8,17 B. 8,16 C. 8,20 D. 8,8 答案:A 解析:第一次调用:i=2+0+1=3,m=3+4+1=8,返回8。第二次调用:静态变量m和i保持上一次的值,m=8,i=3,i=3+8+1=12,m=12+4+1=17,返回17。 13. 以下程序的输出结果是() #include <stdio.h> #define N 4 void fun(int a[][N], int b[]) { int i; for(i=0; i<N; i++) b[i]=a[i][i]; } main() { int x[N][N]={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} }, y[N], i; fun(x, y); for(i=0; i<N; i++) printf("%d,", y[i]); } A. 1,6,11,16, B. 1,2,3,4, C. 4,7,10,13, D. 4,8,12,16, 答案:A 解析:函数fun取二维数组对角线元素,即x[0][0],x[1][1],x[2][2],x[3][3]。 14. 以下程序的输出结果是() #include <stdio.h> struct st { int x; int *y; } *p; int dt[4]={10,20,30,40}; struct st aa[4]={ 50,&dt[0], 60,&dt[1], 70,&dt[2], 80,&dt[3] }; main() { p=aa; printf("%d,", ++p->x); printf("%d,", (++p)->x); printf("%d ", ++(*p->y)); } A. 51,60,21 B. 50,60,21 C. 51,60,20 D. 50,60,20 答案:A 解析: ++p->x:->优先级高于++,所以相当于++(p->x),即aa[0].x自增为51。然后(++p)->x:p先自增指向aa[1],再取x=60。最后++(*p->y):p指向aa[1],p->y指向dt[1],(*p->y)即20,自增后为21。 15. 设有定义:int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是() A. scanf("%d", pa); B. scanf("%d", a); C. scanf("%d", &pa); D. scanf("%d", *pa); 答案:A 解析: pa是指针,已指向a,所以scanf中应使用pa,即变量地址。 16. 若有以下定义和语句:int s[4][5], (*ps)[5]; ps=s; 则对s数组元素的正确引用是() A. ps+1 B. *(ps+3) C. ps[0][2] D. *(ps+1)+3 答案:C 解析: ps是指向长度为5的数组的指针,ps=s后,ps[0][2]等价于s[0][2]。 17. 以下程序的输出结果是() #include <stdio.h〉 void main( ) { char str[]=”1a2b3c”; int i; for(i=0;str[i]!='\0';i++) if(str[i]>='0’&&str[i]<='9’) printf(”%c”,str[i]); printf(” ”); } A. 123456789 B.1a2b3c C. abc D. 123 答案:D 解析:输出字符串”1a2b3c”中的数字字符。 18. 以下程序的输出结果是() #include <stdio.h> main() { char *s="12134211"; int v[4]={0,0,0,0}, k, i; for(k=0; s[k]; k++) { switch(s[k]) { case '1': i=0; break; case '2': i=1; break; case '3': i=2; break; case '4': i=3; break; } v[i]++; } for(k=0; k<4; k++) printf("%d ", v[k]); } A. 4 2 1 1 B. 0 0 0 8 C. 4 6 7 8 D. 8 8 8 8 答案:A 解析:统计字符串中1、2、3、4的个数,分别为4、2、1、1。 19. 以下程序的输出结果是() #include <stdio.h> #include <string.h> main() { char b1[8]="abcdefg", b2[8], *pb=b1+3; while(--pb>=b1) strcpy(b2, pb); printf("%d ", strlen(b2)); } A. 8 B. 3 C. 1 D. 7 答案:D 解析: pb初始指向b1[3]即'd',然后循环:--pb指向'c',strcpy(b2, "cdefg"),b2变为"cdefg";然后--pb指向'b',strcpy(b2, "bcdefg");然后--pb指向'a',strcpy(b2, "abcdefg");然后--pb指向b1之前,循环结束。最后输出strlen(b2)为7。 20. 以下程序的输出结果是() #include <stdio.h> void swap(char *x, char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1="abc", *s2="123"; swap(s1, s2); printf("%s,%s ", s1, s2); } A. 123,abc B. abc,123 C. 1bc,a23 D. 321,cba 答案:C 解析:swap函数交换的是字符,但s1和s2指向的是字符串常量,不能修改,程序运行会出错。但从逻辑上,交换的是两个字符串的第一个字符,所以理论上输出是"1bc,a23"。 21.设有以下函数:void fun(int n, char *s) { ... }则下面对函数指针的定义和赋值正确的是( ) A. void (*pf)(); pf=fun; B. void *pf(); pf=fun; C. void *pf(); *pf=fun; D. void (*pf)(int, char); pf=&fun; 答案:D 解析: 函数指针定义:void (*pf)(int, char); 赋值:pf=fun; 或 pf=&fun; 都可以。 22. 以下程序的输出结果是() #include <stdio.h> main() { int a[5]={2,4,6,8,10}, *p, k; p=a; k=&p; printf("%d ", *(p++)); printf("%d ", k); } A. 4 4 B. 2 2 C. 2 4 D. 4 6 答案:C 解析:*(p++)先取*p即2,然后p指向4。k是取p指向的值,此时p指向4,所以输出4。 23. 以下程序的输出结果是() #include <stdio.h> main() { char *a[]={"abcd","efgh","ijkl","mnop"}; char p; p=a; printf("%s ", *(p+1)); } A. a B. abcd C. e D. efgh 答案:D 解析: p指向数组a的首元素,*(p+1)即a[1],为"efgh"。 24. 以下程序的输出结果是() #include <stdio.h> void fun(int *a, int n) { int i, t; for(i=0; i<n/2; i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } } main() { int k[10]={1,2,3,4,5,6,7,8,9,10}, i; fun(k,5); for(i=0; i<10; i++) printf("%d,", k[i]); } A. 5,4,3,2,1,6,7,8,9,10, B. 10,9,8,7,6,5,4,3,2,1, C. 1,2,3,4,5,6,7,8,9,10, D. 1,2,3,4,5,10,9,8,7,6, 答案:A 解析: fun(k,5)将数组前5个元素逆置,变为5,4,3,2,1,6,7,8,9,10。 25. 以下程序的输出结果是() #include <stdio.h> main() { int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} }; int *p, i; p=&a[0][0]; for(i=0; i<9; i++) p[i]=i+1; printf("%d ", a[1][2]); } A. 3 B. 6 C. 9 D. 2 答案:B 解析: p指向数组首地址,通过p[i]将数组元素依次赋值为1到9,所以a[1][2]对应p[5]=6。 二、简答题(共3小题,每题5分,共15分) 1.阅读程序,写出运行结果。 #include <stdio.h> main() { int a=3, b=4, c=5, t=99; if(b<a && a<c) t=a; a=c; c=t; if(a<c && b<c)t=b; b=a; a=t; printf("%d %d %d ", a, b, c); } 答案:4 5 99 解析: 第一个if条件(b<a && a<c)为假,所以不执行t=a;然后执行a=c,a变为5;执行c=t,c变为99。第二个if条件(a<c && b<c)为真(5<99 && 4<99),执行t=b,t变为4;然后执行b=a,b变为5;执行a=t,a变为4。输出a、b、c:4 5 99。 2. 阅读程序,写出运行结果 #include <stdio.h> int f(int m){ static int n=0; n+=m; return n;} main(){ int n=0; printf("%d,", f(++n)); printf("%d ", f(n++)); } 答案:1,2 解析: 第一次调用f(++n):++n使n变为1,传入f,静态局部变量n初始为0,n+=m后变为1,返回1。 第二次调用f(n++):n++传递的是1,然后n变为2,静态局部变量n保持为1,n+=m后变为1+1=2,返回2。 3.求一维数组a中的最大元素及其下标。 例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The max is: 34,pos is:7 。 #include <conio.h> #include <stdio.h> main() { int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos; max = a[0]; pos = 0; for ( i=1; i〈10; i++) if (max > a[i]) { max = a[i]; i = pos; } printf("The max is: %d ,pos is: %d ”, max , pos); } 答案: (1)max > a[i]应该为max <a[i] (2)i = pos;应该改为pos = i; 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。请完成填空。 #include <stdio.h> main(){ int i, j; for(i=0; ① ; i++) { j=i*10+6; if( ② ) continue; printf("%d ", j); } } 答案:①:i<10,②:j%3!=0 2. 下面程序的功能是:将字符串s中的数字字符取出,并转换成一个整数。请完成填空。 #include <stdio.h> main(){ char s[80], *p=s; int num=0; gets(s); while( ③ ) { if(*p>='0'&&*p<='9') num = ④ + *p - '0'; p++; } printf("%d ", num); } 答案:③:*p!='\0',④:num*10 3. 下面程序的功能是:输入一个字符串,将其中所有的大写字母转换为小写字母,其他字符不变。请完成填空。 #include <stdio.h>#include <ctype.h> main(){ char str[80]; int i; gets(str); for(i=0; str[i]!='\0'; i++) if( ⑤ ) // str[i] = ⑥ ; puts(str); } 答案:⑤:str[i]>='A'&&str[i]<='Z',⑥:str[i]+32 四、综合应用题(共2小题,每题10分,共20分) 1. 编写程序,输入一个正整数n(n<=20),然后输入n个整数,将这n个整数逆序存放并输出。 答案: 参考程序: #include <stdio.h> main(){ int n, i, t, a[20], *p, *q; printf("请输入整数个数n:"); scanf("%d", &n); printf("请输入%d个整数:", n); for(i=0; i<n; i++) scanf("%d", a+i); // 使用指针表示法 p = a; // p指向数组首元素 q = a + n - 1; // q指向数组最后一个元素 while(p < q) { t = *p; *p = *q; *q = t; p++; q--; } printf("逆序存放后:"); for(i=0; i<n; i++) printf("%d ", *(a+i)); } 2. 用递归调用函数求1+2+3+...+n。要求在主函数中输入n的值,并输出结果。 答案: 参考程序: #include<stdio.h> main() { int sum(int k); int n,s; scanf("%d" ,&n); s=sum(n); printf("s=%d ",s); } sum(int k) { int s; if(k==1)s=1; else s=k+sum(k-1); return s; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《编程语言基础—C语言》高教版第五版 高频考点冲刺卷(六)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,不能作为C语言合法常量的是() A. 0.1e+6 B. 'cd' C. "\a" D. '\011' 2. 设有定义:int a=7; float x=2.5, y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是() A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000 3. 在下列选项中,不正确的赋值语句是() A.++t; B. n1=(n2=(n3=0)); C.k=i=j; D.a=b+c=1; 4. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是() A. (!a==1) && (!b==0) B. (a<b) && !c||1 C. a && b D. a||(b+b)&&(c-a) 5. 有以下程序段:int k=0; while(k=1) k++; while循环执行的次数是() A. 无限次 B. 有语法错,不能执行 C. 一次也不执行 D. 执行1次 6. 以下程序的输出结果是() #include <stdio.h> main() { int i=0, a=0; while(i<20) { for(;;) { if((i%10)==0) break; else i--; } i+=11; a+=i; } printf("%d ", a); } A. 21 B. 32 C. 33 D. 11 7. 以下程序的输出结果是() #include <stdio.h> main() { int a=5, b=4, c=3, d=2; if(a>b>c) printf("%d ", d); else if((c-1>=d)==1) printf("%d ", d+1); else printf("%d ", d+2); } A. 2 B. 3 C. 4 D. 5 8. 以下程序的输出结果是() #include <stdio.h> main() { int i, n=0; for(i=2; i<5; i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf("n=%d ", n); } A. n=5 B. n=2 C. n=3 D. n=4 9. 以下程序的输出结果是() #include <stdio.h> main() { int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} }; int b[3]={0}, i; for(i=0; i<3; i++) b[i]=a[i][2-i]; for(i=0; i<3; i++) printf("%d ", b[i]); } A. 1 5 9 B. 3 5 7 C. 3 6 9 D. 1 4 7 10. 以下程序的输出结果是() #include <stdio.h> main() { int a[4][4]={ {1,3,5,7},{2,4,6,8},{3,5,7,9},{4,6,8,10} }; int i, s=0; for(i=0; i<4; i++) s+=a[i][1]; printf("%d ", s); } A. 18 B. 16 C. 20 D. 22 11. 以下程序的输出结果是() #include <stdio.h> int f(int x) { int y; if(x==0||x==1) return 3; y=x*x-f(x-2); return y; } main() { int z; z=f(3); printf("%d ", z); } A. 0 B. 9 C. 6 D. 8 12. 以下程序的输出结果是() #include <stdio.h> int fun(int a, int b) { static int m=0, i=2; i+=m+1; m=i+a+b; return m; } main() { int k=4, m=1, p; p=fun(k, m); printf("%d,", p); p=fun(k, m); printf("%d ", p); } A. 8,17 B. 8,16 C. 8,20 D. 8,8 13. 以下程序的输出结果是() #include <stdio.h> #define N 4 void fun(int a[][N], int b[]) { int i; for(i=0; i<N; i++) b[i]=a[i][i]; } main() { int x[N][N]={ {1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16} }, y[N], i; fun(x, y); for(i=0; i<N; i++) printf("%d,", y[i]); } A. 1,6,11,16, B. 1,2,3,4, C. 4,7,10,13, D. 4,8,12,16, 14. 以下程序的输出结果是() #include <stdio.h> struct st { int x; int *y; } *p; int dt[4]={10,20,30,40}; struct st aa[4]={ 50,&dt[0], 60,&dt[1], 70,&dt[2], 80,&dt[3] }; main() { p=aa; printf("%d,", ++p->x); printf("%d,", (++p)->x); printf("%d ", ++(*p->y)); } A. 51,60,21 B. 50,60,21 C. 51,60,20 D. 50,60,20 15. 设有定义:int a, *pa=&a; 以下scanf语句中能正确为变量a读入数据的是() A. scanf("%d", pa); B. scanf("%d", a); C. scanf("%d", &pa); D. scanf("%d", *pa); 16. 若有以下定义和语句:int s[4][5], (*ps)[5]; ps=s; 则对s数组元素的正确引用是() A. ps+1 B. *(ps+3) C. ps[0][2] D. *(ps+1)+3 17. 以下程序的输出结果是() #include <stdio.h〉 void main( ) { char str[]=”1a2b3c”; int i; for(i=0;str[i]!='\0';i++) if(str[i]>='0’&&str[i]<='9’) printf(”%c”,str[i]); printf(” ”); } A. 123456789 B.1a2b3c C. abc D. 123 18. 以下程序的输出结果是() #include <stdio.h> main() { char *s="12134211"; int v[4]={0,0,0,0}, k, i; for(k=0; s[k]; k++) { switch(s[k]) { case '1': i=0; break; case '2': i=1; break; case '3': i=2; break; case '4': i=3; break; } v[i]++; } for(k=0; k<4; k++) printf("%d ", v[k]); } A. 4 2 1 1 B. 0 0 0 8 C. 4 6 7 8 D. 8 8 8 8 19. 以下程序的输出结果是() #include <stdio.h> #include <string.h> main() { char b1[8]="abcdefg", b2[8], *pb=b1+3; while(--pb>=b1) strcpy(b2, pb); printf("%d ", strlen(b2)); } A. 8 B. 3 C. 1 D. 7 20. 以下程序的输出结果是() #include <stdio.h> void swap(char *x, char *y) { char t; t=*x; *x=*y; *y=t; } main() { char *s1="abc", *s2="123"; swap(s1, s2); printf("%s,%s ", s1, s2); } A. 123,abc B. abc,123 C. 1bc,a23 D. 321,cba 21.设有以下函数:void fun(int n, char *s) { ... }则下面对函数指针的定义和赋值正确的是( ) A. void (*pf)(); pf=fun; B. void *pf(); pf=fun; C. void *pf(); *pf=fun; D. void (*pf)(int, char); pf=&fun; 22. 以下程序的输出结果是() #include <stdio.h> main() { int a[5]={2,4,6,8,10}, *p, k; p=a; k=&p; printf("%d ", *(p++)); printf("%d ", k); } A. 4 4 B. 2 2 C. 2 4 D. 4 6 23. 以下程序的输出结果是() #include <stdio.h> main() { char *a[]={"abcd","efgh","ijkl","mnop"}; char p; p=a; printf("%s ", *(p+1)); } A. a B. abcd C. e D. efgh 24. 以下程序的输出结果是() #include <stdio.h> void fun(int *a, int n) { int i, t; for(i=0; i<n/2; i++) { t=a[i]; a[i]=a[n-1-i]; a[n-1-i]=t; } } main() { int k[10]={1,2,3,4,5,6,7,8,9,10}, i; fun(k,5); for(i=0; i<10; i++) printf("%d,", k[i]); } A. 5,4,3,2,1,6,7,8,9,10, B. 10,9,8,7,6,5,4,3,2,1, C. 1,2,3,4,5,6,7,8,9,10, D. 1,2,3,4,5,10,9,8,7,6, 25. 以下程序的输出结果是() #include <stdio.h> main() { int a[3][3]={ {1,2,3},{4,5,6},{7,8,9} }; int *p, i; p=&a[0][0]; for(i=0; i<9; i++) p[i]=i+1; printf("%d ", a[1][2]); } A. 3 B. 6 C. 9 D. 2 二、简答题(共3小题,每题5分,共15分) 1.阅读程序,写出运行结果。 #include <stdio.h> main() { int a=3, b=4, c=5, t=99; if(b<a && a<c) t=a; a=c; c=t; if(a<c && b<c)t=b; b=a; a=t; printf("%d %d %d ", a, b, c); } 2. 阅读程序,写出运行结果 #include <stdio.h> int f(int m){ static int n=0; n+=m; return n;} main(){ int n=0; printf("%d,", f(++n)); printf("%d ", f(n++)); } 3.求一维数组a中的最大元素及其下标。 例如,当一维数组a中的元素为:1,4,2,7,3,12,5,34,5,9, 程序的输出应为:The max is: 34,pos is:7 。 #include <conio.h> #include <stdio.h> main() { int a[10]={1,4,2,7,3,12,5,34,5,9},i,max,pos; max = a[0]; pos = 0; for ( i=1; i〈10; i++) if (max > a[i]) { max = a[i]; i = pos; } printf("The max is: %d ,pos is: %d ”, max , pos); } 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数。请完成填空。 #include <stdio.h> main(){ int i, j; for(i=0; ① ; i++) { j=i*10+6; if( ② ) continue; printf("%d ", j); } } 2. 下面程序的功能是:将字符串s中的数字字符取出,并转换成一个整数。请完成填空。 #include <stdio.h> main(){ char s[80], *p=s; int num=0; gets(s); while( ③ ) { if(*p>='0'&&*p<='9') num = ④ + *p - '0'; p++; } printf("%d ", num); } 3. 下面程序的功能是:输入一个字符串,将其中所有的大写字母转换为小写字母,其他字符不变。请完成填空。 #include <stdio.h>#include <ctype.h> main(){ char str[80]; int i; gets(str); for(i=0; str[i]!='\0'; i++) if( ⑤ ) // str[i] = ⑥ ; puts(str); } 四、综合应用题(共2小题,每题10分,共20分) 1. 编写程序,输入一个正整数n(n<=20),然后输入n个整数,将这n个整数逆序存放并输出。 2. 用递归调用函数求1+2+3+...+n。要求在主函数中输入n的值,并输出结果。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(六)
1
《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(六)
2
《C语言程序设计》(高教版)山东省(春季高考)软件与应用技术 高频考点冲刺卷(六)
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。