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

2026-01-29
| 2份
| 33页
| 79人阅读
| 0人下载

资源信息

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

内容正文:

编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《编程语言基础—C语言》高教版第五版 高频考点冲刺卷(七)原卷版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,能正确表示C语言中double类型常量的表达式是( ) A. 0.5E2.5 B. 5e0.5 C. .2E-3 D. E15 2. 设有定义:int a=10, b=3; 则表达式(a=a%b, a/b)的值是( ) A. 1 B. 3 C. 0 D. 3.333 3. 若有定义:int k=3; float x=2.5, y=4.8; 则表达式x+k%3*(int)(x+y)%2/4的值是( ) A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000 4. 以下程序的输出结果是( ) #include <stdio.h> main() { int a=2, b=1, c=2; if(a<b) if(b=0) c=0; else c++; printf("%d ",c); } A.0 B. 1 C. 2 D. 3 5. 以下程序的输出结果是( ) #include <stdio.h> int main() { int i, j, x=0; for(i=0; i<2; i++) { x++; for(j=0; j<=3; j++) { if(j%2) break; x++; } x++; } printf("x=%d ", x); } A. x=4 B. x=6 C. x=8 D. x=12 6. 以下程序的输出结果是( ) #include <stdio.h> int 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); return 0; } A. 2 B. 3 C. 4 D. 编译有错 7. 以下程序的输出结果是( ) #include <stdio.h> int main() { int i=1, sum=0; while(i<=10) { if(i%2) continue; sum+=i; i++; } printf("%d ", sum); } A.0 B. 10 C. 30 D. 死循环 8. 以下程序的输出结果是( ) #include <stdio. h> main() { int x , i; for(i=1;i<=100;i++) {x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf("%d ",x); } } A. 39 81 B. 42 84 C. 26 68 D. 28 70 9. 以下程序的输出结果是( ) #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][3-i]; printf("%d ", s); } A.18 B. 20 C. 22 D. 24 10.以下程序的输出结果是( ) #include <stdio.h> main() { int i, k, a[10], p[3]; k=5; for(i=0; i<10; i++) a[i]=i; for(i=0; i<3; i++) p[i]=a[i*(i+1)]; for(i=0; i<3; i++) k+=p[i]*2; printf("%d ", k); } A. 20 B. 21 C. 22 D. 23 11. 以下程序的输出结果是( ) #include <stdio.h> void fun(int a[], int n, int flag) { int i=0, j, t; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(flag?a[i]>a[j]:a[i]<a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } main() { int c[10]={7,2,5,3,4,6,1,8,9,10}, i; fun(c, 4, 1); fun(c+4, 6, 0); for(i=0; i<10; i++) printf("%d,", c[i]); } A. 7,2,5,3,4,6,1,8,9,10, B. 2,3,5,7,10,9,8,6,4,1, C. 2,3,5,7,10,9,8,6,1,4, D. 1,2,3,4,5,6,7,8,9,10, 12. 以下程序的输出结果是( ) #include <stdio.h> f(int a) { int b=0; static int c=3; a=c++, b++; return a; } main() { int a=2, i, k; for(i=0; i<2; i++) k=f(a++); printf("%d ", k); } A. 4 B. 3 C. 2 D. 5 13. 以下程序的输出结果是( ) #include <stdio.h> void fun(int *x,int *y) { printf("%d %d ", *x, *y); *x=3; *y=4; } main() { int x=1, y=2; fun(&y, &x); printf("%d %d ", x, y); } A. 2 1 1 2 B. 2 1 4 3 C. 1 2 1 2 D. 1 2 3 4 14. 设有以下结构体定义: struct student { num; har name[20]; float score; } stu, *p=&stu; 则对结构体成员num的正确引用是( ) A.stu->num B. student.num C. p->num D. (*p).num 15. 以下程序的输出结果是( ) #include <stdio.h> struct STU { char name[10]; int num; }; void f1(struct STU c) { struct STU b={"LiGuo", 2042}; c=b; } void f2(struct STU *c) { struct STU b={"SunDan", 2044}; *c=b; } main() { struct STU a={"YangHan", 2041}, b={"WangLi", 2043}; f1(a); f2(&b); printf("%d %d ", a.num, b.num); } A. 2041 2044 B. 2041 2043 C. 2042 2044 D. 2041 2044 16. 设有定义:a=5, b=6, *p=&a, *q=&b; 执行下列程序段后,a、b的值分别是( ) if(*p<*q) { *p=*p+*q; *q=*p-*q; *p=*p-*q; } A.a=5, b=6 B. a=6, b=5 C. a=5, b=5 D. a=6, b=6 17. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10}, *p=a+3; printf("%d ", p[5]); } A. 5 B. 6 C. 9 D. 8 18. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]=a; int i, j, sum=0; for(i=0; i<3; i++) for(j=0; j<2; j++) sum+=*(*(p+i)+j); printf("%d ", sum); } A. 33 B. 35 C. 78 D. 36 19. 以下程序的输出结果是( ) #include <stdio.h> main() { char s[]="ABCD", *p; for(p=s; p<s+4; p++) printf("%s ", p); } A.ABCD B. A C. ABCD D. ABCD BCD B ABC BCD CD C AB CD D D A D 20. 以下程序的输出结果是( ) #include <stdio.h> #include <string.h> void fun(char *s, char *t) { while(*s) s++; while((*s++=*t++)!='\0'); } main() { char ss[20]="ABCD", tt[]="EFGH"; fun(ss, tt); printf("%s ", ss); } A. ABCD B. EFGH C. ABCDEFGH D. ABCD\0EFGH 21. 以下程序的输出结果是( ) #include <stdio.h> void swap(const char *x, const char *y) { const char *t; t=x; x=y; y=t; } main() { const char *s1="abc", *s2="123"; swap(s1, s2); printf("%s %s ", s1, s2); } A. abc123 B. abc 123 C. 123 abc D. 编译错误 22. 下面程序的运行结果是( ) #include <stdio.h> main() { char ch[7]={"65ab21"}; int i,s=0; for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=s*10+ch[i]-'0'; printf("%d ",s); } A.12ab56 B.6521 C.6 D.62 23.以下程序的输出结果是( ) #include <stdio.h> main() { char str[][10]={"China","Beijing"}, *p=str[0]; printf("%s ", p+10); } A. Beijing B. China C. ng D. 输出不确定 24.以下程序的输出结果是( ) main() { char s[10]={'a','b','c','d'}; printf("%d",strlen(s+2)); } A.值不确定 B.10 C.3 D.2 25.以下程序的输出结果是( ) #include <stdio.h> main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *pa[3]={a[0],a[1],a[2]}; int *p=a[0]; int i; for(i=0; i<3; i++) printf("%d ", pa[i][2-i]); printf(" "); for(i=0; i<3; i++) printf("%d ", p[2-i]); } A.3 5 7 B. 3 6 9 C. 3 5 7 D. 3 6 9 3 2 1 3 2 1 3 5 7 3 6 9 二、简答题(共3小题,每题5分,共15分) 1. 阅读程序,写出运行结果 #include <stdio.h> main() { int a=1, b=2, c=3, d=0; if(a==1 && b++==2) if(b!=2 || c--!=3) printf("%d,%d,%d ", a,b,c); else printf("%d,%d,%d ", a,b,c); else printf("%d,%d,%d ", a,b,c); } 2. 阅读程序,写出运行结果 #include <stdio.h> f(int n) { static int a=1; n+=a++; return n; } main() { int a=3, s; s=f(a); s=s+f(a); printf("%d ", s); } 3.程序改错,程序功能如下: 学习优良奖的条件如下:所考5门课的总成绩在450分(含)以上;或者每门课都在88分(含)以上。输入某学生5门课的考试成绩,输出是否够学习优良奖的条件。 #include<stdio.h> main() { int score,sum=0; int i,n=1; for(i=1;i<5;i++) {scanf("%d",&score); sum+=score; if(score<=88 )n++; } if(sum>=450 || n==5 ) printf("The student is very good! "); else printf("The student is not very good! "); } 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是:输出杨辉三角形的前10行。请补全程序。 #include <stdio.h> main() { int a[10][10], i, j; for(i=0; i<10; i++) { a[i][0]=1; a[i][i]=1; } for(i=2; i<10; i++) for(j=1; j<i; j++) a[i][j]= ① ; for(i=0; i<10; i++) { for(j=0; j<=i; j++) printf("%5d", ② ); printf(" "); } } 2. 下面程序的功能是:输入一个字符串,将字符串中的所有字符按ASCII码值从小到大排序后输出。请补全程序。 #include <stdio.h> #include <string.h> main() { char str[80], *p=str, temp; int i, j, n; gets(str); n=strlen(str); for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if( ③ ) { temp=*(p+i); ④ ; *(p+j)=temp; } puts(str); } 3. 下面程序的功能是:输入一行字符,统计其中有多少个单词(单词间用空格分隔)。请补全程序。 #include <stdio.h> main() { char str[80]; int i, num=0, word=0; char c; gets(str); for(i=0; (c=str[i])!='\0'; i++) { if(c==' ') ⑤ ; else if(word==0) { ⑥ ; num++; } } printf("单词数=%d ", num); } 四、综合应用题(共2小题,每题10分,共20分) 1. 请编写函数fun,其功能是: 要求主函数中输入n的值,并输出计算结果。 2. 请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《编程语言基础—C语言》高教版第五版 高频考点冲刺卷(七)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,能正确表示C语言中double类型常量的表达式是( ) A. 0.5E2.5 B. 5e0.5 C. .2E-3 D. E15 答案:C 解析:C语言中浮点型常量使用科学计数法表示时,E/e后必须是整数,且E/e前必须有数字。A选项指数是小数,B选项指数是小数,D选项缺少小数部分。 2. 设有定义:int a=10, b=3; 则表达式(a=a%b, a/b)的值是( ) A. 1 B. 3 C. 0 D. 3.333 答案:C 解析:逗号表达式从左往右依次执行,表达式的值取决于最后一个表达式的值a=a%b=1,a/b=1/3=0(整数除法)。 3. 若有定义:int k=3; float x=2.5, y=4.8; 则表达式x+k%3*(int)(x+y)%2/4的值是( ) A. 2.500000 B. 2.750000 C. 3.500000 D. 0.000000 答案:A 解析:计算过程:k%3=0,所以整个表达式为x+0=2.5。 4. 以下程序的输出结果是( ) #include <stdio.h> main() { int a=2, b=1, c=2; if(a<b) if(b=0) c=0; else c++; printf("%d ",c); } A.0 B. 1 C. 2 D. 3 答案:C 解析:注意else与if的匹配规则:else与最近的if匹配。 因为a=2, b=1,a<b为假,else与内层if匹配,外层没有else,if语句不执行,所以c保持原值2。 5. 以下程序的输出结果是( ) #include <stdio.h> int main() { int i, j, x=0; for(i=0; i<2; i++) { x++; for(j=0; j<=3; j++) { if(j%2) break; x++; } x++; } printf("x=%d ", x); } A. x=4 B. x=6 C. x=8 D. x=12 答案:B 解析:外层循环2次,每次外层循环:x++(1次),内层循环j=0时j%2=0执行x++,j=1时j%2=1执行break,退出内层循环,然后x++。所以每次外层循环x增加3,共2次,x=6。 6. 以下程序的输出结果是( ) #include <stdio.h> int 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); return 0; } A. 2 B. 3 C. 4 D. 编译有错 答案:B 解析: a>b>c即(5>4)>3,5>4为真(值为1),1>3为假,执行else if。(c-1>=d)即2>=2为真(值为1),所以输出d+1=3。 7. 以下程序的输出结果是( ) #include <stdio.h> int main() { int i=1, sum=0; while(i<=10) { if(i%2) continue; sum+=i; i++; } printf("%d ", sum); } A.0 B. 10 C. 30 D. 死循环 答案:D 解析:当i为奇数时,i%2为1,执行continue,跳过i++,导致i永远不变,陷入死循环。 8. 以下程序的输出结果是( ) #include <stdio. h> main() { int x , i; for(i=1;i<=100;i++) {x=i; if(++x%2==0) if(++x%3==0) if(++x%7==0) printf("%d ",x); } } A. 39 81 B. 42 84 C. 26 68 D. 28 70 答案:D 解析:寻找满足以下条件的i(1≤i≤100):i+1是2的倍数,i+2是3的倍数,i+3是7的倍数,输出i+3的值,i+3的值要能够同时被i+1,i+2,i+3整除。 9. 以下程序的输出结果是( ) #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][3-i]; printf("%d ", s); } A.18 B. 20 C. 22 D. 24 答案:C 解析:求反对角线元素和:a[0][3]=7, a[1][2]=6, a[2][1]=5, a[3][0]=4,和为22。 10.以下程序的输出结果是( ) #include <stdio.h> main() { int i, k, a[10], p[3]; k=5; for(i=0; i<10; i++) a[i]=i; for(i=0; i<3; i++) p[i]=a[i*(i+1)]; for(i=0; i<3; i++) k+=p[i]*2; printf("%d ", k); } A. 20 B. 21 C. 22 D. 23 答案:B 解析: p[0]=a[0]=0, p[1]=a[2]=2, p[2]=a[6]=6,k=5+0×2+2×2+6×2=5+0+4+12=21。 11. 以下程序的输出结果是( ) #include <stdio.h> void fun(int a[], int n, int flag) { int i=0, j, t; for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if(flag?a[i]>a[j]:a[i]<a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } } main() { int c[10]={7,2,5,3,4,6,1,8,9,10}, i; fun(c, 4, 1); fun(c+4, 6, 0); for(i=0; i<10; i++) printf("%d,", c[i]); } A. 7,2,5,3,4,6,1,8,9,10, B. 2,3,5,7,10,9,8,6,4,1, C. 2,3,5,7,10,9,8,6,1,4, D. 1,2,3,4,5,6,7,8,9,10, 答案:C 解析: fun(c,4,1)对前4个升序排序→2,3,5,7。fun(c+4,6,0)对从第5个开始的6个元素降序排序→10,9,8,6,4,1。合并为:2,3,5,7,10,9,8,6,4,1。 12. 以下程序的输出结果是( ) #include <stdio.h> f(int a) { int b=0; static int c=3; a=c++, b++; return a; } main() { int a=2, i, k; for(i=0; i<2; i++) k=f(a++); printf("%d ", k); } A. 4 B. 3 C. 2 D. 5 答案:A 解析: 第一次调用:c=3,a=c++,a=3,c=4。第二次调用:c=4,a=c++,a=4,c=5。k保存最后返回值4。 13. 以下程序的输出结果是( ) #include <stdio.h> void fun(int *x,int *y) { printf("%d %d ", *x, *y); *x=3; *y=4; } main() { int x=1, y=2; fun(&y, &x); printf("%d %d ", x, y); } A. 2 1 1 2 B. 2 1 4 3 C. 1 2 1 2 D. 1 2 3 4 答案:B 解析: fun(&y,&x)传递y和x的地址,在fun中*x是y的值2,*y是x的值1,输出"2 1"。然后*x=3修改y为3,*y=4修改x为4。返回后输出"4 3"。 14. 设有以下结构体定义: struct student { num; har name[20]; float score; } stu, *p=&stu; 则对结构体成员num的正确引用是( ) A.stu->num B. student.num C. p->num D. (*p).num 答案:C 解析: p是指针,可使用->或(*p).访问成员,C和D都正确,但单选题中C是最佳答案。15. 以下程序的输出结果是( ) #include <stdio.h> struct STU { char name[10]; int num; }; void f1(struct STU c) { struct STU b={"LiGuo", 2042}; c=b; } void f2(struct STU *c) { struct STU b={"SunDan", 2044}; *c=b; } main() { struct STU a={"YangHan", 2041}, b={"WangLi", 2043}; f1(a); f2(&b); printf("%d %d ", a.num, b.num); } A. 2041 2044 B. 2041 2043 C. 2042 2044 D. 2041 2044 答案:D 解析: f1传值调用,不改变a;f2传地址调用,改变b为{"SunDan",2044}。所以输出2041 2044。 16. 设有定义:a=5, b=6, *p=&a, *q=&b; 执行下列程序段后,a、b的值分别是( ) if(*p<*q) { *p=*p+*q; *q=*p-*q; *p=*p-*q; } A.a=5, b=6 B. a=6, b=5 C. a=5, b=5 D. a=6, b=6 答案:B 解析: *p=a=5, *q=b=6,*p<*q为真,执行交换,结果是a=6,b=5。 17. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[]={1,2,3,4,5,6,7,8,9,10}, *p=a+3; printf("%d ", p[5]); } A. 5 B. 6 C. 9 D. 8 答案:C 解析: p指向a[3]即4,p[5]相当于*(p+5),即a[8]=9。 18. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]=a; int i, j, sum=0; for(i=0; i<3; i++) for(j=0; j<2; j++) sum+=*(*(p+i)+j); printf("%d ", sum); } A. 33 B. 35 C. 78 D. 36 答案:A 解析:此程序为求二位数组中第i行j列的累加和。i的取值为0,1,2。j的取值为0,1。所以累加的为第1、2、3行的前两个元素的值即sum=1+2+5+6+9+10=33。 19. 以下程序的输出结果是( ) #include <stdio.h> main() { char s[]="ABCD", *p; for(p=s; p<s+4; p++) printf("%s ", p); } A.ABCD B. A C. ABCD D. ABCD BCD B ABC BCD CD C AB CD D D A D 答案:D 解析: p依次指向'A'、'B'、'C'、'D',输出p指向的字符串,分别是"ABCD"、"BCD"、"CD"、"D"。 20. 以下程序的输出结果是( ) #include <stdio.h> #include <string.h> void fun(char *s, char *t) { while(*s) s++; while((*s++=*t++)!='\0'); } main() { char ss[20]="ABCD", tt[]="EFGH"; fun(ss, tt); printf("%s ", ss); } A. ABCD B. EFGH C. ABCDEFGH D. ABCD\0EFGH 答案:C 解析: fun函数将tt字符串连接到ss后面,结果是"ABCDEFGH"。 21. 以下程序的输出结果是( ) #include <stdio.h> void swap(const char *x, const char *y) { const char *t; t=x; x=y; y=t; } main() { const char *s1="abc", *s2="123"; swap(s1, s2); printf("%s %s ", s1, s2); } A. abc123 B. abc 123 C. 123 abc D. 编译错误 答案:B 解析: 调用时指针x指向s1,指针y指向s2,调用结束后指针x指向s2,指针y指向s1。不影响main中的s1和s2,所以输出不变。 22. 下面程序的运行结果是( ) #include <stdio.h> main() { char ch[7]={"65ab21"}; int i,s=0; for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2) s=s*10+ch[i]-'0'; printf("%d ",s); } A.12ab56 B.6521 C.6 D.62 答案:C 解析:for循环的循环体只当i=0时执行一次,i+=2后,i的值为3,此时循环条件ch[i]>='0'&&ch[i]<='9'的值为0,循环结束,所以s的值为6。 23.以下程序的输出结果是( ) #include <stdio.h> main() { char str[][10]={"China","Beijing"}, *p=str[0]; printf("%s ", p+10); } A. Beijing B. China C. ng D. 输出不确定 答案:A 解析:str是二维数组,str[0]="China"占6字节(含'\0'),str[1]="Beijing"。p指向str[0],p+10指向str[1]的开始,输出"Beijing"。 24.以下程序的输出结果是( ) main() { char s[10]={'a','b','c','d'}; printf("%d",strlen(s+2)); } A.值不确定 B.10 C.3 D.2 答案:D 解析:strlen(s+2)从s[2](即'c')开始计算字符串长度,遇到s[4]的'\0'结束,中间包含'c'和'd'两个字符,故长度为2。 25.以下程序的输出结果是( ) #include <stdio.h> main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int *pa[3]={a[0],a[1],a[2]}; int *p=a[0]; int i; for(i=0; i<3; i++) printf("%d ", pa[i][2-i]); printf(" "); for(i=0; i<3; i++) printf("%d ", p[2-i]); } A.3 5 7 B. 3 6 9 C. 3 5 7 D. 3 6 9 3 2 1 3 2 1 3 5 7 3 6 9 答案:A 解析: pa[i][2-i]:i=0时pa[0][2]=a[0][2]=3;i=1时pa[1][1]=a[1][1]=5;i=2时pa[2][0]=a[2][0]=7。p[2-i]:p指向a[0][0],p[2]=a[0][2]=3;p[1]=a[0][1]=2;p[0]=a[0][0]=1。所以输出"3 5 7 3 2 1"。 二、简答题(共3小题,每题5分,共15分) 1. 阅读程序,写出运行结果 #include <stdio.h> main() { int a=1, b=2, c=3, d=0; if(a==1 && b++==2) if(b!=2 || c--!=3) printf("%d,%d,%d ", a,b,c); else printf("%d,%d,%d ", a,b,c); else printf("%d,%d,%d ", a,b,c); } 答案: 1,3,3 解析:a==1为真,b++==2:b++为后自增,先使用2==2后,自增为3,条件为真;进入内层if,b!=2为真(b=3),逻辑或短路,不执行c--!=3,c保持3。输出1,3,3。 2. 阅读程序,写出运行结果 #include <stdio.h> f(int n) { static int a=1; n+=a++; return n; } main() { int a=3, s; s=f(a); s=s+f(a); printf("%d ", s); } 答案: 9 解析: 第一次调用f(3):a是静态局部变量,初始为1,n=3+1=4,a自增为2,返回4。第二次调用f(3):a保持2,n=3+2=5,a自增为3,返回5。s=4+5=9。 3.程序改错,程序功能如下: 学习优良奖的条件如下:所考5门课的总成绩在450分(含)以上;或者每门课都在88分(含)以上。输入某学生5门课的考试成绩,输出是否够学习优良奖的条件。 #include<stdio.h> main() { int score,sum=0; int i,n=1; for(i=1;i<5;i++) {scanf("%d",&score); sum+=score; if(score<=88 )n++; } if(sum>=450 || n==5 ) printf("The student is very good! "); else printf("The student is not very good! "); } 答案: ①n=0 ②i<=5 ③score>=88 ④sum>=&&n==5 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是:输出杨辉三角形的前10行。请补全程序。 #include <stdio.h> main() { int a[10][10], i, j; for(i=0; i<10; i++) { a[i][0]=1; a[i][i]=1; } for(i=2; i<10; i++) for(j=1; j<i; j++) a[i][j]= ① ; for(i=0; i<10; i++) { for(j=0; j<=i; j++) printf("%5d", ② ); printf(" "); } } 答案: ①:a[i-1][j-1]+a[i-1][j],②:a[i][j] 2. 下面程序的功能是:输入一个字符串,将字符串中的所有字符按ASCII码值从小到大排序后输出。请补全程序。 #include <stdio.h> #include <string.h> main() { char str[80], *p=str, temp; int i, j, n; gets(str); n=strlen(str); for(i=0; i<n-1; i++) for(j=i+1; j<n; j++) if( ③ ) { temp=*(p+i); ④ ; *(p+j)=temp; } puts(str); } 答案: ③:*(p+i)>*(p+j),④:*(p+i)=*(p+j) 3. 下面程序的功能是:输入一行字符,统计其中有多少个单词(单词间用空格分隔)。请补全程序。 #include <stdio.h> main() { char str[80]; int i, num=0, word=0; char c; gets(str); for(i=0; (c=str[i])!='\0'; i++) { if(c==' ') ⑤ ; else if(word==0) { ⑥ ; num++; } } printf("单词数=%d ", num); } 答案:⑤:word=0,⑥:word=1 四、综合应用题(共2小题,每题10分,共20分) 1. 请编写函数fun,其功能是: 要求主函数中输入n的值,并输出计算结果。 答案: 参考程序: #include<stdio.h> #include<math.h> double fun(int n) { int i; double s=1.0,p=1.0; for(i=2;i<=n;i++) { p+=pow(i,0.5); s+=p; } return s; } main() {int n,s; printf("请输入n的值:"); scanf("%d",&n); s=fun(n); printf("%d",s); } 2. 请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。 答案: 参考程序: double fun(int n) { int I; double sum=0.0; for(i=1;i<=n;i++) if(i%5==0 || i%9==0) sum+=1.0/I; return sum; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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