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

2026-02-24
| 2份
| 31页
| 62人阅读
| 0人下载

资源信息

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

内容正文:

编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《C语言程序设计》高教版第五版 高频考点冲刺卷(八)原卷版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,不能用作C语言标识符的是( ) A. print B. _123 C. 123 D. abc 2. 以下关于C语言数据类型的叙述中,正确的是( ) A. float类型数据在内存中占4个字节 B. 所有类型的变量都可以进行自增运算 C. 字符型常量用单引号括起来,字符串常量用双引号括起来 D. 定义变量时必须指定其类型,但变量在内存中存储的是其值,与类型无关 3. 设有定义:int a = 5, b = 2;float c = 2.0;double d = 2.0;则以下表达式的值及其类型匹配不正确的是( ) A.a / b的值是 2.5,类型为 double B.a / c的值是 2.5,类型为 float C.a / d的值是 2.5,类型为 double D.a / b + 0.0的值是 2.0,类型为 double 4. 设有定义:inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是( ) A.if(a>b)c=a;a=b;b=c; B.if(a>b){c=a;a=b;b=c;} C.if(a>b)c=a,a=b,b=c; D.if(a>b){c=a,a=b,b=c;} 5. 以下程序的输出结果是( ) #include<stdio.h> intmain() { int i,sum=0; for(i=1;i<=3;sum++)sum+=i; printf("%d ",sum); } A.6 B.3 C.死循环 D.4 6. 以下程序的输出结果是( ) #include<stdio.h> main() { int i=0,s=0; do{ if(i%2) {i++;continue;} i++; s+=i; }while(i<7); printf("%d ",s); } A.16 B.12 C.28 D.21 7. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; int i,s=0; for(i=0;i<3;i++)s+=a[i][i]; printf("%d ",s); } A.15 B.45 C.6 D.24 8. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; int i,j,s=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i+j==1||i+j==3)s+=a[i][j]; printf("%d ",s); } A.10 B.20 C.30 D.40 9. 以下程序的输出结果是( ) #include<stdio.h> int f(int x) { return x*2; } main() { int a=1,b=2,c=3,d; d=f(a+b+c); printf("%d ",d); } A.6 B.12 C.3 D.9 10.以下程序的输出结果是( ) #include<stdio.h> int f(int x) { static int y=1; y+=x; return y; } main() { int i,s=0; for(i=1;i<=3;i++)s+=f(i); printf("%d",s); } A.10 B.11 C.12 D.13 11. 以下程序的输出结果是( ) #include<stdio.h> void fun(int*x,int*y) { *x=*x+*y; *y=*x-*y; *x=*x-*y; } main() { int a=5,b=3; fun(&a,&b); printf("%d,%d ",a,b); } A.3,5 B.5,3 C.5,5 D.3,3 12. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[5]={1,3,5,7,9},*p=a; printf("%d",*p++); printf("%d",(*p)++); printf("%d ",*p); } A.134 B.123 C.133 D.234 13. 设有定义:int a[3][4]={0},(*p)[4]=a;则以下表示中,不能正确访问数组元素的是( ) A.(a+2) B.*(a[1]+2) C.p[1][2] D.*(p+1)+2 14. 以下程序的输出结果是( ) #include<stdio.h> intmain() { char s[]="12345"; s[2]='\0'; printf("%d ",strlen(s)); } A.5 B.2 C.1 D.0 15. 以下程序的输出结果是( ) #include<stdio.h> #include<string.h> void fun(char*s,int m,int n) { char t,*p=s+m; s=s+n; while(s>p) { t=*s;*s=*p;*p=t; s--;p++; } } main() { char str[]="ABCDEFG"; fun(str,2,4); puts(str); } A.ABEDCFG B.ABCDEFG C.ABFEDCG D.ABEDCGF 16. 以下程序的输出结果是( ) #include<stdio.h> main() { char str[]="SSSWLIA",c; int k; for(k=2;(c=str[k])!='\0';k++) { switch(c) { case'I':++k;break; case'L':continue; default:putchar(c);continue; } putchar('*'); } } A.SSW* B.SW* C.SW*A D.SW 17. 设有定义:int a[5]={1,3,5,7,9},p=&a[2];则值为7的表达式是( ) A.*(++p) B.++p C.p++ D.(*p)++ 18. 以下程序的输出结果是( ) #include<stdio.h> main() { const char*a[]={"abcd","efgh","ijkl","mnop"}; const char**p; p=a; printf("%c ",*(p[1]+1)); } A.a B.e C.f D.b 19. 以下程序的输出结果是( ) #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+2,5); for(i=0;i<10;i++) printf("%d,",k[i]); } A.1,2,3,4,5,6,7,8,9,10, B.1,2,7,6,5,4,3,8,9,10, C.1,2,7,6,5,8,9,10,3,4, D.1,2,9,8,7,6,5,4,3,10, 20. 以下程序的输出结果是( ) #include<stdio.h> f(int*x,int*y) { *x=*y; *y=*x; } main() { int a=3,b=5; f(&a,&b); printf("%d%d",a,b); } A.35 B.55 C.33 D.53 21. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[3][3]; int*p,i; p=&a[0][0]; for(i=0;i<9;i++) p[i]=i+1; printf("%d ",a[1][2]); } A.2 B.3 C.6 D.9 22. 以下程序的输出结果是( ) #include<stdio.h> main() { char s[]="12345",*p=s; printf("%c%c%c ",*p+2,*(p+2),p[3]); } A.345 B.334 C.335 D.以上都不对 23.下面说明不正确的是( )。 A.char a[10] = "china"; B.char a[10],*p = a; p = "china"; C.char *a; a = "china"; D.char a[10],*p; p = a = "china"; 24. 在Dev C++中,以下程序的输出结果是( ) #include<stdio.h> main() { const char*p="abcdefgh",*r; long*q; q=(long*)p; q++; r=(char*)q; printf("%s ",r); } A.defgh B.cdefgh C.gh D.efgh 25.下面程序输出的结果是( ) #include<stdio.h> main() { int i,j,x=0; static int a[6]={1,2,3,4,5,6}; for(i=0,j=1;i<5;++i,j++) x+=a[i]*a[j]; printf("%d ",x); } A. 数组a中首尾的对应元素的乘积 B. 数组a中首尾的对应元素的乘积之和 C. 数组a中相邻各元素的乘积 D. 数组a中相邻各元素的乘积之和 二、简答题(共3小题,每题5分,共15分) 1. 阅读以下程序,写出运行结果。 #include<stdio.h> main () { int a[5][5], i, j, n=1; for (i = 0; i< 5; i++) for (j = 0; j< 5; j++) a[i][j] = n++; printf ("The result is : "); for (i =0; i < 5; i++) { for (j =0;j<=i; j++) printf ("%4d", a[i][j]); printf (" "); } } 2. 阅读以下程序,写出运行结果。 #include<stdio.h> void fun(int*a,int b) { int c; c=*a;*a=b;b=c; } main() { int x=1,y=2; fun(&x,y); printf("%d,%d ",x,y); } 3. 程序改错。 #include<stdio.h> struct student { int num; char name[20]; float score; } main() { struct student stu={101,"Zhang",85.5}; printf("%d,%s,%.1f ",stu.num,stu.name,stu.score); } 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是:输入一个正整数n,输出n行由大写字母组成的三角形图案。请将程序补充完整。 #include<stdio.h> main() { int i,j,n; char ch='A'; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf("%c", ① ); ② } } 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++; ② case 2: c2++;break; case 3: c3++; } ③ } } main() { int n=123114350; fun(n); printf(" n=%d c1=%d c2=%d c3=%d ",n,c1,c2,c3); } 3.下面程序功能:打印出1至1000中满足其个位数字的立方等于其本身的所有整数。请将程序补充完整。 #include <stdio.h> main() { int i,g; for(i=1;i<1000;i++) { g= ① ; if( ② ) printf("%4d",i); } printf(" "); } 四、综合应用题(共2小题,每题10分,共20分) 1. 编写程序,输入一个正整数n(1<=n<=10),然后输入n个整数存入数组a,再输入一个整数x,在数组a中查找x,如果找到则输出其下标(若有多个,输出第一个的下标),否则输出"NotFound"。要求使用指针操作数组。 2. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:本冲刺卷严格依据山东省软件与应用技术类高考考纲编写,依托《编程语言基础—C语言》(高教版第五版),聚焦高三考生冲刺需求,助力高效提分。内容上深度覆盖考纲掌握、理解层级考点,既系统梳理构建知识框架,又强化应用能力训练;同时结合近五年高考真题,精准把握高频考点、命题趋势与题型特点,确保贴合高考方向。 山东省软件与应用技术类 《C语言程序设计》高教版第五版 高频考点冲刺卷(八)解析版 时间:60分钟 总分:100分 班级 姓名 学号 成绩 一、单选题(共25小题,每题2分,共50分) 1. 以下选项中,不能用作C语言标识符的是( ) A. print B. _123 C. 123 D. abc 答案:C 解析:标示符的命名原则:由数字、字母、下划线组成,并且第一个字符不能是数字。 2. 以下关于C语言数据类型的叙述中,正确的是( ) A. float类型数据在内存中占4个字节 B. 所有类型的变量都可以进行自增运算 C. 字符型常量用单引号括起来,字符串常量用双引号括起来 D. 定义变量时必须指定其类型,但变量在内存中存储的是其值,与类型无关 答案:C 解析:数据类型所占内存数与编译器有关;自增运算要求操作数是可修改的算术类型或指针类型,结构体、数组、常量等类型不能进行自增运算;C语言语法明确规定,字符常量使用单引号,字符串常量使用双引号;变量在内存中的存储方式完全依赖于其类型,类型决定了如何存取该内存区域的值。 3. 设有定义:int a = 5, b = 2;float c = 2.0;double d = 2.0;则以下表达式的值及其类型匹配不正确的是( ) A.a / b的值是 2.5,类型为 double B.a / c的值是 2.5,类型为 float C.a / d的值是 2.5,类型为 double D.a / b + 0.0的值是 2.0,类型为 double 答案:A 解析:a / b是整数除法,结果为 2(int),A 错;a / c中a转为 float 计算,5.0 / 2.0 = 2.5(float),B 对;a / d结果 2.5(double),C 对;a / b + 0.0中a/b先算得 2(int),再加 0.0 变为 2.0(double),D 对。 4. 设有定义:inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是( ) A.if(a>b)c=a;a=b;b=c; B.if(a>b){c=a;a=b;b=c;} C.if(a>b)c=a,a=b,b=c; D.if(a>b){c=a,a=b,b=c;} 答案:A 解析:A选项if只控制c=a;这一条语句,当a>b为假时,c=a不执行,a=b;b=c;顺序执行。当a>b时B、C、D后边的语句不执行,所以a、b、c的值不变。 5. 以下程序的输出结果是( ) #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.4 答案:C 解析:i 的值为1一直不变,所以次循环为死循环。 6. 以下程序的输出结果是( ) #include<stdio.h> main() { int i=0,s=0; do{ if(i%2) {i++;continue;} i++; s+=i; }while(i<7); printf("%d ",s); } A.16 B.12 C.28 D.21 答案:A 解析:求1+3+5+7的和。 7. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; int i,s=0; for(i=0;i<3;i++)s+=a[i][i]; printf("%d ",s); } A.15 B.45 C.6 D.24 答案:A 解析:求数组a中对角线上值的和 8. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[3][3]={1,2,3,4,5,6,7,8,9}; int i,j,s=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(i+j==1||i+j==3)s+=a[i][j]; printf("%d ",s); } A.10 B.20 C.30 D.40 答案:B 解析:求下标之和为1的元素和下标之和为3的元素的和。 9. 以下程序的输出结果是( ) #include<stdio.h> int f(int x) { return x*2; } main() { int a=1,b=2,c=3,d; d=f(a+b+c); printf("%d ",d); } A.6 B.12 C.3 D.9 答案:B 解析:函数调用f(6),返回值为12,所以d的值为12。 10.以下程序的输出结果是( ) #include<stdio.h> int f(int x) { static int y=1; y+=x; return y; } main() { int i,s=0; for(i=1;i<=3;i++)s+=f(i); printf("%d",s); } A.10 B.11 C.12 D.13 答案:D 解析:第一次函数调用f(1),y=2,返回值为2,第二次调用f(2) y=4,返回值4,第三次调用f(3) y=7,返回值为7。因为y为静态变量,所以在调用结束后不释放内存单元,值保留。 11. 以下程序的输出结果是( ) #include<stdio.h> void fun(int*x,int*y) { *x=*x+*y; *y=*x-*y; *x=*x-*y; } main() { int a=5,b=3; fun(&a,&b); printf("%d,%d ",a,b); } A.3,5 B.5,3 C.5,5 D.3,3 答案:A 解析:函数调用传递的是a、b的地址,所以x指向变量a,y指向变量b,在函数fun中完成了x和y的值交换。所以a和b中的值交换。 12. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[5]={1,3,5,7,9},*p=a; printf("%d",*p++); printf("%d",(*p)++); printf("%d ",*p); } A.134 B.123 C.133 D.234 答案:A 解析:第一个printf中,*和++优先级相同,优先级为从右向左,所以*p++相当于*(p++),但p++是后自增,所以先使用p的值,再+1,所以输出为1,此时p指向元素a[1]。第二个printf要先读p所指向的元素,再对次元素进行后自增,所以输出的值为3,a[1]的值变为4。第三个printf输出此时p所指向的元素的值,为4。 13. 设有定义:int a[3][4]={0},(*p)[4]=a;则以下表示中,不能正确访问数组元素的是( ) A.(a+2) B.*(a[1]+2) C.p[1][2] D.*(p+1)+2 答案:A 解析:A选项是指数组的第二行的首地址。 14. 以下程序的输出结果是( ) #include<stdio.h> intmain() { char s[]="12345"; s[2]='\0'; printf("%d ",strlen(s)); } A.5 B.2 C.1 D.0 答案:B 解析:库函数strlen()是求字符串的长度,即首次出现’\0’之前的字符个数。 15. 以下程序的输出结果是( ) #include<stdio.h> #include<string.h> void fun(char*s,int m,int n) { char t,*p=s+m; s=s+n; while(s>p) { t=*s;*s=*p;*p=t; s--;p++; } } main() { char str[]="ABCDEFG"; fun(str,2,4); puts(str); } A.ABEDCFG B.ABCDEFG C.ABFEDCG D.ABEDCGF 答案:A 解析:fun函数的作用是将子串CDE进行逆序处理。 16. 以下程序的输出结果是( ) #include<stdio.h> main() { char str[]="SSSWLIA",c; int k; for(k=2;(c=str[k])!='\0';k++) { switch(c) { case'I':++k;break; case'L':continue; default:putchar(c);continue; } putchar('*'); } } A.SSW* B.SW* C.SW*A D.SW 答案:B 解析:程序从数组的第三个元素进行遍历。k=2,字符'S':执行default分支,输出'S',continue跳过putchar('*'),k++后k=3。k=3,字符'W':default输出'W',continue跳过'*',k++后k=4。 k=4,字符'L':case 'L'执行continue直接跳至循环末尾,k++后k=5。k=5,字符'I':case 'I'先执行++k使k=6,break跳出switch后执行putchar('*')输出'*',然后循环体结束执行k++使k=7。k=7时str[7]为'\0',循环结束。 17. 设有定义:int a[5]={1,3,5,7,9},p=&a[2];则值为7的表达式是( ) A.*(++p) B.++p C.p++ D.(*p)++ 答案:A 解析:*(++p):先将 p 自增,使其指向 a[3](值为 7),然后得到 7。 ++p:将 p 自增,表达式结果为自增后的地址(指向 a[3]),不是值 7。 p++:表达式结果为自增前的地址(指向 a[2]),然后 p 自增,不是值 7。 (*p)++:先取 p 当前指向的值 5,然后对该值自增(变为 6),但表达式结果为自增前的值 5,不是 7。因此,值为 7 的表达式是 A。 18. 以下程序的输出结果是( ) #include<stdio.h> main() { const char*a[]={"abcd","efgh","ijkl","mnop"}; const char**p; p=a; printf("%c ",*(p[1]+1)); } A.a B.e C.f D.b 答案:C 解析:a是指针数组,a[1] 指向字符串"efgh",p[1] + 1 指向"efgh"中的'f'字符,*(p[1] + 1) 解引用得到字符'f'。程序输出:f。 19. 以下程序的输出结果是( ) #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+2,5); for(i=0;i<10;i++) printf("%d,",k[i]); } A.1,2,3,4,5,6,7,8,9,10, B.1,2,7,6,5,4,3,8,9,10, C.1,2,7,6,5,8,9,10,3,4, D.1,2,9,8,7,6,5,4,3,10, 答案:B 解析:调用fun函数从a[3]到a[6]逆序输出。 20. 以下程序的输出结果是( ) #include<stdio.h> f(int*x,int*y) { *x=*y; *y=*x; } main() { int a=3,b=5; f(&a,&b); printf("%d%d",a,b); } A.35 B.55 C.33 D.53 答案:B 解析:调用函数f传递的是a、b的地址,f函数中将y所指向的变量b赋值给x指向的变量a。再将a的值赋值给b,所以a、b的值都为5。 21. 以下程序的输出结果是( ) #include<stdio.h> main() { int a[3][3]; int*p,i; p=&a[0][0]; for(i=0;i<9;i++) p[i]=i+1; printf("%d ",a[1][2]); } A.2 B.3 C.6 D.9 答案:C 解析:指针p指向数组的第一个元素,通过循环给数组的每一个元素赋值,所以a[1][2]的值为6。 22. 以下程序的输出结果是( ) #include<stdio.h> main() { char s[]="12345",*p=s; printf("%c%c%c ",*p+2,*(p+2),p[3]); } A.345 B.334 C.335 D.以上都不对 答案:B 解析:指针p指向字符串“12345”的首地址,*p+2是对p所指向的元素+2,*(p+2)是先让指针p+2再取值,p[3]等价于s[3]。 23.下面说明不正确的是( )。 A.char a[10] = "china"; B.char a[10],*p = a; p = "china"; C.char *a; a = "china"; D.char a[10],*p; p = a = "china"; 答案:D 解析:在 C 语言中,数组名a是常量指针,不能被重新赋值。因此,a = "china"是非法的。 24. 在Dev C++中,以下程序的输出结果是( ) #include<stdio.h> main() { const char*p="abcdefgh",*r; long*q; q=(long*)p; q++; r=(char*)q; printf("%s ",r); } A.defgh B.cdefgh C.gh D.efgh 答案:D 解析:指针p为指向字符常量的指针,初始值为字符串“abcdefgh”的首地址,q为指向long的指针。q = (long *)p;将p的值(字符指针)强制转换为long *类型,并赋值给q。此时q指向的内存位置与p相同(即字符串开头),但*q将读取一个long大小的数据。q++后,q往后移动4个字节的位置,指到字符串中’e’的位置。赋值给r后,指针r指向’e’。所以输出为“efgh”。 25.下面程序输出的结果是( ) #include<stdio.h> main() { int i,j,x=0; static int a[6]={1,2,3,4,5,6}; for(i=0,j=1;i<5;++i,j++) x+=a[i]*a[j]; printf("%d ",x); } A. 数组a中首尾的对应元素的乘积 B. 数组a中首尾的对应元素的乘积之和 C. 数组a中相邻各元素的乘积 D. 数组a中相邻各元素的乘积之和 答案:D 解析:求数组a中相邻各元素的乘积之和 二、简答题(共3小题,每题5分,共15分) 1. 阅读以下程序,写出运行结果。 #include<stdio.h> main () { int a[5][5], i, j, n=1; for (i = 0; i< 5; i++) for (j = 0; j< 5; j++) a[i][j] = n++; printf ("The result is : "); for (i =0; i < 5; i++) { for (j =0;j<=i; j++) printf ("%4d", a[i][j]); printf (" "); } } 答案: 运行结果: The result is : 1 6 7 11 12 13 16 17 18 19 21 22 23 24 25 2. 阅读以下程序,写出运行结果。 #include<stdio.h> void fun(int*a,int b) { int c; c=*a;*a=b;b=c; } main() { int x=1,y=2; fun(&x,y); printf("%d,%d ",x,y); } 答案:2,2 3. 程序改错。 #include<stdio.h> struct student { int num; char name[20]; float score; } main() { struct student stu={101,"Zhang",85.5}; printf("%d,%s,%.1f ",stu.num,stu.name,stu.score); } 答案: 结构体类型定义后的“}”后要加“;”。 结构体变量定义后不能整体赋值struct student stu={101,"Zhang",85.5};。 三、案例分析题(共3小题,每题5分,共15分) 1. 下面程序的功能是:输入一个正整数n,输出n行由大写字母组成的三角形图案。请将程序补充完整。 #include<stdio.h> main() { int i,j,n; char ch='A'; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf("%c", ① ); ② } } 答案:①:ch++,②:printf(" "); 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++; ② case 2: c2++;break; case 3: c3++; } ③ } } main() { int n=123114350; fun(n); printf(" n=%d c1=%d c2=%d c3=%d ",n,c1,c2,c3); } 答案: ①:n%10 ②:break; ③:n/= 10; 3.下面程序功能:打印出1至1000中满足其个位数字的立方等于其本身的所有整数。请将程序补充完整。 #include <stdio.h> main() { int i,g; for(i=1;i<1000;i++) { g= ① ; if( ② ) printf("%4d",i); } printf(" "); } 答案: ①:i%10 ②:g*g*g==i 四、综合应用题(共2小题,每题10分,共20分) 1. 编写程序,输入一个正整数n(1<=n<=10),然后输入n个整数存入数组a,再输入一个整数x,在数组a中查找x,如果找到则输出其下标(若有多个,输出第一个的下标),否则输出"NotFound"。要求使用指针操作数组。 参考程序: #include<stdio.h> main() { int n,a[10],x,i,flag=0; int*p=a; printf("请输入n:"); scanf("%d",&n); printf("请输入%d个整数:",n); for(i=0;i<n;i++) scanf("%d",p+i); printf("请输入要查找的x:"); scanf("%d",&x); for(i=0;i<n;i++) if(*(p+i)==x) { printf("%d ",i); flag=1; break; } if(!flag) printf("NotFound "); } 2. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:①输入10个数;②进行处理;③输出10个数。 参考程序: #include <stdio.h> void input( int *a) { int n ; printf("input 10 numbers: "); for(n=0 ; n<10 ; n++) scanf("%d" , a+n) ; } void process( int *a) { int min , temp , max , n1 , n2 , i ; min=max=*a ; n1=n2=0 ; for(i=1 ; i<10 ; i++) { if( *(a+i) < min ) {min=*(a+i) ; n1= i ; } if( *(a+i) > max ) {max=*(a+i) ; n2= i ; } } temp=a[0] , a[0] = a[n1] , a[n1] = temp ; temp=a[9] , a[9] = a[n2] , a[n2]= temp ; } void output( int *a) { int n ; printf("result: "); for(n=0 ; n<10 ; n++) printf("%5d" , *(a+n)); } main( ) { int a[10] , *pa ; pa=a ; input(pa); process(pa) ; output( pa ) ; } 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

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