二级C语言笔试311
(总分100, 做题时间90分钟)
一、选择题
一、选择题(下列各题A)、B)、C)、D) 四个选项中,只有一个选项是正确的。)
1. 
在软件设计中,不属于过程设计工具的是 ______。
A PDL(过程设计语言)
B PAD图
C N-S图
D DFD图
    分值: 2
答案:C
[解析] DFD(Data Flow Diagram)是数据流图结构化分析的常用工具。
   软件设计中,常见的过程设计工具如下。
   (1)图形工具:程序流程图,N-S,PAD,HIPO
   (2)表格工具:判定表
   (3)语言工具:PDL(过程设计语言)
2. 
下列选项中,合法的C语言关键字是 ______。
A VAR
B cher
C integer
D default
    分值: 2
答案:D
[解析] 本题考查C语言基本知识。本题中default是C语言的关键字。
3. 
以下程序的输出结果是 ______。        # defineSQR(X) X*X    main()    {  int a=10,k=2,m=1;    a/=SQR(k+m)/SQR(k+m);    printf("d\n",a);    }
A 16
B 2
C 9
D 1
    分值: 2
答案:D
[解析] 本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:
   a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)
    =10/(2+2+0+2+1)=10/7/1。
4. 
若有以下说明和语句:    int  c[4][5],(*p)[5];    p=C;    能够正确引用c数组元素的是 ______。
A p+1
B *(p+1)
C *(p+1)+3
D *(p[0]+2)
    分值: 2
答案:D
[解析] p是指向一个一维数组的指针,选项A、B和C中都是地址,而非数组元素。选项D正确。
5. 
x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是 ______。
A INPUT x、y、z;
B scanf("%d %d %d",&x,&y,&;
C scanf("%d %d %d",x,y,;
D read("%d %d %d",&x,&y,&;
    分值: 2
答案:B
[解析] 选项A和选项D都不是C语言中的输入方法,选项C中的变量名前面缺少取地址符“&”。
6. 
若有以下程序段:    int m=0,n=0;char c='a';    scanf("%d %c %d",&m,&c,&n);    printf("%d,%c,%d\n",m,c,n);    若从键盘上输入:10A10<回车>,则输出结果是 ___
___。
A 10,A,10
B 16,a,10
C 10,a,0
D 10,A,0
    分值: 2
答案:A
[解析] scanf函数为格式输入函数,执行该函数后对变量m、n和c重新赋值,scanf的格式字符为"%d c% d",键盘输入为10A10,所以m=10、c='A'、n=10。
7. 
在16位C编译系统上,若定义long a;,则能给变量a赋值40000的正确语句是 ______。
A a=20000+20000;
B a=4000*10;
C a=30000+10000;
D a=4000L*1OL;
    分值: 2
答案:D
[解析] 本题中a是长整型变量,故应将一个长整型常量赋值给a,选项A、B、C中的数值的末尾都没有加L或1,所以不正确。
8. 
有以下程序:    main()    {  int a[3][3],*p,i;      p=&a[0][0];      for(i=0;i<9;i++)p[i]=i;      for(i=0;i<3;i++)printf("%d",a[1][i]);    }    程序运行后的输出结果是 ______。
A 0  1  2
B 1  2  3
C 2  3  4
D 3  4  5
    分值: 2
答案:D
[解析] p指向的a的首地址,由于C语言是行优先存储的,一维数组p就依次存放了a中从第0行到第2行的所有元素,因此a[1][i]就对应了p[3]~p[5]。
9. 
已有定义:int i,a[10],*p;,则合法的赋值语句是 ______。
A p=100;
B p=a[5];
C p=a[2]+2;
D p=a+2;
    分值: 2
答案:D
[解析] 因p是指针变量,故选项D正确。
10. 
下列描述中正确的是 ______。
A 程序就是软件
B 软件开发不受计算机系统的限制
C 软件既是逻辑实体,又是物理实体
D 软件是程序、数据与相关文档的集合
    分值: 2
答案:D
[解析] 程序是软件的一部分,软件是一种逻辑实体,它的开发、运行都依赖计算机系统,因此出现了软件的移植问题。
11. 
以下程序运行后的输出结果是 ______。    main()    {    int a=1,b=2,c=3;    if(c=a) printf("%d\n",c);    else printf("%d\n",b);    }
A 2
B 3
C 5
D 1
    分值: 1
答案:printf函数的执行顺序B
[解析] 根据if条件,语句c=a的值为1,因此输出c值为3。
12. 
数字字符0的ASCII值为48,若有以下程序:    main()    {    char a='1',b='2';    printf("%c,",b++);    printf("%d\n",b-a);    }    程序运行后的输出结果是 ______。
A 3,2
B 50,2
C 2,2
D 2,50
    分值: 1
答案:C
[解析] b++是先使用b再给b赋值1,因此是先输出2,再将b加1,b='3',则第一条语句输出2,第二条语句输出2。
13. 
下列叙述中正确的是 ______。
A 程序设计就是编制程序
B 程序测试必须由程序员自己去做
C 程序经调试改错后还应进行再测试
D 程序经调度改错后不必进行再测试
    分值: 1
答案:C
[解析] 软件测试包括需求分析、结构功能模块设计、编制程序等阶段。程序的测试可以由专门的测试人员来完成。程序经调试改错后还应进行再测试。
14. 
以下能正确定义且赋初值的语句是 ______。
A iht=n1=n2=10;
B char c=32;
C float f=f+1.1;
D double x=12.3E2.5
    分值: 1
答案:A
[解析] B选项中32应加单引号,C选项中f=f+1.1两边都是不定值,不正确;D中E后要用整型数,且E后必须要有数字。
15. 
对长度为n的线性表进行顺序查,在最坏的情况下所需要的比较次数为 ______。
log2n
B n/2
C n
D n+l
    分值: 1
答案:C
[解析] 顺序查的最坏情况是所的元素在线性表的最后,因此查的比较次数是线性表的长度,即n。
16. 
有以下程序:    main()    {  int i=10,j=1;    printf("%d,%d\n",i--,++j);    }    执行后的输出结果是 ______。
A 9,2
B l0,2
C 9,1
D 10,1
    分值: 1
答案:B
[解析] 本题中--运算符位于运算变量i右侧,++运算符位于变量j的左侧,所以先输出i的当前值10,然后i再加 1;j先加1得2,然后输出。
17. 
有以下程序:    main()    {char  al='M'a2='m';    printf("%c\n",(al,a2));}    以下叙述中正确的是 ______。
A 程序输出大写字母M
B 程序输出小写字母m
C 格式说明符不足,编译出错
D 程序运行时产生出错信息
    分值: 1
答案:B
[解析] 输出项表是一个逗号表达式,它的值为a2,因此输出的是a2的值。