1、二级 C 语言笔试-286 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.有以下函数fun(char *a, char *B) while(*a!=/0)&(*b!=/0)&(*a=*B) )a+; b+;return(*a-*B) ;该函数的功能是(分数:1.00)A.计算 a 和 b 所指字符串的长度之差B.将 b 所指字符串复制到 a 所指字符串中C.将 b 所指字符串连接到 a 所指字符串后面D.比较 a 和 b 所指字符串的大小2.下列叙述中不正确的是(分数:1.00)A.数据库技术的根本目标是要解决数据共享的问题B.数据库系统
2、中,数据的物理结构必须与逻辑结构一致C.数据库设计是指设计一个能满足用户要求,性能良好的数据库D.数据库系统是一个独立的系统,但是需要操作系统的支持3.以下能正确定义一维数组的选项是(分数:1.00)A.int num;B.#define N 100int numN;C.intnum0100;D.int N=100;int numN4.有以下程序:#inClude stdlib.hstruct NODEint num;struct NODE *next;main()Struct N00E *p,*q,*r;int sum;0;p=(struct NODE *)malloc(sizeof(str
3、uct NODE);q=(struct NODE *)malloc(sizeof(struct NODE);r=(struct NODE *)malloc(Sizeof(struct NODE);p-num=1;q-num=2;r-num=3;p-next=q;q-next=r;r-next=NULL;sum+=q-next-num;sum+=p-num;printf(“%d/n“,sum);执行后的输出结果是(分数:1.00)A.3B.4C.5D.65.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是(分数:1.00)A.1B.2C.3D
4、.46.以下不能正确计算代数式 sm2()值的 C 语言表达式是(分数:1.00)A.1/3*sin(1/2)*sin(1/2)B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0/2),2)7.设有如下说明typedef structint n; char c;double X;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是(分数:1.00)A.STD tt2=1,A,62,2,B,75;B.STD tt2=1,“A“,62,2,“B“,75;C.struct tt2=1,A),2,B;D.struct tt2=1
5、,“A“,62.5,2,“B“,75.0;8.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是(分数:1.00)A.字符 AB.字符 aC.字符 eD.非法的常量9.下列关于 C 语言用户标识符的叙述中正确的是(分数:1.00)A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头10.软件调试的目的是_。(分数:1.00)A.发现错误B.改正错误C.
6、改善软件的性能D.挖掘软件的潜能11.有以下程序main()int a=666,b=888;printf(“%d/n“,a,B) ;程序运行后的输出结果是(分数:1.00)A.错误信息B.666C.888D.666,88812.有定义语句:int b;char c10;,则正确的输入语句是(分数:1.00)A.scanf(“%d%s“,&b,&C) ;B.scanf(“%d%s“,&b,C.;C) scanf(“%d%s“,b,C) ;D.s13.在 C 语言中,形参的缺省存储类是(分数:1.00)A.autoB.registerC.staticD.extern14.数据库是_的集合,它具有统
7、一的结构形式并存放于统一的存储介质内,可被各个应用程序所共享。(分数:1.00)A.视图B.消息C.数据D.关系15.规范化理论中,分解_主要是消除其中多余的数据相关性。(分数:1.00)A.关系运算B.内模式C.外模式D.视图16.线性表的链式存储结构是一种_的存储结构。(分数:1.00)A.随机存储B.顺序存储C.索引结构D.散列结构17.对建立良好的程序没计风格,下面描述正确的是_。(分数:1.00)A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法即可C.充分考虑程序的执行效率D.程序的注释可有可无18.以下程序段的输出结果是int a=1234;printf(“%2d/n“,
8、(分数:1.00)A.;A) 12B.34C.1234D.提示出错、无结果19.没有如下定义:Struct skint a;float b;data;int *p;若要使 P 指向 data 中的 a 域,正确的赋值语句是(分数:1.00)A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;20.若有以下程序:main()int k=2,i=2,m;m=(k+=i*=k);printf(“%d,%d/n“,m,i);执行后的输出结果是(分数:1.00)A.8,6B.8,3C.6,4D.7,421.有以下程序#include.string.hmain()char
9、*p=“abcde/ofghjik/0“;printf(“%d/n“,strlen(p);程序运行后的输出结果是(分数:1.00)A.12B.15C.6D.522.阅读以下函数fun(char *sl,char *s2)int i:0;while(sli=s2i&s2i!=/0) i+;return(sli=/0&s2i=/0);此函数的功能是(分数:1.00)A.将 s2 所指字符申赋给 s1B.比较 s1 和 s2 所指字符串的大小,若 s1 比 s2 的大,函数值为 1,否则函数值为 0C.比较 s1 和 s2 所指字符串是否相等,若相等,函数值为 1,否则函数值为 oD.比较 s1 和
10、 s2 所指字符串的长度,若 s1 比 s2 的长,函数值为 1,否则函数值为 o23.若有以下定义和语句:int s45,(*ps)5;ps=s;则对 s 数组元素的正确引用形式是(分数:1.00)A.ps+1B.*(ps+3)C.ps02D.*(ps+1)+324.有以下程序:main()int x=0,y=5,z=3;while(z-0&+x5) y=y-1;printf(“%d,%d,%d/n“,x,y,z);程序执行后的输出结果是(分数:1.00)A.3,2,0B.3,2,-1C.4,3,1D.5-2,-525.有以下函数定义:void fun(int n, double x) 若以
11、下选项中的变量都已正确定义并赋值,则对函数 fun 的正确调用语句是(分数:1.00)A.fun(int y,double m);B.k=fun(10,12.5);C.fun(x,n);D.void fun(n,x);26.有以下程序main()int a=5,b=4,c=3,d=2;if(abC) printf(“%d/n“,D) ;else if(c-1=D) =1)printf(“%d/n“,d+1);elseprintf(“%d/n,d+2);执行后输出的结果是(分数:1.00)A.2B.3C.4D.编译时有错,无结果27.若有以下程序段(n 所赋的是八进制数)int m=32767,
12、n=032767;printf(“%d,%O/n“,m,n);执行后输出结果是(分数:1.00)A.32767,32767B.32767,032767C.32767,77777D.32767,07777728.有以下程序main()char a=a,b;printf(“%c,“,+(分数:1.00)A.;printf(“%c/n“。b=a+);程序运行后的输出结果是 A) b,bB.b,cC.a,bD.a,c29.有以下结构体说明和变量定义,如图所示,指针 p、q、r,分别指向此链表中的 3 个连续结点。Struct nodeint data; Struct node *hext; *p,*q
13、,*r;(分数:1.00)A.p-next=q-next;B.p-next=p-next-next;C.p-next=r;D.p=q-next;30.有以下程序void f(int *x,int *y)int t;t=*X; *X=*y; *y=t;main()int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a; q=&a7);while(pq)f(p,q); p+; q-; for(i=0; i8; i+) printf(“%d,“,ai);程序运行后的输出结果是(分数:1.00)A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5
14、,6,7,8,D.8,7,6,5,4,3,2,1,31.下面不属于软件工程的三个要素的是_。(分数:1.00)A.工具B.过程C.方法D.环境32.下列关于栈的描述中错误的是(分数:1.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针33.在 16 位 C 编译系统上,若定义 long a;,则能给 a 赋 40000 的正确语句是(分数:1.00)A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*1OL;34.有以下程序main()int a=i,b;for(b=1;b=
15、10;b+)if(a=8) break;if(a%2=1)a+=5; continue; a-=3;printf(“%d/n“,B) ;程序运行后的输出结果是(分数:1.00)A.3B.4C.5D.635.有以下程序float fl(float n)return n*n; float f2(float n)return 2*n;main()float(*p1)(float),(*p2)(float),(*t)(float),y1,Y2;p1=f1; p2=f2;y1=p2(p1(2.O);t=p1; p1=p2; p2=t;y2=p2(pl(2.0);printf(“%3.0f,%3,Of/n
16、“,y1,y2);程序运行后的输出结果是(分数:1.00)A.8,16B.8,8C.16,16D.4,836.在软件设计中,不属于过程设计工具的是(分数:1.00)A.PDL(过程设计语言)B.PAD 图C.N-S 图D.DFD 图37.s1 和 s2 已正确定义并分别指向两个字符串。若要求:当 s1 所指串大于 s2 所指串时,执行语句 S:则以下选项中正确的是(分数:1.00)A.if(s1s2)S;B.if(strcmp(s1,s2)S;C.if(strcmp(s2,s1)0)S:D.if(strcmp)(s1,s2)0)S;38.以下程序的功能是:按顺序读入 10 名学生 4 门课程的
17、成绩,计算出每位学生的平均分并输出,程序如下:main()int nk;float scoresum,ave;sum=0.0;for(n=1;n=10;n+)for(k=1;k=4;k+)scanf(“%f“,&score);sum+=score;ave=sum/4.0;printf(“NO%d:%f/n“,n,ave);上述程序运行后结果不正确,调试中发现有条语句出现在程序中的位置不正确。这条语句是(分数:1.00)A.sum=0.0;B.sum+=score;C.ave=sun/4.0;D.printf(“NO%d:%f/n“,n,ave);39.下面程序的功能是输出以下形式的金宁塔图案:
18、*main()int i,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+)printf(“ “);for(j=1;j=( );j+)printf(“*“);printf(“/n“);在下划线处应填入的是(分数:1.00)A.iB.2*i-1C.2*i+1D.i+240.以下程序的输出结果是main()int b33=0,1,2,O,l,2,0,1,2,i,j,t=1;for(i=0;i3;i+)for(j=i;j=i;j+) t=t+bibjj;printf(“%d/n“,t);(分数:1.00)A.3B.4C.1D.941.以下程序中,while 循环的循环次数是main
19、()int i=0;while(i10)if(i1)continue;if(i=5)break;i+;(分数:1.00)A.1B.10C.6D.死循环,不能确定次数42.以下程序输出的结果是#include stdiohmain()int i=010,j=10;printf(“%d,%d/n“,+i,j-);(分数:1.00)A.11,10B.9,10C.010,9D.10,943.以下程序十函数 scmp 的功能是返回形参指针 s1 和 s2 所指字符串中较小字符串的首地址:#include stdio.h#include string.hchar *scrap(char *s1,char
20、*s2)if(strcmp(s1,s2)0)return(s1);else return(s2);main()int i; char string20, str320;for(i=0;i3;i+) gets(stri);strcpy(string,scmp(str 0,str1);/*库函数 strcpy 对宁符中进行复制*/strcpy(string,scmp(string,str2);printf(“%s/n“,string);若运行时依次输入:abcd、4bba 和 abc 三个宁符市,则输结果为(分数:1.00)A.abcdB.abbaC.abcD.abca44.有以下程序# incl
21、ude stdio.hmain()int a=1,2,3,4,5,6,7,8,9,10,11,12,*p=a+5,*q=NULL;*q=*(p+5);printf(“%d %d /n“,*p,*q);程序运行后的输出结果是(分数:1.00)A.运行后报错B.6 6C.6 11D.5 1045.有以下程序main()union unsigned int n;unsigned char C;ul;u1.C=A;printf(“%c/n“,u1.n);执行后输出结果是(分数:1.00)A.产生语法错B.随机值C.AD.6546.有以下程序,其中函数 f 的功能是将多个字符串按字典顺序排序#inclu
22、de string,hvoid f(char *p, int n)char *t;int i,j;for(i=0; in-1; i+)for(j=i+1;jn; j+)if(strcmp(pi,pj)0)t=pi;pi=pj; pj=t;main()char *p5=“abc“,“aabdfg“,“abbd“,“dcdbe“,“cd“;f(p,5);printf(“%d/n“。strlen(p1);程序运行后的输出结果是(分数:1.00)A.2B.3C.6D.447.有以下程序struct STUchar name10;int num;float TotalScore;vold f(struc
23、t STU *p)struct STU s2=“SunDan“,20044,550),“Penghua“20045,537,*q=s+p; +q; *p=*q;main()struct SrU s3=“YangSan“,20041,703),“LiSiGuo“,20042,580;f(s);printf(“%s %d %3.of/n“,S1name,s1num,s1Totalscore);程序运行后的输出结果是(分数:1.00)A.SunDan 20044 550B.Penghua 20045 537C.USiGuo 20042 580D.SunDan 20041 70348.有以下程序int
24、 *f(znt *x,int *y)if(*x*y)return X;elsereturn y;main()int a=7,b=8,*p,*q,*r;p=&a; q=&b;r=f(p,q);printf(“%d,%d%d/n“,*p,*q,*r);执行后输出结果是(分数:1.00)A.7,8,8B.7,8,7C.8,7,7D.8,7,849.算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性。算法的这个性质称为_。(分数:1.00)A.可行性B.有穷性C.正确性D.确定性50.有以下程序段typedef struct NODEint num; struct NOD
25、E *next;OLD;以下叙述中正确的是(分数:1.00)A.以上的说朗形式非法B.NODE 是一个结构体类型C.OLD 是一个结构体类型D.OLD 是一个结构体变量二、填空题(总题数:20,分数:50.00)51.解题方案的准确而完整的描述称为 1。(分数:2.00)填空项 1:_52.在数据结构中,顺序存储结构的数据元素所占的存储空间是 1 的。(分数:2.00)填空项 1:_53.诊断和改正程序中错误的工作通常称为 1。(分数:2.00)填空项 1:_54.数据库系统在其内部分为三级模式,即概念模式、内模式和外模式。其中, 1 给出了数据库物理存储结构与物理存取方法。(分数:2.00)
26、填空项 1:_55.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、 1 和自定义完整性。(分数:2.00)填空项 1:_56.以下程序运行后的输出结果是_。main()int x=0210;printf(“%X/n“,x);(分数:2.00)填空项 1:_57.以下程序运行后的输出结果是_。main()int a=1,b=2,c=3;if(c=A) printf(“%d/n“,C) ;else printf(“%d/n“,B) ;(分数:2.00)填空项 1:_58.以下程序运行后的输出结果是_。main()int a=3,b=4,c=5,t=99;i(ba & aC) t=a;
27、a=c;c=t;if(ac & bC) t=b;b=a;a=t;printf(“%d%d%d/n“,a,b,c) ;(分数:2.00)填空项 1:_59.以下程序运行后的输出结果是_。main()int i,m=0,n=0,k=0;for(i=9; i=11;i+)switch(i/10)case 0: m+;n+;break;case 10: n+;break;default: k+;n+;printf(“%d %d%d/n“,m,n,k);(分数:2.00)填空项 1:_60.执行以下程序后,输出#号的个数是_。#include stdio.hmain()int i,j;for (i=1;
28、 i5; i+)for(j=2;j=i;j+)putchar(#);(分数:2.00)填空项 1:_61.以下程序运行后的输出结果是_。main()char a=“Language“,b=“Programe“;char *p1, *p2;int k;p1=a; p2=b;for(k=0;k=7;k+)if(*p1+k)=*p2+k)printf(“%c“,*(p1+k);(分数:3.00)填空项 1:_62.若有以下程序int f(int x,int y)return(y-x)*x; main()int a=3,b=4,c=5,d;d=f(f(3,4),f(3,5);ptintf(“%d/n“
29、,D) ;执行后输出结果是_。(分数:3.00)填空项 1:_63.以卜函数 sstrcat()的功能是实现宁符串的连接,即将 t 所指字符串复制到 s 所指字符串的尾部。例如:s 所指字符串为 abcd,t 所指字符申为 efgh,函数调用后 s 所指字符串为 abcdefgh。请填空。#include string.hvoid sstrcat(char *s, char *t)int n;n=strlen(s);while(*(s+n)= )s+;t+;(分数:3.00)填空项 1:_64.以下程序的输出结果是_。main()int x;0;sub(&x,8,1);printf(“%d/n
30、“,x);sub(int *a,int n,int k)if(k=n) sub(a,n/2,2*k);*a+=k;(分数:3.00)填空项 1:_65.以下程序运行后的输出结果是_。#include strlng.hmain()char ch=“abc“,x34; int i;for(i=0;i3;i+) strcpy(xi,ch);for(i=0;i3;i+) printf(“%s“,&xii);printf(“/n“);(分数:3.00)填空项 1:_66.以下程序用业统计文件十字符个数。请填空。#include “stdio.h“main()FTLE *fp; long num=OL;i
31、f(fp=fopen(“fname.dat“,“r“)=NUlL)pirntf(“Open error/n“); exit(0);while( )fgetc(fp); num+; printf(“num=%1d/n“,num-1);fclose(fp);(分数:3.00)填空项 1:_67.下面程序的运行结果是_。int f( int a, int n)if(n1) return a0+f(&a1,n-1);else return a0;main ()int aa3=1,23,s;s=f(&aa0,3);printf(“%d/n“,s);(分数:3.00)填空项 1:_68.以下程序巾给指针
32、p 分配三个 double 型动态内存单元,请填空。# includestdio.hmain ()dOuble *p;p=(double*)malloc( );p0=1.5;p1=2.5;p2=3.5printf(“%f%f%f/n“,p0,p1,p2);(分数:3.00)填空项 1:_69.已有定义如下:struct nodeint data;struct node *next;*p;以下语句调用 malloc 函数,使指针 p 指向一个具有 stmct node 类型的动态存储空间。请填空。p=(struct node *)malloc( );(分数:3.00)填空项 1:_70.若 fp
33、 已正确定义为个文件指针,d1.dd 为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(_);。(分数:3.00)填空项 1:_二级 C 语言笔试-286 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:50.00)1.有以下函数fun(char *a, char *B) while(*a!=/0)&(*b!=/0)&(*a=*B) )a+; b+;return(*a-*B) ;该函数的功能是(分数:1.00)A.计算 a 和 b 所指字符串的长度之差B.将 b 所指字符串复制到 a 所指字符串中C.将 b 所指字符串连接到 a 所指字符串后
34、面D.比较 a 和 b 所指字符串的大小 解析:解析 本题要求阅读的代码是一个函数,阅读之前先要看清函数的定义,该函数有两个参数,都是字符指针,这说明它接收的是两个字符串该函数没有定义返回类型,C 语言规定函数的返回类型为int 时可以省略,所以切不可将其看成是无返回类型的 void 型函数,它是 int 型函数。函数体中除了返回语句外,只有一条 while 循环语句,该循环的循环条件为(*a!=/0&(*b!=/0)& (*a=*B) ,即当a 和 b 所指处都不是字符结束符/0并且 a 和 b 所指处的内容相等时执行循环。而循环体中只是简单地将指针 a 和 b 同时往后移动 1 位。循环结
35、束后返回 a 所指内容减去 b 所指内容的差。换个角度去考虑,也就是说当字符串 a 或 b 中有一个结束了或者是它们的相同位置中有一个字符不同时,则返回该位置两个字符之差。若两者长度相同而且所有对应字符都相同的话, 最后返回的是 /0/-/0=0,否则的话就返回两个字符串第一对不相同的字符之差这时应该可以看出来,这个函数实现的是对两个字符串的比较。所以,4 个选项中 D 正确。2.下列叙述中不正确的是(分数:1.00)A.数据库技术的根本目标是要解决数据共享的问题B.数据库系统中,数据的物理结构必须与逻辑结构一致 C.数据库设计是指设计一个能满足用户要求,性能良好的数据库D.数据库系统是一个独
36、立的系统,但是需要操作系统的支持解析:解析 B 选项错误,原因是,数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。3.以下能正确定义一维数组的选项是(分数:1.00)A.int num;B.#define N 100int numN; C.intnum0100;D.int N=100;int numN解析:解析 选项 A 定义数组时省略了长度,而 C 语言中规定,只有在定义并同时进行初始化时,数组的长度才可以省略,数组的长度为初始化时候的成员个数,故选项 A 错误:在 C 语言中规定,数组的长度必须是一个整数或整型常量表达式,故选项 C 不正确;定义时数组的长度不能使用变量表示,
37、故选项 D 不正确,所以,4 个选项中选项 B 符合题意。4.有以下程序:#inClude stdlib.hstruct NODEint num;struct NODE *next;main()Struct N00E *p,*q,*r;int sum;0;p=(struct NODE *)malloc(sizeof(struct NODE);q=(struct NODE *)malloc(sizeof(struct NODE);r=(struct NODE *)malloc(Sizeof(struct NODE);p-num=1;q-num=2;r-num=3;p-next=q;q-next=
38、r;r-next=NULL;sum+=q-next-num;sum+=p-num;printf(“%d/n“,sum);执行后的输出结果是(分数:1.00)A.3B.4 C.5D.6解析:解析 本题中定义了一个结点 struct NODE,在主函数中定义了三个结点变量指针 p、q 和 r,接着通过 malloc 函数分配了三个结点并让 p、q 和 r 分别指向他们,再接着给 p、q 和 r 所指向的结点的hum 域赋值为 1、2、3,然后让结点 p 指向 q,让 q 指向 r,r 指向 NULL。显然 q-next-num 的值为指针 r 所指向结点的 num 域的值为 3,p-num 的值为
39、指针 p 所指向结点的 num 域的值为 1,故最后输出 s的值为 3+1=4。所以,4 个选项中选项 B 符合题意。5.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是(分数:1.00)A.1 B.2C.3D.4解析:解析 因为条件运算符的结合方向为“自右至左”,所以表达式 ab?a:cd?c:d 相当于ab?a:(cd?c:D) 。由于 a=1,b=4,所以 ab 的结果为“真,所以整个表达式的值为 a 的值 1。所以,4 个选项中选项 A 符合题意。6.以下不能正确计算代数式 sm2()值的 C 语言表达式是(分数:1.00)A.1/
40、3*sin(1/2)*sin(1/2) B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0/2),2)解析:解析 当运算符“/”的左右两边运算分量都是整数的时候,运算结果也是一个整数,如果除不净则舍去小数部分。若两个运算分量有一个是实数,才会返回真正除法上的实数结果。选项 A 中传递给sin()函数的参数表达式 1/2 计算出来的结果为整数 0,所以不能正确计算出题目要求的值,而其余选项中,除号两边都至少有一个运算分量是实数,故应该选择 A。7.设有如下说明typedef structint n; char c;double
41、X;STD;则以下选项中,能正确定义结构体数组并赋初值的语句是(分数:1.00)A.STD tt2=1,A,62,2,B,75; B.STD tt2=1,“A“,62,2,“B“,75;C.struct tt2=1,A),2,B;D.struct tt2=1,“A“,62.5,2,“B“,75.0;解析:解析 本题定义了一个结构体类型并自定义类型名为 STD,用户自定义类型后,就可以利用它进行变量与数组的定义。定义的方法,与 c 语言中其他类型的定义完全一样,定义结构型数组并赋初值时,每个元素用一对“”和“”括起来,字符型元素用“”括起来,选项 A,B、C、 D 中只有选项 A 符合条件。所以
42、,A 选项为所选。8.已知大写字母 A 的 ASCII 码值是 65,小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量/101是(分数:1.00)A.字符 A B.字符 aC.字符 eD.非法的常量解析:解析 本题考查的知识点是转义字符。题目中的关键是八进制 101 的十进制是多少八进制的101 转换为十进制为 65,也就是字符 A 的 ASCII。9.下列关于 C 语言用户标识符的叙述中正确的是(分数:1.00)A.用户标识符中可以出现下划线和中划线(减号)B.用户标识符中不可以出现中划线,但可以出现下划线 C.用户标识符中可以出现下划线,但不可以放在用户标识符的开头D.用
43、户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头解析:解析 在 C 语言中,合法的标识符由字母,数字和下划线组成(故选项 A 不正确),并且第一个字符必须为字母或者下划线(故选项 B 和选项 D 不正确)所以,B 选项为所选10.软件调试的目的是_。(分数:1.00)A.发现错误B.改正错误 C.改善软件的性能D.挖掘软件的潜能解析:解析 在对程序进行了测试以后进入程序调试调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。11.有以下程序main()int a=666,b=888;printf(“%d/n“,a,B) ;程序运行后的输出结
44、果是(分数:1.00)A.错误信息B.666 C.888D.666,888解析:解析 程序中的 printf()函数的输出格式部分只说明了一个%d,而输出成员列表却有两个成员 a和 b,在这里将只输出第一个成员 a 值为 666,所以,4 个选项中选项 B 符合题意。12.有定义语句:int b;char c10;,则正确的输入语句是(分数:1.00)A.scanf(“%d%s“,&b,&C) ;B.scanf(“%d%s“,&b, C.;C) scanf(“%d%s“,b,C) ;D.s解析:解析 scanf 函数的第一个参数是格式控制字符串,该字符串中所出现的格式控制符必须与 scanf函
45、数的笫二个及其后面的参数一一对应本题中四个选项的格式控制字符串都是 “%d%s“,其中包括两个格式控制符%d 和%s,它们分别表示输入一个十进制整数和输入一个字符串,其对应的参数应该分别为一个整型变量的地址和一个字符型数组的首地址。变量的地址可以通过对变量做取地址(&)运算来得到,而宇符型数组的首地址则可以直接通过数组名来得到。所以,4 个选项中选项 B 符合题意。13.在 C 语言中,形参的缺省存储类是(分数:1.00)A.auto B.registerC.staticD.extern解析:解析 在 C 语言中,行参的缺省存储类为 auto。所以,4 个选项中 A 为所选14.数据库是_的集
46、合,它具有统一的结构形式并存放于统一的存储介质内,可被各个应用程序所共享。(分数:1.00)A.视图B.消息C.数据 D.关系解析:解析 数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系-故答案为 C。15.规范化理论中,分解_主要是消除其中多余的数据相关性。(分数:1.00)A.关系运算 B.内模式C.外模式D.视图解析:解析 数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。16.线性表的链式存储结构是一种_的存储结构。(分数:1.00)A.随机存储B.顺序存储 C.索引结构D.散列结构解析:解析 线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结点。此类存储方式属于顺序存储。17.对建立良好的程序没计风格,下面描述正确的是_。(分数:1.00)A.程序应简单、清晰、可读性好 B.符号名的命名只要符合语法即可C.充分考虑程序的执行效率D.程序的注释可有可无解析:解析 B 选项错误,符号名应该能反映出它所代表的实际东西,应有一定的意义,不是简单的符合语法就可以C 选项不对,应该在保证程序正确