1、二级 C 语言-11-1 及答案解析(总分:57.01,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:43.00)1.若变量 a、i 已正确定义,且 i 已正确赋值,合法的语句是_。 A. a=1 B. +i; C. a=a+=5; D. a=int(i);(分数:1.00)A.B.C.D.2.在 C 语言中,变量的隐含存储类别是 A. auto B. static C. extern D. 无存储类别(分数:1.00)A.B.C.D.3.有以下程序#includestdiohmain() int a=1,b=2;for( ;a8;a+) b+=a; a+=2;printf(“%
2、d,%d/n“,a,b);程序运行后的输出结果是 A. 9,18 B. 8,11 C. 7,11 D. 10,14A.B.C.D.4.有以下程序int fun(int n) if(n=1) return 1;elsereturn(nfun(n-1);main() int x; scanf(“%d“,x=fun(x);pfintf(“%d/n“,x);执行程序时,给变量 x 输入 10,程序的输出结果是_。 A. 55 B. 54 C. 65 D. 45(分数:1.00)A.B.C.D.5.在设计程序时,应采纳的原则之一是_。 A. 程序结构应有助于读者理解 B. 不限制 goto 语句的使用
3、C. 减少或取消注解行 D. 程序越短越好(分数:1.00)A.B.C.D.6.已知大写字母 A 的 ASC码是 65,小写字母 a 的 ASC码是 97,以下不能将变量 C 中的大写字母转换为对应小写字母的语句是_。 A. c=(c-A)%26+a B. c=c+32 C. c=c-A+a D. c=(A+c)%26-a(分数:2.00)A.B.C.D.7.下列定义变量的语句中错误的是_。 A. int _int; B. double int_; C. char For; D. float US$;(分数:1.00)A.B.C.D.8.已有定义:int x=3,y=4,z=5;,则表达式!(
4、x+y)+z-1 main() int a5=1, 2, 3, 4, 5, *r=a; f(r); printf(“%d/n“, *r); void f(int *P) P=p+3; printf(“%d, “, *P); A. 1,4 B. 4,4 C. 3,1 D. 4,1(分数:2.00)A.B.C.D.11.在以下一组运算中,优先级最高的运符算是 ( ) A. B. C.% D.int b=20;pxintf(“%d,%o“,(a=a+a,a+b,b) ,a+a-A,b); A. 表达式非法,输出零或不确定值 B. 因输出项过多,无输出或输出不确定值 C. 输出结果为 20,141 D
5、. 输出结果为 20,141,20A.B.C.D.13.在下列字符序列中,不可用做 C 语言标识符的是 ( ) A.student_num B.class C.# 88 D.month_12 (分数:1.00)A.B.C.D.14.设有数组定义:chararray=“China“;则数组 array 所占的空间为( )个字节。 A. 4 B. 5 C. 6 D. 7(分数:1.00)A.B.C.D.15.在一个 C 语言程序中 A. main 函数必须出现在所有函数之前 B. main 函数可以在任何地方出现 C. main 函数必须出现在所有函数之后 D. main 函数必须出现在固定位置(
6、分数:1.00)A.B.C.D.16.下列属于 C 语言语句的是_。 A. printf(“%d/n“a) B. #includestdio.h C. a=b;b=c;c=a; D. /*this is a program*/(分数:1.00)A.B.C.D.17.数据库系统的核心是_。 A. 数据模型 B. 数据库管理系统 C. 数据库 D. 数据库管理员(分数:2.00)A.B.C.D.18.以下 4 组用户定义标识符中,全部合法的一组是 _。 A._main enclude sin B. If -max turbo C. txt REAL 3COM D. int k_2 _001(分数:
7、2.00)A.B.C.D.19.在下述程序中,判断 ij 共执行的次数是U /U。main() int i=0,j=10,k=2,s=0;for(;) i+=k;if(ij)printf(“%d“,s);break;s+=i; A. 4 B. 7 C. 5 D. 6(分数:2.00)A.B.C.D.20.有以下程序#includestdio.hmain() int m=1,n=2,*p=m,q=n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%din“,m,n,*p,*q);程序运行后的输出结果是_。 A.1,2,2,1 B.1,2,1,2 C.2,1,2,1 D.2,1,
8、1,2(分数:2.00)A.B.C.D.21.有以下函数int aaa(char*s) char*t=s;while(*t+);t-;return(t-s);以下关于 aaa 函数的功能叙述正确的是U /U。 A.求字符串 s 的长度 B.比较两个串的大小 C.将串 s 复制到串 t D.求字符串 s 所占字节数(分数:1.00)A.B.C.D.22.以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是U /U。 A. if(ab)(bc)k=1; else k=0; B. if(ab)|(bc)k=1; else k=0; C. if(a=b)k=0; else if(b=c)k
9、=1; D. if(ab)k=1; else if(bc)k=1; else k=0;(分数:1.00)A.B.C.D.23.有以下程序typedef structint b,p;A;void f(A c) /*注意:c 是结构变量名 */ int j;c.b+=1; c.p+=2;main() int i;A a=1,2;f(a);printf(“%d,%d/n“,a.b,a.p);程序运行后的输出结果是_。 A. 2,3 B. 2,4 C. 1,4 D. 1,2(分数:2.00)A.B.C.D.24.下列叙述中正确的是_。 A. 算法的效率只与问题的规模有关,而与数据的存储结构无关 B.
10、算法的时间复杂度是指执行算法所需要的计算工作量 C. 数据的逻辑结构与存储结构是一一对应的 D. 算法的时间复杂度与空间复杂度一定相关(分数:2.00)A.B.C.D.25.有以下程序:#define f(X)(X*X)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n”,i1,i2);程序运行后的输出结果是U /U。 A. 64,28 B. 4,4 C. 4,3 D. 64,64(分数:1.00)A.B.C.D.26.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
11、_。 A. 数据库系统 B. 文件系统 C. 人工管理 D. 数据项管理(分数:1.00)A.B.C.D.27.有以下程序 #include stdio.h #include string.h typedef stmct char name9;char sex;float score2;STU; void f(STU a) STU b=“Zhao“,m,85.0,90.0; int i; strcpy(a.name,b.name) ; a.sex=b.sex; for(i=0;i2;i+) a.scorei=b.scorei; main( ) STU c=“Qian“,f,95.0,92.0;
12、 f(c);printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.sex,c.score0,c.score1) ; 程序的运行结果是 A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90(分数:2.00)A.B.C.D.28.下面程序段的运行结果是 char a =“lanuage“,*p; p=a; while(*p!=u)printf(“%c“,*p-32);p+;A)LANGUAGE B)language C)LAN D)langUAGE(分数:2.00)A.B.C.D.29.以下程序的输出结果是_。
13、main()int a=3;printf(“%d/n“,(a+=a-=a*A) ); A. -6 B. 1 C. 2 D. -12(分数:1.00)A.B.C.D.30.在 C 语言中,不适用于局部变量的存储类说明符是 U /U A. auto B. register C. static D. extern(分数:1.00)A.B.C.D.31.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是 A.字符 A B.字符 a C.字符 e D.非法的常量 (分数:1.00)A.B.C.D.32.若有以下程序段:int m=
14、0,n=0;char c=a;scanf(“%d %c %d“, int a33=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i:0; i3; i+) printf(“%d“, a2-ii);(分数:1.80)填空项 1:_(4).下列程序的输出结果是U U /U /U int t(intx,inty,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int, a=4,b=3,c=5,d=6; t(a,b,c,d); printf(“%d %d/n“,c,d); (分数:1.80)填空项 1:_(5).以下程序的输出结果是U U /U
15、 /U。 void fun() static int a; a+=2; printf(“%d“,a); main() int cc; for(cc=1;cc=4;cc+)fun(); printf(“/n“); (分数:1.80)填空项 1:_下面程序的功能是:将 N 行 N 列二维数组中每一行的元素进行排序,第 0 行从小到大排序,第 1 行从大到小排序,第 2 行从小到大排序,第 3 行从大到小排序,例如:(分数:5.01)填空项 1:_填空项 1:_(3).以下程序实现带有头结点的单链表的建立,链表中每个结点包含数据域 data(字符型)和指针域next,所建立链表的头指针由参数 phd
16、 传回调用程序。在空格处填入正确内容。 # includestdioh # includestdlib, h struct node char data; struct node * next; ; void creatlist(U U /U /U) char ch; struct node * s, * r; * phd= malloc( sizeof (struct node); r= * phd; ch=getchar(); while(ch !=) s malloc(sizeof(struct node); s-data=ch; r-next=s; r=s; ch= getchar()
17、; ; r-next=U U /U /U; main ( ) struct node * head; head= NULL; creatlist(U U /U /U) (分数:1.67)填空项 1:_二级 C 语言-11-1 答案解析(总分:57.01,做题时间:90 分钟)一、B选择题/B(总题数:35,分数:43.00)1.若变量 a、i 已正确定义,且 i 已正确赋值,合法的语句是_。 A. a=1 B. +i; C. a=a+=5; D. a=int(i);(分数:1.00)A.B. C.D.解析:解析 选项 D 显然是错的,而选项 A 没有分号结束,不是 C 语句:a+=5 违反了赋
18、值表达式左侧必须为一个变量(不能是常量或表达式)的规定。2.在 C 语言中,变量的隐含存储类别是 A. auto B. static C. extern D. 无存储类别(分数:1.00)A. B.C.D.解析:解析 auto 变量:无 static 声明的局部变量。用 auto 作存储类别的声明时,可以不写 auto,存储类别隐含确定为 auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用 static 声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用 extern 声明外部变量,外部变量即全
19、局变量,可以用 extern 声明来改变全局变量的作用域,实际上,关键字“auto”可以省略,auto 不写则隐含确定为“自动存储类别”,属于动态存储方式。3.有以下程序#includestdiohmain() int a=1,b=2;for( ;a8;a+) b+=a; a+=2;printf(“%d,%d/n“,a,b);程序运行后的输出结果是 A. 9,18 B. 8,11 C. 7,11 D. 10,14A.B.C.D. 解析:解析 初 始值 a=1,b=2,第一次循环:b=b+ a=2+1=3,a=a+2=1+2=3,a=a+1=3+1=4;第二次循环:b=b+a=3+4=7,a=a
20、+2=4+2=6,a=a+1=6+1=7;第三次循环:b=b+a=7+7=14,a=a+2=7+2=9,a=a+1 =9+1=10,故本题答案选 D。4.有以下程序int fun(int n) if(n=1) return 1;elsereturn(nfun(n-1);main() int x; scanf(“%d“,x=fun(x);pfintf(“%d/n“,x);执行程序时,给变量 x 输入 10,程序的输出结果是_。 A. 55 B. 54 C. 65 D. 45(分数:1.00)A. B.C.D.解析:评析;此题考核的知识点是函数的递归调用,即在调用一个函数的过程中又出现直接或间接地
21、调用该函数本身。函数调用中因为实参 x=1O 不符合条件语句 n=1,所以执行 else 语句,调用 fun 函数。fun函数共被调用 8 次,即 fun(9)、fun(8)、 fyn(7)、fun(6)、fun(5)、fun(4)、fan(3)、fun(2),n=10987654321=55,所以 x=55。5.在设计程序时,应采纳的原则之一是_。 A. 程序结构应有助于读者理解 B. 不限制 goto 语句的使用 C. 减少或取消注解行 D. 程序越短越好(分数:1.00)A. B.C.D.解析:解析 滥用 goto 语句将使程序流程无规律,可读性差;添加的注解行有利于对程序的理解,不应减
22、少或取消;程序的长短要依照实际需要而定,并不是越短越好。6.已知大写字母 A 的 ASC码是 65,小写字母 a 的 ASC码是 97,以下不能将变量 C 中的大写字母转换为对应小写字母的语句是_。 A. c=(c-A)%26+a B. c=c+32 C. c=c-A+a D. c=(A+c)%26-a(分数:2.00)A.B.C.D. 解析:解析 由 97-65=32 可知大写字母对应的小写字母之间相差 32,所以将大写字母加上 32 就得到小写字母,所以选项 B 和 C 是正确的。选项 A 中(cA)%26 可以求出变量 c 中的字母与字母 A 相差几位那么小写字母 a 的 ASC码向后移
23、动相差的位数就是对应的小写字母,所以选项 A 也是正确的。7.下列定义变量的语句中错误的是_。 A. int _int; B. double int_; C. char For; D. float US$;(分数:1.00)A.B.C.D. 解析:评析:C 语言中用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符,C 语言规定标识符能由字母、数字和下划线三种字符组成,且第个字符必须为字母或下划线。选项 D 中含有“$”,故不符合标识符的定义。8.已有定义:int x=3,y=4,z=5;,则表达式!(x+y)+z-1 main() int a5=1, 2, 3,
24、 4, 5, *r=a; f(r); printf(“%d/n“, *r); void f(int *P) P=p+3; printf(“%d, “, *P); A. 1,4 B. 4,4 C. 3,1 D. 4,1(分数:2.00)A.B.C.D. 解析:解析 本题解题的关键是:实参和形参之间发生的是单向值传递,形参指针 p 的指向发生了改变,但并不影响实参指针 r 的指向。指针 r 指向数组的第一个元素 a0,并把 a0的地址传递给形参 p,执行“p=p+3;“后,指针 p 指向元素 a3,输出*p 的值即输出元素 a3的值 4。由于形参 p 的指向发生改变并不影响实参 r,所以 r 仍然
25、指向 a0,*r 的值即为元素 a0的值 1。所以程序的输出结果为 4,1。11.在以下一组运算中,优先级最高的运符算是 ( ) A. B. C.% D.int b=20;pxintf(“%d,%o“,(a=a+a,a+b,b) ,a+a-A,b); A. 表达式非法,输出零或不确定值 B. 因输出项过多,无输出或输出不确定值 C. 输出结果为 20,141 D. 输出结果为 20,141,20A.B.C. D.解析:解析 本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即 20。然后以八进制的形式输出a+a-A的值为 97 对应的八进制数 141,由于最后个表达式 b 没有对应输出格
26、式的输出项表列就不会输出。13.在下列字符序列中,不可用做 C 语言标识符的是 ( ) A.student_num B.class C.# 88 D.month_12 (分数:1.00)A.B.C. D.解析:14.设有数组定义:chararray=“China“;则数组 array 所占的空间为( )个字节。 A. 4 B. 5 C. 6 D. 7(分数:1.00)A.B.C. D.解析:解析 在定义字符数组用字符串常量进行初始化时,系统会自动在结尾加/0做结束标志,所以数组 array 所占的空间为 6 个字节。15.在一个 C 语言程序中 A. main 函数必须出现在所有函数之前 B.
27、 main 函数可以在任何地方出现 C. main 函数必须出现在所有函数之后 D. main 函数必须出现在固定位置(分数:1.00)A.B. C.D.解析:解析 本题考核的知识点是 main()函数的位置。一个完整的 C 语言程序有且仅有一个主函数 main()函数)程序总从 main()函数的第一条语句开始执行,到 main()函数的最后一条语句结束,其他函数都是在执行 main()函数时,通过函数调用或嵌套调用而得以执行的。C 语言规定, main()函数在程序中的位置是任意的,故选项 A、选项 C 和选项 D 均不正确。所以,B 选项为所选。16.下列属于 C 语言语句的是_。 A.
28、 printf(“%d/n“a) B. #includestdio.h C. a=b;b=c;c=a; D. /*this is a program*/(分数:1.00)A.B.C. D.解析:解析 在 C 语言中,个完整的 C 语句必须在语句末尾出现分号,分号是 C 语句的必要组成部分。本题答案为 C。17.数据库系统的核心是_。 A. 数据模型 B. 数据库管理系统 C. 数据库 D. 数据库管理员(分数:2.00)A.B. C.D.解析:解析 数据库管理系统(DBMS):一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,是数据库的核心。18.以下 4 组用
29、户定义标识符中,全部合法的一组是 _。 A._main enclude sin B. If -max turbo C. txt REAL 3COM D. int k_2 _001(分数:2.00)A. B.C.D.解析:解析 选项 C 中有非法标示符-max,错误;选项 B 中有非法标示符 3COM;选项 D 中有非法标示符int。选项 A 正确。19.在下述程序中,判断 ij 共执行的次数是U /U。main() int i=0,j=10,k=2,s=0;for(;) i+=k;if(ij)printf(“%d“,s);break;s+=i; A. 4 B. 7 C. 5 D. 6(分数:2
30、.00)A.B.C.D. 解析:解析 分析程序,i+=k:使得 i 的值每次增加 2 然后再和 j 进行比较看 ij 是否成立,i 的变化过程为:i=2,i=4,i=6,i=8,i=10,i=12,此时 ij 成立,所以判断 ij 共执行的次数为 6 次。20.有以下程序#includestdio.hmain() int m=1,n=2,*p=m,q=n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%din“,m,n,*p,*q);程序运行后的输出结果是_。 A.1,2,2,1 B.1,2,1,2 C.2,1,2,1 D.2,1,1,2(分数:2.00)A. B.C.D.解
31、析:解析 m 和 n 值不变化,p 和 q 的指向发生交换,p 指向 n,q 指向 m,所以答案选择 A。21.有以下函数int aaa(char*s) char*t=s;while(*t+);t-;return(t-s);以下关于 aaa 函数的功能叙述正确的是U /U。 A.求字符串 s 的长度 B.比较两个串的大小 C.将串 s 复制到串 t D.求字符串 s 所占字节数(分数:1.00)A. B.C.D.解析:解析 在 while 循环开始前,指针 t 和 s 都指向字符串的起始位置。while 循环的判断条件中,判断 t 所指位置是否为字符串的结束标志,同时让 t 右移一位。当 wh
32、ile 循环结束时,t 自减 1,此时 t指向的位置是字符串的结束标志,故 t-s 的值是字符串的长度。22.以下程序段中与语句 k=ab?(bc?1:0):0;功能等价的是U /U。 A. if(ab)(bc)k=1; else k=0; B. if(ab)|(bc)k=1; else k=0; C. if(a=b)k=0; else if(b=c)k=1; D. if(ab)k=1; else if(bc)k=1; else k=0;(分数:1.00)A. B.C.D.解析:解析 本题考核的知识点是三目运算符“?:”的运用。三目运算表达式的规则为如果“?”前面的表达式的值为真,则取“:”前
33、的表达式的值,否则,取“:”后面表达式的值。分析题目中给出的表达式可知,如果 ab 和 bc 同时成立,k=1,否则 k=0。所以,4 个选项中选项 A)符合题意。23.有以下程序typedef structint b,p;A;void f(A c) /*注意:c 是结构变量名 */ int j;c.b+=1; c.p+=2;main() int i;A a=1,2;f(a);printf(“%d,%d/n“,a.b,a.p);程序运行后的输出结果是_。 A. 2,3 B. 2,4 C. 1,4 D. 1,2(分数:2.00)A.B.C.D. 解析:24.下列叙述中正确的是_。 A. 算法的效
34、率只与问题的规模有关,而与数据的存储结构无关 B. 算法的时间复杂度是指执行算法所需要的计算工作量 C. 数据的逻辑结构与存储结构是一一对应的 D. 算法的时间复杂度与空间复杂度一定相关(分数:2.00)A.B. C.D.解析:解析 本题考查的是算法的基本概念,包括时间复杂度和空间复杂度,算法时间复杂度是指执行算法所需要的计算工作量,可以用执行算法的过程中所需基本运算的执行次数来度量。25.有以下程序:#define f(X)(X*X)main()int i1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf(“%d,%d/n”,i1,i2);程序运行后的输出结果
35、是U /U。 A. 64,28 B. 4,4 C. 4,3 D. 64,64(分数:1.00)A.B.C. D.解析:解析 本题考查的是带参数的宏。宏替换与函数调用不同,前者是字面上的,在编译期间完成,后者是内容上的,在运行期间才进行。题目中第 1 条要替换的语句 i1=f(8)*f(4);展开后是 i1=(8*8)/(4*4);,结果使 i1=4。而第 2 条语句 i2=f(4+4)/f(2+2);展开后为 i2=(4+4*4+4)/(2+2*2+2);,结果使 i2=24/8=3。故应该选择 C)。26.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据
36、独立性最高的阶段是_。 A. 数据库系统 B. 文件系统 C. 人工管理 D. 数据项管理(分数:1.00)A. B.C.D.解析:27.有以下程序 #include stdio.h #include string.h typedef stmct char name9;char sex;float score2;STU; void f(STU a) STU b=“Zhao“,m,85.0,90.0; int i; strcpy(a.name,b.name) ; a.sex=b.sex; for(i=0;i2;i+) a.scorei=b.scorei; main( ) STU c=“Qian“
37、,f,95.0,92.0; f(c);printf(“%s,%c,%2.0f,%2.0f/n“,c.name,c.sex,c.score0,c.score1) ; 程序的运行结果是 A)Qian,f,95,92 B)Qian,m,85,90 C)Zhao,f,95,92 D)Zhao,m,85,90(分数:2.00)A. B.C.D.解析:解析 本题考查的是函数调用时的参数传递问题。程序在调用函数 f 时,传给函数 f 的参数只是结构变量 c 在栈中的一个副本,函数 f 的所有操作只是针对这个数据副本进行的修改,这些都不会影响变量 c 的值。28.下面程序段的运行结果是 char a =“la
38、nuage“,*p; p=a; while(*p!=u)printf(“%c“,*p-32);p+;A)LANGUAGE B)language C)LAN D)langUAGE(分数:2.00)A.B.C. D.解析:解析 本段程序的作用是输出字符串“lanuage”中字母 u 之前的字符,并将其转化为大写字母。 注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放,/0,。29.以下程序的输出结果是_。main()int a=3;printf(“%d/n“,(a+=a-=a*A) ); A. -6 B. 1 C. 2
39、D. -12(分数:1.00)A.B.C.D. 解析:解析 赋值运算符的结合方向是自右至左,所以表达式 a+=a-=a*a 先运算最右边的 a*a 得 9,再运算 a=a-9,即 a=3-9,所以此时 a 的值由 3 变成了-6,最后运算 a=a+(-6),即 a=(-6)+(-6)=-12。30.在 C 语言中,不适用于局部变量的存储类说明符是 U /U A. auto B. register C. static D. extern(分数:1.00)A.B.C.D. 解析:31.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量
40、/101是 A.字符 A B.字符 a C.字符 e D.非法的常量 (分数:1.00)A. B.C.D.解析:解析】字符,/101,所对应的八进制数为 101,转换成十进制数为 65。32.若有以下程序段:int m=0,n=0;char c=a;scanf(“%d %c %d“, int a33=1, 2, 3, 4, 5, 6, 7, 8, 9; for(i:0; i3; i+) printf(“%d“, a2-ii);(分数:1.80)填空项 1:_ (正确答案:7,5,3)解析:解析 本题用循环的方法考查对数组概念的掌握。首先,当 i=0 时,数组中的位置是 a20=7。本题执行第
41、2 次循环时,i 的值为 1,则 printf 函数中的数组指向为 a115,依次循环,可求出答案。(4).下列程序的输出结果是U U /U /U int t(intx,inty,int cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int, a=4,b=3,c=5,d=6; t(a,b,c,d); printf(“%d %d/n“,c,d); (分数:1.80)填空项 1:_ (正确答案:56)解析:解析 本题中 a,b, c,d 是实参,x,y,cp,dp 是形参。C 语言规定,实参变量对形参变量的数据传递是“值传递”。即单向传递,只由实参传给形参,而
42、不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是 56。(5).以下程序的输出结果是U U /U /U。 void fun() static int a; a+=2; printf(“%d“,a); main() int cc; for(cc=1;cc=4;cc+)fun(); printf(“/n“); (分数:1.80)填空项 1:_ (正确答案:2 4 6 8)解析:下面程序的功能是:将 N 行 N 列二维数组中每一行的元素进行排序,第
43、 0 行从小到大排序,第 1 行从大到小排序,第 2 行从小到大排序,第 3 行从大到小排序,例如:(分数:5.01)填空项 1:_ (正确答案:j+1)解析:填空项 1:_ (正确答案:i%2 或 i%2=1)解析:解析 二维数组的行元素进行排序输出,偶数行从小到大排序,奇数行从大到小排序。第一层 for循环决定数组所在行数,两层内循环为冒泡排序程序段;i%2 或 i%2=1 用来判断函数的奇偶性,通过条件运算表达式来确定按升序或降序排列。(3).以下程序实现带有头结点的单链表的建立,链表中每个结点包含数据域 data(字符型)和指针域next,所建立链表的头指针由参数 phd 传回调用程序
44、。在空格处填入正确内容。 # includestdioh # includestdlib, h struct node char data; struct node * next; ; void creatlist(U U /U /U) char ch; struct node * s, * r; * phd= malloc( sizeof (struct node); r= * phd; ch=getchar(); while(ch !=) s malloc(sizeof(struct node); s-data=ch; r-next=s; r=s; ch= getchar(); ; r-next=U U /U /U; main ( ) struct node * head; head= NULL; creatlist(U U /U /U) (分数:1.67)填空项 1:_ (正确答案:18struct node * *phd 19NULL 20&head)解析: