1、二级 C 语言-运算符与表达式及答案解析(总分:60.00,做题时间:90 分钟)一、B选择题/B(总题数:38,分数:38.00)1.设变量已正确定义并赋值,以下合法的 C 语言赋值语句是_。 A.x=y=5 B.x=n%2.5 C.x+n=i D.x=5=4+1(分数:1.00)A.B.C.D.2.在 x 值处于-22、48 时值为“真”,否则为“假”的表达式是_。 A.(2x-2)|(4x8) B.!(x-2)|(x2)double b;float c;char k;,则表达式 a/b+c-k 的值的类型为_。 A.int B.double C.float D.char(分数:1.00)
2、A.B.C.D.10.设有定义:int k=0;,以下选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。 A.k+ B.k+=1 C.+k D.k+1(分数:1.00)A.B.C.D.11.以下关于单目运算符+、-的叙述中正确的是_。 A.它们的运算对象可以是任何变量和常量 B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量 C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量 D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量(分数:1.00)A.B.C.D.12.以下选
3、项中,与 k=n+完全等价的表达式是_。 A.k=n, n=n+1 B.n=n+1, k=n C.k=+n D.k+=n+1(分数:1.00)A.B.C.D.13.以下非法的赋值语句是_。 A.n=(i=2, +i) B.j+ C.+(i+1) D.x=j0(分数:1.00)A.B.C.D.14.以下程序的输出结果为_。#include stdio.hmain() int i=4, a;a=i+;printf(“a=% d, i=% d“, a, i); A.a=4, i=4 B.a=5, i=4 C.a=4, i=5 D.a=5, i=5(分数:1.00)A.B.C.D.15.若变量已正确定
4、义并赋值,以下符合 C 语言语法的表达式是_。 A.a:=b+1 B.a=b=c+2 C.int18.5%3 D.a=a+7=c+b(分数:1.00)A.B.C.D.16.若下列变量都已正确定义并赋值,则符合 C 语言语法的表达式是_。 A.a=a+7 B.a=7+b+c, a+ C.int(12.3/4) D.a=a+7=c+b(分数:1.00)A.B.C.D.17.设有定义:int x=2;,以下表达式中,值不为 6 的是_。 A.x*=x+1 B.x+, 2*x C.x*=(1+x) D.2*x, x+=2(分数:1.00)A.B.C.D.18.执行以下程序后的输出结果是_。main()
5、 int a=65;printf(“%c“, (char)a); A.A B.B C.C D.D(分数:1.00)A.B.C.D.19.以下程序的运行结果是_。main() char ch=A;int num1=ch;float num2=num1;printf(“% f“, num2); A.A B.65 C.65.00000 D.a(分数:1.00)A.B.C.D.20.若 a 为整型变量,则执行以下语句后的_。a=-2L;printf(“%d/n“, a); A.赋值不合法 B.输出值为-2 C.输出为不确定值 D.输出值为 2(分数:1.00)A.B.C.D.21.已知字符 A 的 A
6、SCII 码值是 65,执行以下程序后的_。#include stdio.hmain() char a =A;int b=20;printf(“% d, %o“, (a=a+1, a+b, b), a+a-A, b); A.表达式非法,输出零或不确定值 B.因输出项过多,无输出或输出不确定值 C.输出结果为 20,141 D.输出结果为 20,1541,20(分数:1.00)A.B.C.D.22.变量 a 中的数据用二进制表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是 11110000。若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是_。 A.ab B.
7、a|b C.a,若想通过 a x=2; y=3; z=4; m=(wx)?w:x; m=(my)?m:y; m=(mz)?m:z; 则该程序运行后,m 的值是_。 A.4 B.3 C.2 D.1(分数:1.00)A.B.C.D.28.以下程序的输出结果是_。#include stdio.hmain() int a=5, b=4, c=6, d;printf(“% d/n“, d=ab? (ac? a:c):(b); A.5 B.4 C.6 D.不确定(分数:1.00)A.B.C.D.29.在 C 语言中,如果下面的变量都是 int 类型,则输出的结果是_。sum=pad=5; pad=sum+
8、, pad+, +pad; printf(“%d/n“, pad); A.7 B.6 C.5 D.4(分数:1.00)A.B.C.D.30.以下程序的输出结果是_。#include stdio.hmain() int i =010, j=10;printf(“% d, % d/n“, +i, j-); A.11,10 B.9,10 C.010,9 D.10,9(分数:1.00)A.B.C.D.31.已知 int i; float f;,以下选项中正确的语句是_。 A.(int f)%i; B.int(f)%i; C.int(f%i); D.(int)f%i;(分数:1.00)A.B.C.D.3
9、2.若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为_。(x+y)%2+(int)a/(int)b A.1.0 B.1 C.2.0 D.2(分数:1.00)A.B.C.D.33.假设所有变量均为整型,则表达式(a=2, b=5, a+, b+, a+b)的值为_。 A.7 B.8 C.9 D.10(分数:1.00)A.B.C.D.34.若有定义“int x=1, y=1;“,表达式(!x|y-)的值是_。 A.0 B.1 C.2 D.-1(分数:1.00)A.B.C.D.35.有以下程序:main() unsigned char/a, b, c;a=0x
10、3;b=a |0x8;c=b 1;printf(“%d%d/n“, b, c);程序运行后的输出结果是_。 A.-11 12 B.-6 -13 C.12 24 D.11 22(分数:1.00)A.B.C.D.36.若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+3/2 的值是_。 A.1 B.2 C.2.0 D.2.5(分数:1.00)A.B.C.D.37.执行以下程序段后,c3 的值为_。int c1=1, c2=2, c3;c3=1.0/c2*c1; A.0 B.0.5 C.1 D.2(分数:1.00)A.B.C.D.38.以下程序的输出结果是_。#include
11、stdio.hmain() int y=3, x=3, z=1;printf(“%d%d/n“, (+x, y+), z+2); A.34 B.42 C.43 D.33(分数:1.00)A.B.C.D.二、B操作题/B(总题数:8,分数:22.00)39.编写函数 fun(),其功能是:根据以下公式求 的值(要求精度为 0.0005,即某项小于 0.0005 时停止迭代)。_40.下列给定程序中函数 fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若 num1 和 num2 分别为 49 和 21,则输出的最大公约数为 7;若 num1 和 num2 分别为 27 和
12、 81,则输出的最大公约数为 27。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdio.hint fun(int a, int b) int r, t;if(ab)/* * * * *found* * * * * /t =a; b=a; a=t;r=a% b;while(r!= 0)a=b; b=r; r=a% b;/* * * * *found* * * * * /return (a);void main() int num1, num2, a;printf(“Input num1 num2:
13、“);scanf(“% d% d“, printf(“num1 =% d num2=% d/n/n“, num1, num2);a=fun(num1, num2);printf(“The maximun common divisor is% d/n/n“, a);_41.下列给定的程序中,函数 fun()的功能是:计算并输出 k 以内最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数的值为 4622。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include
14、 stdio.h#include conio.h#include stdlib.hint fun(int k) int m=0, mc=0, j;while(k=2) mc+;k-;/* * * * *found* * * * * /return m;void main() printf(“% d/n“, fun(500);_42.下列给定程序中函数 fun()的功能是:将 p 所指字符串中的所有字符复制到 b 中,要求每复制 3 个字符之后插入一个空格。例如,若给 a 输入字符串:ABCDEFGHIJK,调用函数后,字符数组 b 中的内容为:ABC DEF GHI JK。请改正程序中的错误,
15、使它能得出正确结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdio.hvoid fun(char *p, char *b) int i, k=0; while(*p) i=1;while(i=3 k+; p+; i+;if(*p) /* * * * *found* * * * * /bk+=“ “;bk=/0;main() char a80, b80;printf(“Enter a string:“);gets(a);printf(“The original string:“); puts(a);fun(a, b);printf(“
16、/nThe string after insert space:“);puts(b); printf(“/n/n“);_43.下列给定程序中函数 fun()的功能是:计算并输出 high 以内最大的 10 个素数的和。high 的值由主函数传给 fun()函数。例如,若 high 的值为 100,则函数的值为 732。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include conio.h#include stdio.h#include math.h int fun(int high) int sum=0, n=
17、0, j, yes;/* * * * *found* * * * * /while(high=2) for(j=2; j=high/2; j+)if(high% j=0) /* * * * *found* * * * * /yes=0; breakif(yes) sum+=high;n+;high-;return sum;main() printf(“% d/n“, fun(100);_44.下列给定程序中函数 fun()的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t 中。高位仍在高位,低位仍在低位。例如,当 s 中的数为 87653142 时,t 中的数为 7531。请在
18、下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdlib.h#include stdio.h#include conio.hvoid fun(long s, long * t) int d;long s1=1;*t=0;while(s0) d=s% 10;if(d% 2!=0) *t=d*s1+*t;s1_10;s/ =10;void main() long s, t;printf(“/nPlease enter s:“);scanf(“% ld“, fun(s, printf(“
19、The result is:% ld/n“, t);(分数:8.00)填空项 1:_45.给定程序的功能是:计算并输出下列级数的前 n 项之和 Sn,直到 Sn大于 q 为止,q 的值通过形参传入。(分数:8.00)填空项 1:_46.下列给定程序中,函数 fun()的功能是:将形参 n 中各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新数,作为函数值返回。例如,输入一个整数 27638496,函数返回值为 64862。请在标号处填入正确的内容,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构。试题程序#include stdio.hunsig
20、ned long fun(unsigned long n) unsigned long x=0; int t;while(n) t=n% 10;/* * * * *found* * * * * /if(t% 2=_)/* * * * *found* * * * * /x=_+t;/* * * * *found* * * * * /n=_;return x;main() unsigned long n=-1;while(n99999999|n0) printf(“Please input (0n100000000): “);scanf(“% ld“, printf(“/nThe result i
21、s: % ld/n“, fun(n);(分数:6.00)填空项 1:_二级 C 语言-运算符与表达式答案解析(总分:60.00,做题时间:90 分钟)一、B选择题/B(总题数:38,分数:38.00)1.设变量已正确定义并赋值,以下合法的 C 语言赋值语句是_。 A.x=y=5 B.x=n%2.5 C.x+n=i D.x=5=4+1(分数:1.00)A. B.C.D.解析:解析 赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,选项 C 和 D 错误。“%”运算符两侧都应当是整型数据,选项 B 错误。2.在 x 值处于-22、48 时值为“真”,否则为“假”的表达式是_。 A.(2
22、x-2)|(4x8) B.!(x-2)|(x2)double b;float c;char k;,则表达式 a/b+c-k 的值的类型为_。 A.int B.double C.float D.char(分数:1.00)A.B. C.D.解析:解析 双目运算中两边运算量类型转换规则。 运算数 1 运算数 2 转换结果类型短整型整型字符型有符号整型长整型长整型整型无符号整型短整型-长整型整型-长整型字符型-整型有符号整型-无符号整型整型 浮点型 整型-浮点型在 a/b 的时候,a、b 的类型不一致,根据类型转换规则,要把整型转换成 double 类型,之后的加、减类似。转换规则 char,shor
23、tintunsignedlongdoublefloat。10.设有定义:int k=0;,以下选项的 4 个表达式中与其他 3 个表达式的值不相同的是_。 A.k+ B.k+=1 C.+k D.k+1(分数:1.00)A.B.C.D. 解析:解析 选项 A、B、C 都使 k 的值增加 1,D 选项不改变 k 的值。本题答案为 D。11.以下关于单目运算符+、-的叙述中正确的是_。 A.它们的运算对象可以是任何变量和常量 B.它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量 C.它们的运算对象可以是 int 型变量,但不能是 double 型变量和 floa
24、t 型变量 D.它们的运算对象可以是 char 型变量、int 型变量和 float 型变量(分数:1.00)A.B.C.D. 解析:解析 “+”和“-”运算符都是单目运算符,其运算对象可以是整型变量,也可以是实型变量,但不能是常量或表达式。当运算对象是字符型时,系统自动将其转换成该字符所对应的 ASCII 码值。12.以下选项中,与 k=n+完全等价的表达式是_。 A.k=n, n=n+1 B.n=n+1, k=n C.k=+n D.k+=n+1(分数:1.00)A. B.C.D.解析:解析 题中的表达式是先让 n 参与赋值运算,然后再对本身进行自加,所以选 A。13.以下非法的赋值语句是_
25、。 A.n=(i=2, +i) B.j+ C.+(i+1) D.x=j0(分数:1.00)A.B.C. D.解析:解析 自加或自减运算的操作数不能是表达式。14.以下程序的输出结果为_。#include stdio.hmain() int i=4, a;a=i+;printf(“a=% d, i=% d“, a, i); A.a=4, i=4 B.a=5, i=4 C.a=4, i=5 D.a=5, i=5(分数:1.00)A.B.C. D.解析:解析 本题考查的是自增运算符及赋值运算符的综合使用问题。自增运算符是一元运算符,其优先级比赋值运算符高,要先计算。把表达式 i+的值赋予 a,由于
26、i+的结果为当前 i 的值(当前 i 的值为4),所以 i+的值为 4,得到 a 的值为 4。同时,计算了 i+后,i 由 4 变为 5。15.若变量已正确定义并赋值,以下符合 C 语言语法的表达式是_。 A.a:=b+1 B.a=b=c+2 C.int18.5%3 D.a=a+7=c+b(分数:1.00)A.B. C.D.解析:解析 选项 A 中包含一个不合法的运算符“:=”,选项 C 应改为(int)18.5%3;选项 D 可理解为两个表达式:a+7=c+b 和 a=a+7,其中第一个是错误的,因为 C 语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项 B,它
27、实际上相当于 a=(b=c+2),进而可分解为两个表达式:b=c+2 和 a=b。16.若下列变量都已正确定义并赋值,则符合 C 语言语法的表达式是_。 A.a=a+7 B.a=7+b+c, a+ C.int(12.3/4) D.a=a+7=c+b(分数:1.00)A.B. C.D.解析:解析 选项 A 中“a=a+7;”赋值表达式的最后有一个分号“;”,C 语言规定,语句用分号结束,所以“a=a+7;”是一条赋值语句,而不是表达式。17.设有定义:int x=2;,以下表达式中,值不为 6 的是_。 A.x*=x+1 B.x+, 2*x C.x*=(1+x) D.2*x, x+=2(分数:1
28、.00)A.B.C.D. 解析:解析 本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为“自左向右”。A 项和 C 项的结果是一样的,可展开为:x=x*(x+1)=2*3=6;B 项中先执行 x+,因为+运算符有自加功能,逗号之前执行后 x 的值为 3,逗号后的值就是整个表达式的值,即 6;D 项逗号之前并未给 x 赋值,所以表达式的值就是 x+=2 的值,即 4。因此,本题答案为 D。18.执行以下程序后的输出结果是_。main() int a=65;printf(“%c“, (char)a); A.A B.B C.C D.D
29、(分数:1.00)A. B.C.D.解析:解析 A 的 ASCII 码为 65,int 类型强制转换为 char 类型后输出 A。19.以下程序的运行结果是_。main() char ch=A;int num1=ch;float num2=num1;printf(“% f“, num2); A.A B.65 C.65.00000 D.a(分数:1.00)A.B.C. D.解析:解析 A 的 ASCII 码为 65,赋值语句 num1=ch 把 char 类型的变量转换成 int 类型的变量 num1;赋值语句 num2=num1 把类型为 int 的变量转换为类型为 float 的变量 num
30、2,最后 printf 打印出 num2 的值为 65.00000。20.若 a 为整型变量,则执行以下语句后的_。a=-2L;printf(“%d/n“, a); A.赋值不合法 B.输出值为-2 C.输出为不确定值 D.输出值为 2(分数:1.00)A.B. C.D.解析:解析 本题的关键是要弄清楚 C 语言中常量的表示方法和有关的赋值规则。在一个整型常量后面加一个字母 1 或 L,则认为是 long int 型常量。一个整型常量,如果其值在-32768+32767 范围内,可以赋给一个 int 型或 long int 型变量;但如果整型常量的值超出了上述范围,而在-21474836482
31、147483647 范围内,则应将其值赋给一个 long int 型变量。本例中-2L 虽然为 long int 型变量,但是其值为-2,因此可以通过类型转换把长整型转换为短整型,然后赋给 int 型变量 a,并按照%d格式输出该值。21.已知字符 A 的 ASCII 码值是 65,执行以下程序后的_。#include stdio.hmain() char a =A;int b=20;printf(“% d, %o“, (a=a+1, a+b, b), a+a-A, b); A.表达式非法,输出零或不确定值 B.因输出项过多,无输出或输出不确定值 C.输出结果为 20,141 D.输出结果为
32、20,1541,20(分数:1.00)A.B.C. D.解析:解析 首先应该注意到 printf()函数有 3 个实参数:(a=a+1、a+b、b)、a+a-A和 b,并没有问题,可见选项 A 错误。由于格式控制字符串“%d, %o”中有两个描述符项,而后面又有表达式,因此,必定会产生输出,选项 B 也是错误的。既然控制字符串中只有两个格式描述符,输出必然只有两个数据,故选项 D 错误。22.变量 a 中的数据用二进制表示的形式是 01011101,变量 b 中的数据用二进制表示的形式是 11110000。若要求将 a 的高 4 位取反,低 4 位不变,所要执行的运算是_。 A.ab B.a|
33、b C.a,若想通过 a x=2; y=3; z=4; m=(wx)?w:x; m=(my)?m:y; m=(mz)?m:z; 则该程序运行后,m 的值是_。 A.4 B.3 C.2 D.1(分数:1.00)A.B.C.D. 解析:28.以下程序的输出结果是_。#include stdio.hmain() int a=5, b=4, c=6, d;printf(“% d/n“, d=ab? (ac? a:c):(b); A.5 B.4 C.6 D.不确定(分数:1.00)A.B.C. D.解析:29.在 C 语言中,如果下面的变量都是 int 类型,则输出的结果是_。sum=pad=5; pa
34、d=sum+, pad+, +pad; printf(“%d/n“, pad); A.7 B.6 C.5 D.4(分数:1.00)A. B.C.D.解析:30.以下程序的输出结果是_。#include stdio.hmain() int i =010, j=10;printf(“% d, % d/n“, +i, j-); A.11,10 B.9,10 C.010,9 D.10,9(分数:1.00)A.B. C.D.解析:31.已知 int i; float f;,以下选项中正确的语句是_。 A.(int f)%i; B.int(f)%i; C.int(f%i); D.(int)f%i;(分数:
35、1.00)A.B.C.D. 解析:32.若有定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为_。(x+y)%2+(int)a/(int)b A.1.0 B.1 C.2.0 D.2(分数:1.00)A.B. C.D.解析:33.假设所有变量均为整型,则表达式(a=2, b=5, a+, b+, a+b)的值为_。 A.7 B.8 C.9 D.10(分数:1.00)A.B.C. D.解析:34.若有定义“int x=1, y=1;“,表达式(!x|y-)的值是_。 A.0 B.1 C.2 D.-1(分数:1.00)A.B. C.D.解析:35.有以下程序:mai
36、n() unsigned char/a, b, c;a=0x3;b=a |0x8;c=b 1;printf(“%d%d/n“, b, c);程序运行后的输出结果是_。 A.-11 12 B.-6 -13 C.12 24 D.11 22(分数:1.00)A.B.C.D. 解析:36.若已定义 x 和 y 为 double 类型,则表达式 x=1,y=x+3/2 的值是_。 A.1 B.2 C.2.0 D.2.5(分数:1.00)A.B.C. D.解析:37.执行以下程序段后,c3 的值为_。int c1=1, c2=2, c3;c3=1.0/c2*c1; A.0 B.0.5 C.1 D.2(分数
37、:1.00)A. B.C.D.解析:38.以下程序的输出结果是_。#include stdio.hmain() int y=3, x=3, z=1;printf(“%d%d/n“, (+x, y+), z+2); A.34 B.42 C.43 D.33(分数:1.00)A.B.C.D. 解析:二、B操作题/B(总题数:8,分数:22.00)39.编写函数 fun(),其功能是:根据以下公式求 的值(要求精度为 0.0005,即某项小于 0.0005 时停止迭代)。_正确答案:(double fun(double eps) double s=1.0, s1=1.0; int n=1; while
38、(s1 =eps)/ * 当某项大于精度要求时, 继续求下一项* / s1=s1*n/(2*n+1); /*求多项式的每一项* / s=s+s1; /*求和* / n+; return2*s; )解析:解析 本题考查:迭代法求给定多项式的值,迭代算法是让计算机对一组指令(或一定步骤)重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。需要注意变量的数据类型及赋初值操作。首先应该定义 double 类型变量,并且赋初值,用来存放多项式的某一项和最后的总和。从第二项开始,以后的每一项都是其前面一项乘以 n/(2n+1),程序中用 s1 来表示每一项,s 表示求和后的结果。
39、要注意 s1 和 s 的初值都为 1.0,因为循环从第二项开始累加。40.下列给定程序中函数 fun()的功能是:求两个非零正整数的最大公约数,并作为函数值返回。例如,若 num1 和 num2 分别为 49 和 21,则输出的最大公约数为 7;若 num1 和 num2 分别为 27 和 81,则输出的最大公约数为 27。请改正程序中的错误,使它能得出正确结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdio.hint fun(int a, int b) int r, t;if(ab)/* * * * *found* * * * *
40、 /t =a; b=a; a=t;r=a% b;while(r!= 0)a=b; b=r; r=a% b;/* * * * *found* * * * * /return (a);void main() int num1, num2, a;printf(“Input num1 num2: “);scanf(“% d% d“, printf(“num1 =% d num2=% d/n/n“, num1, num2);a=fun(num1, num2);printf(“The maximun common divisor is% d/n/n“, a);_正确答案:(1)t =a; a=b; b=t
41、; (2)return(b); 或 return b;)解析:解析 本题考查:return 语句,功能是计算表达式的值,并将其返回给主调函数。 求最大公约数算法一般采用辗转相除法。辗转相除法的算法为:首先将 m 除以 n(mn)得余数 r,再用余数 r 去除原来的除数,得到新的余数,重复此过程直到余数为 0 时停止,此时的除数就是 m 和 n 的最大公约数。 程序首先判断参数 a 和 b 的大小,如果 ab 则进行交换,这里是一个数学逻辑错误,应先将 a 的值赋给中间变量 t,再将 b 的值赋给 a,最后将 t 的值赋给 b。当余数 r 为 0 时,除数 b 即为所求的最大公约数,所以函数应返
42、回 b。41.下列给定的程序中,函数 fun()的功能是:计算并输出 k 以内最大的 10 个能被 13 或 17 整除的自然数之和。k 的值由主函数传入,若 k 的值为 500,则函数的值为 4622。请改正程序中的错误,使它能得出正确的结果。注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。试题程序#include stdio.h#include conio.h#include stdlib.hint fun(int k) int m=0, mc=0, j;while(k=2) mc+;k-;/* * * * *found* * * * * /return m;voi
43、d main() printf(“% d/n“, fun(500);_正确答案:(1)if(k%13=0)|(k%17=0) (2)加)解析:解析 本题考查:if 语句条件表达式,区分逻辑表达式和算术表达式;同时注意 C 语言书写程序应遵守的规则。 (1)C 语言中“=”是赋值运算符,“=”才表示等于,x 能被 y 整除的表示方法是x%y=0,而并非像题目中所表示的 x%y=0。所以,if(k%13=0)|(k%17=0)修改后的结果应该是答案所示信息。 (2)程序中缺少“”花括号,程序不完整。此类信息在做题时一定要注意,可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来,比如丢失“”的错误信息是“Compound statement missing in function fun”。42.下列给定程序中函数 fun()的功能是:将 p 所指字符串中的所有字符复制到 b 中,要求每复制 3 个字符之后插入一个空格。例如,若给 a 输入字符串:ABCDEFGHIJK,调用函数后