1、全国自考(计算机软件基础)-试卷 5 及答案解析(总分:70.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.已知 int b=4;,执行语句 b+=b+;后,b 的值是 【 】(分数:2.00)A.8B.9C.10D.112.下列数据中,不合法的 C 语言实型数据是 【 】(分数:2.00)A.0123B.123E3C.21E35D.78903.按照 C 语言规定的用户标识符命令规则,不能出现在变量名中的是 【 】(分数:2.00)A.大写字母B.连接符C.数字D.下划线4.对于输入语句 scanf(“d,d“,&a,&b);,要使变量 a、b 的值分别为 1
2、 和 2,则正确的输入是 【 】(分数:2.00)A.1,2 回车B.12 回车C.1 回车 2 回车D.1;2 回车5.有以下程序段: int a,b,c; a=10;b=50;c=30; if(ab)a=b,b=c;c=a; printf(“a=d b=d c=dn“,a,b,c); 程序的输出结果是 【 】(分数:2.00)A.a=10 b=50 c=10B.a=10 b=50 c=30C.a=10 b=30 c=10D.a=50 b=30 c=506.已知 char sr20;int i;,从键盘向数组 sr 输入一个字符串的正确语句是 【 】(分数:2.00)A.gets(sr);B
3、.gets(sr20);C.for(i=0;inext; q=sprior; while(p!=q& ) if(p 一data=qdata) ; q=q 一prior; else j=0; return(j); (分数:2.00)_31.下面算法的功能是_。 LinkList ListListDemo(ListList &L)L 是不带头节点的单链表 Inode*q,*p; if(L&Lnext) q=L; L=L 一next; p=L: while(pnext) p=p 一next; p 一next=q; p 一next=NULL; return L:(分数:2.00)_32.下列算法的时间
4、复杂度是_。 s=0: for(i=0;i_33.下列函数的功能是求链表长度,填空完成程序。 struct node char ch; struct node*link; ; str(struct node*p) int ; while(p!=NULL) ; count+: return(count); (分数:2.00)_五、程序设计题(总题数:2,分数:4.00)34.求 an=a+aa+aaa+的值,其中 a 是一个数字。例如:2+22+222+2222+22222(此时 n=5),n 的值由键盘输入。(分数:2.00)_35.在一个单链表中,不同节点的数据域值可能相同,单链表的表头指针
5、为 head,编写一个函数计算数据域值为 x 的节点个数。(分数:2.00)_全国自考(计算机软件基础)-试卷 5 答案解析(总分:70.00,做题时间:90 分钟)一、单项选择题(总题数:15,分数:30.00)1.已知 int b=4;,执行语句 b+=b+;后,b 的值是 【 】(分数:2.00)A.8B.9 C.10D.11解析:解析:b+=b+等价于 b=b+(b+),b+表示在使用 b 的值之后,b 的值再加 1,所以 b=b+(b+)=5+4=9。2.下列数据中,不合法的 C 语言实型数据是 【 】(分数:2.00)A.0123B.123E3C.21E35 D.7890解析:3.
6、按照 C 语言规定的用户标识符命令规则,不能出现在变量名中的是 【 】(分数:2.00)A.大写字母B.连接符 C.数字D.下划线解析:解析:在 C 语言中,变量名只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。4.对于输入语句 scanf(“d,d“,&a,&b);,要使变量 a、b 的值分别为 1 和 2,则正确的输入是 【 】(分数:2.00)A.1,2 回车 B.12 回车C.1 回车 2 回车D.1;2 回车解析:解析:按照 scanf 函数的语法要求,格式控制字符串中的非格式控制符必须原样输入。显然本题中的非格式控制符是“逗号”,只有选项 A 中有“逗号”。5
7、.有以下程序段: int a,b,c; a=10;b=50;c=30; if(ab)a=b,b=c;c=a; printf(“a=d b=d c=dn“,a,b,c); 程序的输出结果是 【 】(分数:2.00)A.a=10 b=50 c=10 B.a=10 b=50 c=30C.a=10 b=30 c=10D.a=50 b=30 c=50解析:解析:在 if(表达式)后面如果有多条语句,需要用花括号括起来,若没有括起来,则第一个分号后的语句便不是 if 语句。此题中的条件为 ab,即 1050,显然条件不成立,所以程序将跳过 if 语句,执行 if 语句的后续语句,将变量 a 的值 10 赋
8、给变量 c,接着执行后面的输出语句,所以最后的答案为选项 A。6.已知 char sr20;int i;,从键盘向数组 sr 输入一个字符串的正确语句是 【 】(分数:2.00)A.gets(sr); B.gets(sr20);C.for(i=0;inext; q=sprior; while(p!=q& ) if(p 一data=qdata) ; q=q 一prior; else j=0; return(j); (分数:2.00)_正确答案:(正确答案:j p=p 一next)解析:31.下面算法的功能是_。 LinkList ListListDemo(ListList &L)L 是不带头节点
9、的单链表 Inode*q,*p; if(L&Lnext) q=L; L=L 一next; p=L: while(pnext) p=p 一next; p 一next=q; p 一next=NULL; return L:(分数:2.00)_正确答案:(正确答案:删除单链表的第 1 个节点)解析:32.下列算法的时间复杂度是_。 s=0: for(i=0;i_正确答案:(正确答案:O(n 2 )解析:33.下列函数的功能是求链表长度,填空完成程序。 struct node char ch; struct node*link; ; str(struct node*p) int ; while(p!=N
10、ULL) ; count+: return(count); (分数:2.00)_正确答案:(正确答案:count=0 p=p 一next)解析:五、程序设计题(总题数:2,分数:4.00)34.求 an=a+aa+aaa+的值,其中 a 是一个数字。例如:2+22+222+2222+22222(此时 n=5),n 的值由键盘输入。(分数:2.00)_正确答案:(正确答案:#inelude main() int a,n,i=1,sn=0,tn=0; printf(“a,n=:“); scanf(“d,d“,&a,&n); while(idata=x)n+; p=p 一next; return(n); )解析: