【计算机类职业资格】二级C语言-121及答案解析.doc

上传人:赵齐羽 文档编号:1324873 上传时间:2019-10-17 格式:DOC 页数:22 大小:91.50KB
下载 相关 举报
【计算机类职业资格】二级C语言-121及答案解析.doc_第1页
第1页 / 共22页
【计算机类职业资格】二级C语言-121及答案解析.doc_第2页
第2页 / 共22页
【计算机类职业资格】二级C语言-121及答案解析.doc_第3页
第3页 / 共22页
【计算机类职业资格】二级C语言-121及答案解析.doc_第4页
第4页 / 共22页
【计算机类职业资格】二级C语言-121及答案解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、二级 C 语言-121 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)1.下面不属于软件设计阶段任务的是_。(分数:1.00)A.制订软件确认测试计划B.数据库设计C.软件总体设计D.算法设计2.下面属于黑盒测试方法的是_。(分数:1.00)A.边界值分析B.路径测试C.语句覆盖D.逻辑驱动3.数据字典(DD)所定义的对象都包含于_。(分数:1.00)A.软件结构图B.方框图C.数据流图(DFD 图)D.程序流程图4.以下选项中正确的整型常量是_。(分数:1.00)A.12B.-20C.1,000D.4 5 65.下列运算符中优先级最高的运算

2、符是_。(分数:1.00)A.!B.%C.-=D. scanf(“%d, %d“, B.p=“0“;C.p=0;D.p=“;20.下列叙述中正确的是_。(分数:1.00)A.可以用关系运算符比较字符串的大小B.空字符串不占用内存,其内存空间大小是 0C.两个连续的单引号是合法的字符常量D.两个连续的双引号是合法的字符串常量21.设有定义:int x=0, *p;,立刻执行以下语句,正确的语句是_。(分数:1.00)A.p=x;B.*p=x;C.p=NULL;D.*p=NULL;22.有以下程序: #include stdio.h main() int a=-2, b=0; while(a+ p

3、rintf(“%d, %d/n“, a, b); 程序运行后的输出结果是_。(分数:1.00)A.1,3B.0,2C.0,3D.1,223.设有定义:int x23;,则以下关于二维数组 x 的叙述错误的是_。(分数:1.00)A.x0可看做是由 3 个整型元素组成的一维数组B.x0和 x1是数组名,分别代表不同的地址常量C.数组 x 包含 6 个元素D.可以用语句 x0=0;为数组所有元素赋初值 024.有以下程序: #includestdio.h int f(int x); main() int a, b=0; for(a=0; a3; a+) b=b+f(a); putchar(“A“+

4、b); int f(int x) return x*x1; 程序运行后的输出结果是_。(分数:1.00)A.ABEB.BDIC.BCFD.BCD25.有以下程序: #include stdio.h main() char a=“H“; a=(a=“A“ printf(“%c/n“, a); 程序运行后的输出结果是_。(分数:1.00)A.AB.aC.HD.h26.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的 switch 语句是_。(分数:1.00)A.switch(a+9)case c1: y=a-b;case c2: y=a+b;B.switch a*b case 1

5、0: x=a+b;default: y=a-b;C.switch(a+b)case1: case3: y=a+b; break;case0: case4: y=a-b;D.switch(a*a+b*b)default: break;case 3: y=a+b; break;case 2: y=a-b; break;27.有以下程序: #includestdio.h main() int a=10, 20, 30, 40), *p=a, j; for(i=0; i=3; i+)ai=*p; p+; printf(“%d/n“, a2); 程序运行后的输出结果是_。(分数:1.00)A.30B.4

6、0C.10D.2028.有以下程序: #includestdio.h #define N 3 void fun(int aN, int b) int i, j; for(i=0; iN; i+) bi=ai0; for(j=i; jN; j+) if(biaij) bi=aij; main() int xNN=1, 2, 3, 4, 5, 6, 7, 8, 9, yN, i; fun(x, y); for(i=0; iN; i+) printf(“%d, “, yi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.2,4,8,B.3,6,9,C.3,5,7,D.

7、1,3,5,29.以下叙述中错误的是_。(分数:1.00)A.函数的返回值类型不能是结构体类型,只能是简单类型B.函数可以返回指向结构体变量的指针C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员D.只要类型相同,结构体变量之间可以整体赋值30.以下选项中,合法的是_。(分数:1.00)A.char str3=“d“, “e“, “b“, “u“, “g“, “/0“;B.char str4; str4=“hello world“;C.char name10; name=“china“;D.char str15=“pass“, str26; str2=str1;31.有以下程序: #

8、includestdio.h main() char *s=“234“; int k=0, a=0; while(sk+1!=“/0“) k+; if(k%2=0)a=a+(sk-“0“+1); continue; a=a+(sk-“0“); printf(“k=%d a=%d/n“, k, a); 程序运行后的输出结果是_。(分数:1.00)A.k=6 a=11B.k=3 a=14C.k=4 a=12D.k=5 a=1532.有以下程序: #includestdio.h main() FILE *fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2.dat

9、“, “w+“); for=(i=0; i6; i+) fpintf(fp, “%d/n“, ai); rewind(fp); for(i=0; i6; i+) fscanf(fp, “%d“, fclose(fp); for(i=0; i6; i+) printf(“%d, “, ai); 程序运行后的输出结果是_。(分数:1.00)A.4,5,6,1,2,3,B.1,2,3,3,2,1,C.1,2,3,4,5,6,D.6,5,4,3,2,1,33.有以下程序: #include stdio.h int a=1, b=2; void fun1(int a, int b) printf(“%d

10、%d“, a, b); void fun2() a=3; b=4; main() fun1(5, 6); fun2(); printf(“%d%d/n“, a,b); 程序运行后的输出结果是_。(分数:1.00)A.1 2 5 6B.5 6 3 4C.5 6 1 2D.3 4 5 634.有以下程序: #include stdio.h void func(int n) static int num=1; num=num+n; printf(“%d“, num); main() func(3); func(4); printf(“n“); 程序运行后的输出结果是_。(分数:1.00)A.4 8B

11、.3 4C.3 5D.4 535.有以下程序: #include stdio.h #include stdlio.h void fun(int *p1, int *p2, int *s) s=(int*)malloc(sizeof(int); *s=*p1+*p2; free(s); main() int a=1, b=40, *q= fun( printf(“%d/n“, *q); 程序运行后的输出结果是_。(分数:1.00)A.42B.0C.1D.4136.有以下程序: #include stdio.h struct STUchar name9; char sex; int score2;

12、 ; void f(struct STU a) struct STU b=“Zhao“, “m“, 85, 90; a1=b; main() struct STU c2=“Qian“, “f“, 95, 92, “Sun“, “m“, 98, 99; f(c); printf(“%s, %c, %d, %d, “, c0.name, c0.sex, c0.score0, c0.score1); printf(“%s, %c, %d, %d/n“, c1.name, c1.sex, c1.score0, c1.score1); 程序运行后的输出结果是_。(分数:1.00)A.Zhao, m, 8

13、5, 90, Sun, m, 98, 99B.Zhao, m, 85, 90, Qian, f, 95, 92C.Qian, f, 95, 92, Sun, m, 98, 99D.Qian, f, 95, 92, Zhao, m, 85, 9037.以下叙述中错误的是_。(分数:1.00)A.可以用 typedef 说明的新类型名来定义变量B.typedef 说明的新类型名必须使用大写字母,否则会出编译错误C.用 typedef 可以为基本数据类型说明一个新名称D.用 typedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名38.有以下程序(strcpy 为字符串复制函数,str

14、cat 为字符串连接函数): #includestdio.h #includestring.h main() char a10=“abc“, b10=“012“, c10=“xyz“; strcpy(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是_。(分数:1.00)A.a12xyzB.12yzC.a2yzD.bc2yz39.若有定义语句 int b=2;,则表达式(b2)/(3|b)的值是_。(分数:1.00)A.4B.8C.0D.240.有以下程序: #includestdio.h main() char a510=“one“, “two“, “th

15、ree“, “four“, “five“; int i, j; char t; for(i=0; i4; i+) for(j=i+1; j5; j+) if(ai0aj0) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果是_。(分数:1.00)A.fwoB.fixC.twoD.owo二、程序填空题(总题数:1,分数:18.00)41.请补充 main()函数,该函数的功能是:输入两个正整数 num1 和 num2,求这两个数的最大公约数和最小公倍数。 例如,若输入的两个正整数为 12、4,则它们的最大公约数为 4,最小公倍数为 12。 注意:部分源程序给

16、出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h void main() int a, b, num1, num2, t; system(“CLS“); printf(“/nInput two numbers: /n“); scanf(“%d, %d“, if(num1num2) a=num2; b=num1; else a=num1; b=num2; while( 1) t= 2 a=b; b=t; printf(“greatest commo

17、n divisor: %d/n“, a); printf(“least common multiple: %d/n“, 3); (分数:18.00)三、程序改错题(总题数:1,分数:24.00)42.下列给定程序中函数 proc 的功能是:取出长整型变量 s 中偶数位上的数,依次构成一个新数放在 t 中。例如,当 s 中的数为 123456789 时,t 中的数为 2468。请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includestdio.h #includeconio

18、.h /*found* void proc(long s, long t) long s1=10; s/=10; *t=s%10; /*found* while(s0) s=s/100; *t=s%10*s1+*t; s1=s1*10; void main() long s, t; system(“CLS“); printf(“/nPlease enter s: “); scanf(“%ld“, proc(s, printf(“The result is:%ld/n“, t); (分数:24.00)_四、程序设计题(总题数:1,分数:18.00)43.请编写函数 proc(),其功能是:将 s

19、tr 所指字符串中除下标为偶数、同时 ASCII 码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在 t 所指的数组中。例如,若 str 所指字符串中的内容为 ABCDEFG12345,其中字符 B 的 ASCII 码值为偶数,所在元素的下标为奇数,因此必须删除;而字符 A 的 ASCII 码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后 t 所指的数组中的内容应是 ACEG。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所写的若干语句。 试题程序: #includestdlib.h #

20、includeconio.h #includestdio.h #includestring.h void proc(char*str, char t) void main() char str100, t100; system(“CLS“); printf(“/nPlease enter string str: “); scanf(“%s“, str); proc(str, t); printf(“/nThe result is: %s/n“, t); (分数:18.00)_二级 C 语言-121 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:40.00)

21、1.下面不属于软件设计阶段任务的是_。(分数:1.00)A.制订软件确认测试计划 B.数据库设计C.软件总体设计D.算法设计解析:解析 软件设计阶段的主要任务包括两个:一是进行软件系统的可行性分析,确定软件系统的建设是否值得,能否建成;二是进行软件的系统分析,了解用户的需求,定义应用功能,详细估算开发成本和开发周期。2.下面属于黑盒测试方法的是_。(分数:1.00)A.边界值分析 B.路径测试C.语句覆盖D.逻辑驱动解析:解析 黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。3.数据字典(DD)所定义的对象都包含于_。(

22、分数:1.00)A.软件结构图B.方框图C.数据流图(DFD 图) D.程序流程图解析:解析 数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。4.以下选项中正确的整型常量是_。(分数:1.00)A.12B.-20 C.1,000D.4 5 6解析:解析 选项 A,为 float 类型;选项 C,中间有逗号不是一个常量;选项 D,中间有空格,是三个连续的整形常量。5.下列运算符中优先级最高的运算符是_。(分数:1.00)A.! B.%C.-=D. scanf(“%d, %d“, B.p=“0“;C

23、.p=0; D.p=“;解析:解析 在 C 语言中 NULL 等价于数字 0。20.下列叙述中正确的是_。(分数:1.00)A.可以用关系运算符比较字符串的大小B.空字符串不占用内存,其内存空间大小是 0C.两个连续的单引号是合法的字符常量D.两个连续的双引号是合法的字符串常量 解析:解析 比较两个字符串大小用函数 strcomp(s,t),空字符串有结束符,所以也要占用字节,两个双引号表示的是空字符串。21.设有定义:int x=0, *p;,立刻执行以下语句,正确的语句是_。(分数:1.00)A.p=x;B.*p=x;C.p=NULL; D.*p=NULL;解析:解析 如果没有把 p 指向

24、一个指定的值,*p 是不能被赋值的。定义指针变量不赋初始值时默认为NULL。22.有以下程序: #include stdio.h main() int a=-2, b=0; while(a+ printf(“%d, %d/n“, a, b); 程序运行后的输出结果是_。(分数:1.00)A.1,3B.0,2C.0,3D.1,2 解析:解析 输出的结果是:-1,1 0,2 1,223.设有定义:int x23;,则以下关于二维数组 x 的叙述错误的是_。(分数:1.00)A.x0可看做是由 3 个整型元素组成的一维数组B.x0和 x1是数组名,分别代表不同的地址常量C.数组 x 包含 6 个元素

25、D.可以用语句 x0=0;为数组所有元素赋初值 0 解析:解析 x0是不能赋值的。24.有以下程序: #includestdio.h int f(int x); main() int a, b=0; for(a=0; a3; a+) b=b+f(a); putchar(“A“+b); int f(int x) return x*x1; 程序运行后的输出结果是_。(分数:1.00)A.ABEB.BDI C.BCFD.BCD解析:解析 在函数 main()中,第一次执行 for 循环时,b 的值等于 1,此时输出字母 B;第二次执行for 循环时,b 的值等于 3,此时输出字母 D;第三次执行 f

26、or 循环时,b 的值等于 8,此时输出字母 1。25.有以下程序: #include stdio.h main() char a=“H“; a=(a=“A“ printf(“%c/n“, a); 程序运行后的输出结果是_。(分数:1.00)A.AB.aC.HD.h 解析:解析 多元运算符问号前面表达式为真,所以(a-“A“+“a“)赋值给 a,括号里的运算是把大写字母变成小写字母,所以答案应为选项 D。26.若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的 switch 语句是_。(分数:1.00)A.switch(a+9)case c1: y=a-b;case c2: y

27、=a+b;B.switch a*b case 10: x=a+b;default: y=a-b;C.switch(a+b)case1: case3: y=a+b; break;case0: case4: y=a-b;D.switch(a*a+b*b)default: break;case 3: y=a+b; break;case 2: y=a-b; break; 解析:解析 选项 A,当 c1 和 c2 相等时,不成立;选项 B,a*b 要用括号括起来;选项 C,case 与后面的数字用空格隔开。27.有以下程序: #includestdio.h main() int a=10, 20, 30

28、, 40), *p=a, j; for(i=0; i=3; i+)ai=*p; p+; printf(“%d/n“, a2); 程序运行后的输出结果是_。(分数:1.00)A.30 B.40C.10D.20解析:解析 for 循环结束后,数组 a 的值并没有变化,由于数组是由 0 开始的,所以 a2的值是 30。28.有以下程序: #includestdio.h #define N 3 void fun(int aN, int b) int i, j; for(i=0; iN; i+) bi=ai0; for(j=i; jN; j+) if(biaij) bi=aij; main() int

29、xNN=1, 2, 3, 4, 5, 6, 7, 8, 9, yN, i; fun(x, y); for(i=0; iN; i+) printf(“%d, “, yi); printf(“/n“); 程序运行后的输出结果是_。(分数:1.00)A.2,4,8,B.3,6,9, C.3,5,7,D.1,3,5,解析:解析 fun 函数功能是把数组 a 的每一行的最大值赋给 b,a 的第一行的最大值是 3,第二行的最大值是 6,第三行的最大值是 9,所以答案是 3,6,9。29.以下叙述中错误的是_。(分数:1.00)A.函数的返回值类型不能是结构体类型,只能是简单类型 B.函数可以返回指向结构体

30、变量的指针C.可以通过指向结构体变量的指针访问所指结构体变量的任何成员D.只要类型相同,结构体变量之间可以整体赋值解析:解析 函数返回值类型可分为简单类型和结构体类型。30.以下选项中,合法的是_。(分数:1.00)A.char str3=“d“, “e“, “b“, “u“, “g“, “/0“; B.char str4; str4=“hello world“;C.char name10; name=“china“;D.char str15=“pass“, str26; str2=str1;解析:解析 选项 B 不能把一个字符串赋值给一个字符变量,选项 C 和 D 犯了同样的错误是把字符串赋

31、给了数组名。31.有以下程序: #includestdio.h main() char *s=“234“; int k=0, a=0; while(sk+1!=“/0“) k+; if(k%2=0)a=a+(sk-“0“+1); continue; a=a+(sk-“0“); printf(“k=%d a=%d/n“, k, a); 程序运行后的输出结果是_。(分数:1.00)A.k=6 a=11B.k=3 a=14C.k=4 a=12 D.k=5 a=15解析:解析 输出结果: k=1 a=2 k=2 a=4 k=3 a=7 k=4 a=1232.有以下程序: #includestdio.h

32、 main() FILE *fp; int i, a6=1, 2, 3, 4, 5, 6; fp=fopen(“d2.dat“, “w+“); for=(i=0; i6; i+) fpintf(fp, “%d/n“, ai); rewind(fp); for(i=0; i6; i+) fscanf(fp, “%d“, fclose(fp); for(i=0; i6; i+) printf(“%d, “, ai); 程序运行后的输出结果是_。(分数:1.00)A.4,5,6,1,2,3,B.1,2,3,3,2,1,C.1,2,3,4,5,6,D.6,5,4,3,2,1, 解析:解析 这个是对文件

33、的操作,把数组的数写到文件里,然后再从文件里倒序读出。所以输出结果为 6,5,4,3,2,1。33.有以下程序: #include stdio.h int a=1, b=2; void fun1(int a, int b) printf(“%d%d“, a, b); void fun2() a=3; b=4; main() fun1(5, 6); fun2(); printf(“%d%d/n“, a,b); 程序运行后的输出结果是_。(分数:1.00)A.1 2 5 6B.5 6 3 4 C.5 6 1 2D.3 4 5 6解析:解析 fun1 是输出局部变量的值,fun2 是把全局变量的值改

34、成 3 和 4,所以输出的结果是 5 6 3 4。34.有以下程序: #include stdio.h void func(int n) static int num=1; num=num+n; printf(“%d“, num); main() func(3); func(4); printf(“n“); 程序运行后的输出结果是_。(分数:1.00)A.4 8 B.3 4C.3 5D.4 5解析:解析 第一次调用 func 函数时输出 4,第二次调用 func 函数时 num 的值并不会释放,仍然是上次修改后的值 4,第二次调用结果为 8,所以输出结果是 4 8。35.有以下程序: #inc

35、lude stdio.h #include stdlio.h void fun(int *p1, int *p2, int *s) s=(int*)malloc(sizeof(int); *s=*p1+*p2; free(s); main() int a=1, b=40, *q= fun( printf(“%d/n“, *q); 程序运行后的输出结果是_。(分数:1.00)A.42B.0C.1 D.41解析:解析 fun 函数功能是新开辟内存空间存放 a 和 b 的地址,q 的地址并没有变化,所以应该还是指向地址 a。36.有以下程序: #include stdio.h struct STUc

36、har name9; char sex; int score2; ; void f(struct STU a) struct STU b=“Zhao“, “m“, 85, 90; a1=b; main() struct STU c2=“Qian“, “f“, 95, 92, “Sun“, “m“, 98, 99; f(c); printf(“%s, %c, %d, %d, “, c0.name, c0.sex, c0.score0, c0.score1); printf(“%s, %c, %d, %d/n“, c1.name, c1.sex, c1.score0, c1.score1); 程序

37、运行后的输出结果是_。(分数:1.00)A.Zhao, m, 85, 90, Sun, m, 98, 99B.Zhao, m, 85, 90, Qian, f, 95, 92C.Qian, f, 95, 92, Sun, m, 98, 99D.Qian, f, 95, 92, Zhao, m, 85, 90 解析:解析 f 函数是为结构体数组的第二个数赋值,数组的第一个数没有变化,所以正确答案应选 D。37.以下叙述中错误的是_。(分数:1.00)A.可以用 typedef 说明的新类型名来定义变量B.typedef 说明的新类型名必须使用大写字母,否则会出编译错误 C.用 typedef 可

38、以为基本数据类型说明一个新名称D.用 typedef 说明新类型的作用是用一个新的标识符来代表已存在的类型名解析:解析 用 typedef 说明的类型不是必须用大写,而是习惯上用大写。38.有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数): #includestdio.h #includestring.h main() char a10=“abc“, b10=“012“, c10=“xyz“; strcpy(a+1, b+2); puts(strcat(a, c+1); 程序运行后的输出结果是_。(分数:1.00)A.a12xyzB.12yzC.a2yz D.bc2

39、yz解析:解析 第一次执行字符串的复制函数 a 的值是 a2,第二次执行的是字符串的连接函数,所以运行结果为 a2yz。39.若有定义语句 int b=2;,则表达式(b2)/(3|b)的值是_。(分数:1.00)A.4B.8 C.0D.2解析:解析 2 的二进制数为 010,移两位后的二进制数为 01000,转成十制数为 8,(3|2)为真即1,8/1=8,所以结果为 8。40.有以下程序: #includestdio.h main() char a510=“one“, “two“, “three“, “four“, “five“; int i, j; char t; for(i=0; i4

40、; i+) for(j=i+1; j5; j+) if(ai0aj0) t=ai0; ai0=aj0; aj0=t; puts(a1); 程序运行后的输出结果是_。(分数:1.00)A.fwo B.fixC.twoD.owo解析:解析 for 循环完成的功能是把二维数组 a 的第一列字母按从小到大排序,其他列的字母不变。二、程序填空题(总题数:1,分数:18.00)41.请补充 main()函数,该函数的功能是:输入两个正整数 num1 和 num2,求这两个数的最大公约数和最小公倍数。 例如,若输入的两个正整数为 12、4,则它们的最大公约数为 4,最小公倍数为 12。 注意:部分源程序给出

41、如下。 请勿改动 main()函数和其他函数中的任何内容,仅在 main()函数的横线上填入所编写的若干表达式或语句。 试题程序: #includestdlib.h #includestdio.h void main() int a, b, num1, num2, t; system(“CLS“); printf(“/nInput two numbers: /n“); scanf(“%d, %d“, if(num1num2) a=num2; b=num1; else a=num1; b=num2; while( 1) t= 2 a=b; b=t; printf(“greatest common

42、 divisor: %d/n“, a); printf(“least common multiple: %d/n“, 3); (分数:18.00)解析:b!=0 a%b num1*num2/a解析 由程序可知,变量 b 中存放两个正整数中较小的那个数,while 循环求两个正整数的公约数。因此第一空填“b!=0”;第二空填“a%b”;第三处是求两个正整数最小公倍数的表达式,因此第三空填“num1*num2/a”。三、程序改错题(总题数:1,分数:24.00)42.下列给定程序中函数 proc 的功能是:取出长整型变量 s 中偶数位上的数,依次构成一个新数放在 t 中。例如,当 s 中的数为 1

43、23456789 时,t 中的数为 2468。请修改程序中的错误,使它能得出正确的结果。 注意:不要改动 main()函数,不得增行或删行,也不得更改程序的结构。 试题程序: #includestdlib.h #includestdio.h #includeconio.h /*found* void proc(long s, long t) long s1=10; s/=10; *t=s%10; /*found* while(s0) s=s/100; *t=s%10*s1+*t; s1=s1*10; void main() long s, t; system(“CLS“); printf(“/

44、nPlease enter s: “); scanf(“%ld“, proc(s, printf(“The result is:%ld/n“, t); (分数:24.00)_正确答案:()解析:(1)错误:void proc(long s, long t) 正确:void proc(long s, long*t) (2)错误:while(s0) 正确:while(s0) 解析 从主函数中实参可知,形参的第二个变量是长整型的指针变量。因此“void proc(long s, longt)”应改为“void proc(long s, long*t)”;要从低位开始取出长整型变量 s 中偶数位上的数

45、,每次变量 s 要除以 100,然后判断其是否大于 0 来决定是否要继续,因此“while(s0)”应改为“while(s0)”。四、程序设计题(总题数:1,分数:18.00)43.请编写函数 proc(),其功能是:将 str 所指字符串中除下标为偶数、同时 ASCII 码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在 t 所指的数组中。例如,若 str 所指字符串中的内容为 ABCDEFG12345,其中字符 B 的 ASCII 码值为偶数,所在元素的下标为奇数,因此必须删除;而字符 A 的 ASCII 码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后 t 所指的数组中的内容应是 ACEG。 注意:部分源程序给出如下。 请勿改动 main()函数和其他函数中的任何内容,仅在函数 proc()的花括号中填入所写的若干语句。 试题程序: #includestdlib.h

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1