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

2026-01-16
| 2份
| 24页
| 62人阅读
| 0人下载

资源信息

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

内容正文:

编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《C语言程序设计》高教版第五版 高频考点冲刺卷(三)原卷版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 下列哪个不是C语言的特点( ) A. 结构化程序设计 B. 面向对象 C. 移植性好 D. 中级语言 2. 已知大写字母A的ASCII值是65,小写字母a的ASCII值是97。下列不能将变量c中的大写字母转换为对应小写字母的表达式是( ) A. c=(‘A’+c)%26-‘a’ B. c=c+32 C. c=c-‘A’+‘a’ D. c=(c-‘A’)%26+‘a’ 3. 若有定义“int x=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为( ) A. 1.9 B. 2.9 C.1 D. 2.4 4. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( ) if (x>y) z=x;x=y;y=z; A. x=10, y=20, z=30 B. x=20, y=30, z=20 C. x=20, y=30, z=10 D. x=20, y=30, z=30 5. 若x、i、j、k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( ) A. 4 B. 16 C. 32 D. 52 6. 设有int i; char c; float f; 则表达式10+'a'+i*f-c的结果类型为( ) A. int B. char C. float D. double 7. 以下程序的输出结果是( ) #include <stdio.h> main() { int x = 10, y = 3; printf("%d", y = x / y); } A. 1 B. 3 C. 3.333 D. 0 8. 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是( ) A. a=a+b; b=a-b; a=a-b; B. t=a; a=b; b=t; C. a=t; t=b; b=a; D. t=b; b=a; a=t; 9. 以下程序段的输出结果是( ) int a = 10; printf("%d ", ++a); printf("%d ", a--); A. 10, 10 B. 11, 10 C. 11, 11 D. 10, 11 10. 若int i=10; 执行下列程序后,变量i的正确结果是( ) switch(i) { case 9: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 11. 判断char型变量c是否为大写字母的正确表达式是( ) A. 'A'<=c<='Z' B. (c>='A')&(c<='Z') C.('A'<=c)&&('Z'>=c) D. (c>='A')&&(c<='Z') 12. 以下程序的输出结果是( ) #include <stdio.h> main() { int i, sum = 0; for(i = 1; i <= 3; sum++) sum += i; printf("%d", sum); } A. 6 B. 3 C. 死循环 D. 0 13. 以下描述正确的是( ) A. continue语句的作用是结束整个循环的执行 B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break语句或continue语句的作用相同 D. 从多层循环嵌套中退出时,只能使用goto语句 14. 以下能正确定义一维数组的选项是( ) A. int a[5]={0,1,2,3,4,5}; B. char a[]={0,1,2,3,4,5}; C. char a={'A','B','C'}; D. int a[5]="0123"; 15. 若有说明:int a[][4]={0,0}; 则下面不正确的叙述是( ) A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1 C. 因为二维数组初值个数除以第二维大小的值的商为1,故数组a的行数为1 D. 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 16. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i, s=0; for(i=0; i<4; i++) s += a[i][i]; printf("%d", s); } A. 34 B. 68 C. 10 D. 不确定 17. 以下关于函数的叙述中正确的是( ) A.函数调用必须传递实参 B. 函数必须返回一个值 C.函数中可以定义另一个函数 D.函数名必须唯一 18. 以下程序的输出结果是( ) #include <stdio.h> int func(int a, int b) { return (a+b); } main() { int x=2, y=5, z=8, r; r = func(func(x,y), z); printf("%d", r); } A. 12 B. 13 C. 14 D. 15 19. 以下程序的输出结果是( ) #include <stdio.h> void fun(int x) { if(x/2 > 0) fun(x/2); printf("%d ", x); } main() { fun(20); } A. 20 10 5 2 1 B. 1 2 5 10 20 C. 20 10 5 2 D. 1 2 5 10 20. 以下程序的输出结果是( ) #include <stdio.h> int 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); } A. 7 B. 8 C. 9 D. 10 21. 若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是( )。 A. 函数的形参和实参分别占用不同的存储单元 B. 形参只是形式上的存在,不占用具体存储单元 C. 同名的实参和形参占同一存储单元 D. 函数的实参和其对应的形参共占同一存储单元 22. 有以下程序,运行结果是( ) #include<stdio.h> int f(int x,int y) {return ((y-x)*x); } main() {int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d ",d); } A. 7 B. 8 C. 9 D. 10 23.以下函数表示空函数的是( ) A. int fun( ){return 0;} B. int fun( ); C. int fun(){} D. int fun(int a,int b){return 1;} 24. 若有定义:int a[5], *p=a; 则对a数组元素的正确引用是( ) A. *&a[5] B. a+2 C. *(p+5) D. *(a+2) 25.若有定义“int a[2][3],*p[3];”则以下语句中正确的是( ) A.p=a; B.p[0]=a; C.p[0]=&a[1][2]; D. p[1]=&a; 二、简答题(共3小题,每题5分,共15分) 1. 下面程序段的运行结果是( ) main() { char x[ ]= "the teacher"; int i = 0; while (x[++i]!= '\0') if (x[i-1] = = 't') printf("%c",x[i]); } 2.阅读以下程序段,写出输出结果( ) #include <stdio.h> main() { int a=28,b; char s[10],*p; p = s; do { b=a%16; if(b<10) *p = b+48; else *p=b+55; p++; a=a/5; }while (a>0); *p='\0'; puts(s); } 3.阅读以下程序段,写出输出结果( ) #include <stdio.h> main() { int i, j, k = 0; for (i = 1; i <= 3; i++) { for (j = 1; j <= i; j++) { k += i * j; if (k % 5 == 0) continue; k--; } k += 2; } printf("k = %d ", k); } 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是用do-while语句求1~1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印5个数。 #include <stdio.h> main() { int i = 1, j = 0; do { if ( ① ) { printf (" %4d ", i); j = j + 1; if ( ② ) printf (" "); } i = i + 1; } while (i < 1000); } 2. 统计整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。 例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。 #include <stdio.h> int c1,c2,c3; void fun(long n) { c1 = c2 = c3 = 0; while (n) { switch( ③ ) { case 1: c1++; break; case 2: c2++; ④ ; case 3: c3++; } n /= 10; } } main() { int n=123114350; fun(n); printf(" n=%d c1=%d c2=%d c3=%d ",n,c1,c2,c3); } 3. 下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。 main () { int a[2][3] = {{1,2,3},{4,5,6}}; int b[3][2], i, j; printf ("array a: "); for (i = 0; i < = 1; i++) { for (j = 0; ⑤ j++) { printf ("%5d", a[i][j]); ⑥ ; } printf (" "); } printf ("array b: "); for (i = 0; ⑦ ; i++) { for (j = 0; j<= 1; j++) printf ("%5d",b[i][j]); printf (" "); } } 四、综合应用题(共2小题,每题10分,共20分) 1. 求方程ax2+bx+c=0的根,用2个函数分别求当b24ac大于0和等于0时的根并输出结果,从主函数中输入a,b,c的值。 2. 从键盘输入若干整数(个数应少于50个),其值在0~4的范围内,用-1作为输入结束的标志。统计每个整数的个数。试编程序完成。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《C语言程序设计》高教版第五版 高频考点冲刺卷(三)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 下列哪个不是C语言的特点?( ) A. 结构化程序设计 B. 面向对象 C. 移植性好 D. 中级语言 答案:C 解析:C语言是结构化程序设计语言,具有移植性好、高效灵活等特点,属于中级语言(既有高级语言的特性,又能进行底层操作)。C++才是面向对象语言,C语言本身不支持面向对象编程。 2. 已知大写字母A的ASCII值是65,小写字母a的ASCII值是97。下列不能将变量c中的大写字母转换为对应小写字母的表达式是( ) A. c=(‘A’+c)%26-‘a’ B. c=c+32 C. c=c-‘A’+‘a’ D. c=(c-‘A’)%26+‘a’ 答案:A 解析:小写字母比与之对应的大写字母的ASCII值大32,。A选项中不能实现将变量c中的大写字母转换为小写字母。 3. 若有定义“int x=12,y=8,z;”,在其后执行语句“z=0.9+x/y;”,则z的值为( ) A. 1.9 B. 2.9 C.1 D. 2.4 答案:C 解析:先计算“x/y”,结果为1;在计算“0.9+1”,结果为1.9。又因为z为整形变量,所以z的值为1。 4. 已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是( )。 if (x>y) z=x;x=y;y=z; A. x=10, y=20, z=30 B. x=20, y=30, z=20 C. x=20, y=30, z=10 D. x=20, y=30, z=30 答案:D 解析:初始值:x=10, y=20, z=30。if (x>y) 判断 10>20 为假,因此不执行 z=x;。执行 x=y;,将 y 的值赋给 x,此时 x=20。执行 y=z;,将 z 的值赋给 y,此时 y=30。z 保持不变,仍为 30。 因此,执行后 x=20, y=30, z=30,对应选项 D。 5. 若x、i、j、k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为?( ) A. 4 B. 16 C. 32 D. 52 答案:C 解析:逗号表达式的值是最后一个表达式的值。先计算i=4,j=16,最后k=32,整个表达式值为32。 6. 设有int i; char c; float f; 则表达式10+'a'+i*f-c的结果类型为?( ) A. int B. char C. float D. double 答案:D 解析:类型转换规则:char→int→unsigned→long→float→double。'a'转为97(int),i*f为int*float→float→double,整个表达式最终为double类型。 7. 以下程序的输出结果是?( ) #include <stdio.h> main() { int x = 10, y = 3; printf("%d", y = x / y); } A. 1 B. 3 C. 3.333 D. 0 答案:B 解析:x/y是整数除法,10/3=3。赋值表达式y=x/y的值为3,printf输出该值。 8. 若变量已正确定义,要将a和b中的数进行交换,下面不正确的语句组是?( ) A. a=a+b; b=a-b; a=a-b; B. t=a; a=b; b=t; C. a=t; t=b; b=a; D. t=b; b=a; a=t; 答案:B 解析:C选项错误在于t未初始化就被使用。交换两个变量的正确方法:使用中间变量或数学方法。 9. 以下程序段的输出结果是( ) int a = 10; printf("%d ", ++a); printf("%d ", a--); A. 10, 10 B. 11, 10 C. 11, 11 D. 10, 11 答案:C 解析:++a先自增后使用,输出11;a--先使用后自减,输出11但a变为10。 10. 若int i=10; 执行下列程序后,变量i的正确结果是( ) switch(i) { case 9: i+=1; case 10: i+=1; case 11: i+=1; default: i+=1; } A. 10 B. 11 C. 12 D. 13 答案:D 解析:switch语句没有break会"穿透"执行。i=10匹配case 10,执行后面所有语句: - i+=1 → i=11 - case 11: i+=1 → i=12 - default: i+=1 → i=13 11. 判断char型变量c是否为大写字母的正确表达式是( ) A. 'A'<=c<='Z' B. (c>='A')&(c<='Z') C. ('A'<=c)&&('Z'>=c) D. (c>='A')&&(c<='Z') 答案:D 解析:A错在连续比较的写法,B错在用&而不是&&,C虽然逻辑正确但不是常见写法,D是标准写法。 12. 以下程序的输出结果是( ) #include <stdio.h> main() { int i, sum = 0; for(i = 1; i <= 3; sum++) sum += i; printf("%d", sum); } A. 6 B. 3 C. 死循环 D. 0 答案:C 解析:for循环中i值从未改变,i<=3始终成立,导致死循环。 13. 以下描述正确的是( ) A. continue语句的作用是结束整个循环的执行 B. 只能在循环体内和switch语句体内使用break语句 C. 在循环体内使用break语句或continue语句的作用相同 D. 从多层循环嵌套中退出时,只能使用goto语句 答案:B 解析:A错在continue只结束本次循环;C错在break和continue作用不同;D错在还有其它退出方法。 14. 以下能正确定义一维数组的选项是( ) A. int a[5]={0,1,2,3,4,5}; B. char a[]={0,1,2,3,4,5}; C. char a={'A','B','C'}; D. int a[5]="0123"; 答案:B 解析:A初始值过多,超过数组长度;B正确,不指定长度自动计算;C是字符变量不是数组;D字符串不能初始化整型数组。 15. 若有说明:int a[][4]={0,0}; 则下面不正确的叙述是( ) A. 数组a的每个元素都可得到初值0 B. 二维数组a的第一维大小为1 C. 因为二维数组初值个数除以第二维大小的值的商为1,故数组a的行数为1 D. 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0 答案:D 解析:int a[][4]={0,0}定义1行4列数组,前两个元素为0,其余自动初始化为0,D错误。16. 以下程序的输出结果是( ) #include <stdio.h> main() { int a[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}; int i, s=0; for(i=0; i<4; i++) s += a[i][i]; printf("%d", s); } A. 34 B. 68 C. 10 D. 不确定 答案:A 解析:求主对角线元素和:a[0][0]+a[1][1]+a[2][2]+a[3][3]=1+6+11+16=34 17. 以下关于函数的叙述中正确的是( ) A.函数调用必须传递实参 B. 函数必须返回一个值 C.函数中可以定义另一个函数 D.函数名必须唯一 答案:D 解析:A错在无参函数不需要实参;B错在void函数不返回值;C错在C语言不支持函数的嵌套定义。 18. 以下程序的输出结果是( ) #include <stdio.h> int func(int a, int b) { return (a+b); } main() { int x=2, y=5, z=8, r; r = func(func(x,y), z); printf("%d", r); } A. 12 B. 13 C. 14 D. 15 答案:D 解析:先计算func(2,5)=7,再计算func(7,8)=15 19. 以下程序的输出结果是( ) #include <stdio.h> void fun(int x) { if(x/2 > 0) fun(x/2); printf("%d ", x); } main() { fun(20); } A. 20 10 5 2 1 B. 1 2 5 10 20 C. 20 10 5 2 D. 1 2 5 10 答案:B 解析:递归调用过程: fun(20)→fun(10)→fun(5)→fun(2)→fun(1);返回顺序:1→2→5→10→20。 20. 以下程序的输出结果是( ) #include <stdio.h> int 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); } A. 7 B. 8 C. 9 D. 10 答案:C 解析:静态变量a只初始化一次: 第一次调用:a=1, n=3+1=4, a++=2, 返回4 第二次调用:a=2, n=3+2=5, a++=3, 返回5 s=4+5=9 21. 若函数调用时的实参为变量,下列关于函数形参和实参的叙述中正确的是( )。 A. 函数的形参和实参分别占用不同的存储单元 B. 形参只是形式上的存在,不占用具体存储单元 C. 同名的实参和形参占同一存储单元 D. 函数的实参和其对应的形参共占同一存储单元 答案:A 解析:在C语言中,实参变量与形参变量的数据传递是“值传递”,属于单向传递,只由实参传递给形参,而不能由形参传递给实参。在内存中,实参单元与形参单元是不同的单元。 22. 有以下程序,运行结果是( ) #include<stdio.h> int f(int x,int y) {return ((y-x)*x); } main() {int a=3,b=4,c=5,d; d=f(f(a,b),f(a,c)); printf("%d ",d); } A. 7 B. 8 C. 9 D. 10 答案:C 解析:在主函数中调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,b),f(a,c)),即调用f(3,6)函数返回9。 23.以下函数表示空函数的是( ) A. int fun( ){return 0;} B. int fun( ); C. int fun(){} D. int fun(int a,int b){return 1;} 答案:C 解析:空函数是函数体没有执行语句的函数。A、D不是空函数,B是函数声明,不是函数。 24. 若有定义:int a[5], *p=a; 则对a数组元素的正确引用是( ) A. *&a[5] B. a+2 C. *(p+5) D. *(a+2) 答案:D 解析:A、C越界访问;B是地址不是值;D等价于a[2] 25.若有定义“int a[2][3],*p[3];”则以下语句中正确的是( ) A.p=a; B.p[0]=a; C.p[0]=&a[1][2]; D. p[1]=&a; 答案:C 解析:A选项错误,因为p是指向一个指针数组,而数组名相当于常量,不能重新赋值。B选项错误,赋值号两边的类型不匹配。D选项错误,a本身就是数组名,不需要再取地址。 二、简答题(共3小题,每题5分,共15分) 1. 下面程序段的运行结果是( ) main() { char x[ ]= "the teacher"; int i = 0; while (x[++i]!= '\0') if (x[i-1] = = 't') printf("%c",x[i]); } 答案:he 解析:程序输出的是数组元素的前一个元素的值为 't'的元素的值,所以输出第一个字符为 'h',第二个为 'e'。 2.阅读以下程序段,写出输出结果( ) #include <stdio.h> main() { int a=28,b; char s[10],*p; p = s; do { b=a%16; if(b<10) *p = b+48; else *p=b+55; p++; a=a/5; }while (a>0); *p='\0'; puts(s); } 答案:C51 解析: 1. 初始化'a=28',指针 'p' 指向字符数组 's' 的首地址。 2. 进入循环: 第一次:'b=28%16=12','*p=12+55=67'(对应字符 'C'),'p++','a=28/5=5'。 第二次:'b=5%16=5','*p=5+48=53'(对应字符 '5'),'p++','a=5/5=1'。 第三次:'b=1%16=1','*p=1+48=49'(对应字符 '1'),'p++','a=1/5=0'。 3. 循环结束后,在 'p' 当前位置添加字符串结束符 '\0',此时 's' 中的内容为 '"C51"'。 4. 调用 'puts(s)' 输出字符串 '"C51"'。 3.阅读以下程序段,写出输出结果( ) #include <stdio.h> main() { int i, j, k = 0; for (i = 1; i <= 3; i++) { for (j = 1; j <= i; j++) { k += i * j; if (k % 5 == 0) continue; k--; } k += 2; } printf("k = %d ", k); } 答案: k=25 解析:初始化:k = 0 当 i = 1:内层循环 j 从 1 到 1: j = 1:k += i * j → k = 0 + 1 * 1 = 1 k % 5 == 0?1 % 5 = 1,不为 0,条件假。 执行 k-- → k = 1 - 1 = 0 内层循环结束。 执行 k += 2 → k = 0 + 2 = 2 i++ → i = 2 当 i = 2:内层循环 j 从 1 到 2: j = 1:k += i * j → k = 2 + 2 * 1 = 4 k % 5 == 0?4 % 5 = 4,不为 0,条件假。 执行 k-- → k = 4 - 1 = 3 j = 2:k += i * j → k = 3 + 2 * 2 = 7 k % 5 == 0?7 % 5 = 2,不为 0,条件假。 执行 k-- → k = 7 - 1 = 6 内层循环结束。 执行 k += 2 → k = 6 + 2 = 8 i++ → i = 3 当 i = 3:内层循环 j 从 1 到 3: j = 1:k += i * j → k = 8 + 3 * 1 = 11 k % 5 == 0?11 % 5 = 1,不为 0,条件假。 执行 k-- → k = 11 - 1 = 10 j = 2: k += i * j → k = 10 + 3 * 2 = 16 k % 5 == 0?16 % 5 = 1,不为 0,条件假。 执行 k-- → k = 16 - 1 = 15 j = 3:k += i * j → k = 15 + 3 * 3 = 24 k % 5 == 0?24 % 5 = 4,不为 0,条件假。 执行 k-- → k = 24 - 1 = 23 内层循环结束。 执行 k += 2 → k = 23 + 2 = 25 i++ → i = 4,不满足 i <= 3,循环结束。 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是用do-while语句求1~1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印5个数。 #include <stdio.h> main() { int i = 1, j = 0; do { if ( ① ) { printf (" %4d ", i); j = j + 1; if ( ② ) printf (" "); } i = i + 1; } while (i < 1000); } 答案: ①i%3==2&&i%5==3 && i%7==2 ②j%5==0 2. 统计整数n的各个位上出现数字1、2、3的次数,并通过外部(全局)变量c1、c2、c3返回主函数。 例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。 #include <stdio.h> int c1,c2,c3; void fun(long n) { c1 = c2 = c3 = 0; while (n) { switch( ③ ) { case 1: c1++; break; case 2: c2++; ④ ; case 3: c3++; } n /= 10; } } main() { int n=123114350; fun(n); printf(" n=%d c1=%d c2=%d c3=%d ",n,c1,c2,c3); } 答案: ③n % 10 ④break 3. 下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中,请填空。 main () { int a[2][3] = {{1,2,3},{4,5,6}}; int b[3][2], i, j; printf ("array a: "); for (i = 0; i < = 1; i++) { for (j = 0; ⑤ j++) { printf ("%5d", a[i][j]); ⑥ ; } printf (" "); } printf ("array b: "); for (i = 0; ⑦ ; i++) { for (j = 0; j<= 1; j++) printf ("%5d",b[i][j]); printf (" "); } } 答案: ⑤j<=2; ⑥b[j][i]=a[i][j] ⑦i<=2 四、综合应用题(共2小题,每题10分,共20分) 1. 求方程ax2+bx+c=0的根,用2个函数分别求当b24ac大于0和等于0时的根并输出结果,从主函数中输入a,b,c的值。 答案: 参考程序: #include <stdio.h> void result1(float a,float b,float c) { float x; if(b*b-4*a*c==0) x=-b/(2*a); printf("b*b-4*a*c=0,方程的根是%f ",x); } void result2(float a,float b,float c) { float x1,x2; if(b*b-4*a*c>0) x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a); printf("b*b-4*a*c>0,方程的根是x1=%f,x2=%f ",x1,x2); } main( ) { float a,b,c; printf("输入a,b,c的值: "); scanf("a=%f,b=%f,c=%f",&a,&b,&c); if(b*b-4*a*c<0) printf("方程无根 "); else if(b*b-4*a*c>0) result2(a,b,c); else result1(a,b,c); } 2. 从键盘输入若干整数(个数应少于50个),其值在0~4的范围内,用-1作为输入结束的标志。统计每个整数的个数。试编程序完成。 答案: 参考程序: #include <stdio.h> main( ) { int a[50],b[5]={0},i; printf("输入若干整数,以-1作为结束标志 "); for(i=0;i<50;i++) { scanf("%d",&a[i]); if(a[i]==-1) break; else switch(a[i]) { case 0: b[0]++; break; case 1: b[1]++; break; case 2: b[2]++; break; case 3: b[3]++; break; case 4: b[4]++; break; } } for(i=0;i<5; i++) printf("%d的个数:%d ",i,b[i]); } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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