国家二级C语言机试(选择题)模拟试卷246
选择题
1.以下叙述中正确的是(B)
A. 在C语言程序设计中,所有函数必须保存在一个源文件中
B. 在算法设计时,可以把复杂任务分解成一些简单的子任务
C. 只要包含了三种基本结构的算法就是结构化程序
D. 结构化程序必须包含所有的三种基本结构,缺一不可
解析:模块化设计思想,就是把复杂的任务分成简单的子任务,用函数或者过秤描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有若干个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一定全要包括这三种结构,而算法不等于程序。
2.下面叙述中正确的是(A)
A. 线性表是线性结构
B. 栈与队列是非线性结构
C. 线性链表是非线性结构
D. 二叉树是线性结构
解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。
3.以下叙述中正确的是(B)
A. C程序中的每一行只能写一条语句
B. 简单C语句必须以分号结束
C. C语言程序中的注释必须与语句写在同一行
D. C语句必须在一行内写完
解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分号,分号是C语句的必要组成部分。
4.以下选项中作为C语言合法常量的是(A)
A. -80
B. -080
C. -8e1.0
D. -80.0e
解析:本题考查C语言中的常量,C语言中字母e或E之前必须有数字,且e或E后面的指数必须为整数。选项A表示负数-80;选项B中以数字0开始表示的是八进制数,八进制数数字范围是从0-7,不包括8;选项C是一个指数浮点,字母e后面应该是整型指数;选项D中字母e后面没有整数,不满足C规范。
5.以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
void sort(int a[],int n)
{ int i,j,t;
for(i=0;i<n—l;i++)
for(j=i+1;j<n;j++)
if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(&aa[3],5);
for(i=0;i<10;i++)printf(\\(C)
A. 1,2,3,4,5,6,7,8,9,10,
B. 10,9,8,7,6,5,4,3,2,1,
C. 1,2,3,8,7,6,5,4,9,10,
D. 1,2,10,9,8,7,6,5,4,3,
解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数“sort(&aa[3],5);”,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。
6.结构化程序昕要求的基本结构不包括(B)
A. 顺序结构
B. GOTO跳转
C. 选择(分支)结构
D. 重复(循环)结构
解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。
7.以下叙述中正确的是(C)
A. a表示一个字符常量
B. ’\0’表示字符0
C. 表达式:’a>’b’的结果是“假”
D. ’\’’’是非法的
解析:字符常量可以参加关系运算,按照其存储的ASCII码值进行比较。 ’a’>’b’不成立,值为假。而’\0’表示NULL,ASCII码值为0。
8.设顺序表的长度为n。下列算法中,最坏情况下比较次数等于n(n-1)/2的是(A)
A. 快速排序
B. 堆排序
C. 顺序查找
D. 寻找最大项
解析:假设线性表的长度为n,则在最坏情况下,快速排序法的最坏情况比较次数也是n(n-1)/2;堆排序,无论是否最坏都是比较O(nlog2n)次,所以选项A正确。
9.耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是(B)
A. 提高耦合性降低内聚性有利于提高模块的独立性
B. 降低耦合性提高内聚性有利于提高模块的独立性
C. 耦合性是指一个模块内部各个元素间彼此结合的紧密程度
D. 内聚性是指模块问互相连接的紧密程度
解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于模块的独立性。
10.检查软件产品是否符合需求定义的过程称为(A)
A. 确认测试
B. 集成测试
C. 验证测试
D. 验收测试
解析:确定测试是验证软件的功能和性能及其他特性是否满足了需求规格说明书中确定的各种需求以及软件配置是否完全、正确。
11.有以下程序:
#include<stdio.h>
main()
{
int a=1,b=3,C=5;
int*p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf(\\(C)
A. 1
B. 2
C. 3
D. 4
解析:该程序中int*p1=&a,*p2=&b,*p=&c;指定义3个指针变量,并赋值,即使p1指向a;p2指向b;p指向c。*p=*p1*(*p2);语句是给p所指的存储单元c赋值,就是p1所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a*b,等价于c=1*3=3,因此C选项正确。
12.有以下函数:
int fun(char *x,char*y)
{ int n=0;
while((*x==*y)&&*x!=’\0’)
{x++;
y++;
n++:
}
return n;
}
函数的功能是( )。(C)
A. 将y所指字符串赋给x所指存储空间
B. 查找x和y所指字符串中是否有’\0’
C. 统计x和y所指字符串中最前面连续相同的字符个数
D. 统计x和y所指字符串中相同的字符个数
解析:本题中由循环条件可知,遇到’\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。
13.若有以下程序
#include
main()
{ char c1, c2;
c1=’C’+’8’-’3’; c2=’9’-’0’;
本文档预览:3600字符,共8158字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载