二级C语言笔试模拟题32009-09-20 00:29一 、选择题 本题共得 (0) 分
(1)算法的空间复杂度是指
A)算法程序的长度
B)算法程序中的指令条数
C)算法程序所占的存储空间
D)执行算法需要的内存空间
正确答案: D
(2)用链表表示线性表的优点是
A)便于随机存取
B)花费的存储空间较顺序存储少
C)便于插入和删除操作
D)数据元素的物理顺序与逻辑顺序相同
正确答案: C
(3)数据结构中,与所使用的计算机无关的是数据的
A)存储结构
B)物理结构
C)逻辑结构
D)物理和存储结构
正确答案: C
(4)结构化程序设计主要强调的是
A)程序的规模
B)程序的效率
C)程序设计语言的先进性
D)程序易读性
正确答案: D
(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指
A)模块间的关系
B)系统结构部件转换成软件的过程描述
C)软件层次结构
D)软件开发过程
正确答案: B
(6)检查软件产品是否符合需求定义的过程称为
A)确认测试
B)集成测试
C)验证测试
D)验收测试
正确答案: A
(7)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是
A)控制流
B)加工
C)数据存储
D)源和潭
正确答案: A
(8)应用数据库的主要目的是
A)解决数据保密问题
B)解决数据完整性问题
C)解决数据共享问题
D)解决数据量大的问题
正确答案: C
(9)在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段
B)逻辑设计阶段
C)概念设计阶段
D)物理设计阶段
正确答案: B
(10)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是
A)数据库系统
B)文件系统
C)人工管理
D)数据项管理
正确答案: A
(11)下面四个选项中,均是不合法的用户标识符的选项是
A)A P_0 do
B)float la0 _A
C)b-a goto int
D)_123 temp int
正确答案: C
(12)以下4个选项中,不能看作一条语句的是
A);
B)a=5,b=2.5,c=3.6;
C)if(a<5);
D)if(b!=5)x=2;y=6;
正确答案: D
(13)下列说法错误的是
A)函数调用时,函数名必须与所调用的函数名字完全相同
B)实参的个数必须与形式参数的个数一致
C)实参可以是表达式,在类型上必须与形参一一对应匹配
D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)
正确答案: C
(14)有说明char *c〔〕={"European","Asian","American","African"};则下列叙述中正确的是
A)*(c+1)=′A′
B)c是一个字符型指针数组,所包含4个元素的初值分别为"European"、"Asian"、"American"和"African"
C)c〔3〕表示字符串"American"的首地址
D)c是包含4个元素的字符型指针数组,每个元素都是一个字符串的首地址
正确答案: D
(15)当把以下4个表达式用作if语句的控制表达式时,有一个选项与其他3个选项含义不同,这个选项是
A) k%2
B) k%2==1
C) (k%2) !=0
D) !k%2==1
正确答案: D
(16)若变量已正确定义并赋值,以下符合C语言语法的表达式是
A)a:=b+1
B)a=b=c+2
C)int 18.5%3
D)a=a+7=c+b
正确答案: B
(17)以下叙述中正确的是
A)构成C程序的基本单位是函数
B)可以在一个函数中定义另一个函数
C)main()函数必须放在其他函数之前
D)所有被调用的函数一定要在调用之前进行定义
正确答案: A
(18)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x‖++y&&++z;,则执行这个语句后t的值为
A)2
B)1
C)0
D)不定值
正确答案: B
(19)若有定义语句:intx=3,y=2,z=1;,表达式:z*=(x>y?++x:y+)的值是
A)4
B)0
C)1
D)3
正确答案: A
(20)以下描述中正确的是
A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C)在do-while循环体中,是先执行一次循环,再进行判断
D)do-while循环中,根据情况可以省略while
正确答案: C
(21)阅读如下程序段
#include "stdio.h"
main()
{ int x,a,b;
scanf("%d",&x);
a=b=x;
for(;x!=0;)
{ if(x<b)b=x;
if(x>a)a=x;
scanf("%d",&x);}
printf("a=%d,b=%d\n",a,b);}
现输入如下。〔注〕 :"〕"表示空格
34〕56〕23〕45〕5〕56〕7〕12〕365〕49〕48〕57〕87〕7〕6〕7569〕789〕0<Enter>
输入后输出结果是
A)a=7569,b=789
B)a=5,b=365
C)a=7,b=789
D)a=7569,b=5
正确答案: D
(22)执行以下程序后,a,b的值分别为
main()
{
int a,b,k=4,m=6,*p1=&k,*p2=&m;
a=p1==&m;
b=(*p1)/(*p2)+7;
printf("a=%d\n",a);
printf("b=%d\n",b);
}
A)-1,5
B)1,6
C)0,7
D)4,10
正确答案: C
(23)下面说明不正确的是
A)char a〔10〕="china";
B)char a〔10〕,*p=a;p="china"
C)char *a;a="china";
D)char a〔10〕,*p;p=a="china"
正确答案: D
(24)阅读下列程序段,则程序的输出结果为
#include "stdio.h"
#define M(X,Y)(X)*(Y)
#define N(X,Y)(X)/(Y)
main()
{
int a=5,b=6,c=8,k;
k=N(M(a,b),c);
printf("%d\n",k);
}
A)3 B)5 C)6 D)8
正确答案: A
(25)若变量已正确定义,以下while循环不断输出读入的字符,当读入回车换行符时结束循环。正确的程序段是
A)while (ch=getchar()==′\N′)putchar(ch);
B)while (ch=getchar())==′\N′)putchar(ch);
C)while((ch=getchar())!=′\N′)putchar(ch);
D)while((ch=getchar())!=′\N′)putchar(ch);
正确答案: D
(26)以下函数返回a所指数组中最小的值所在的下标值
fun(int *a, int n)
{ int i,j=0,p;
p=j;
for(i=j;i<n;i++)
if(a〔i〕<a〔p〕);
return(p);}
在下划线处应填入的是
A)i=p
B)a〔p〕=a〔i〕
C)p=j
D)p=i
正确答案: D
(27)下面程序的运行结果是
#include<stdio.h>
main()
{char a〔〕="morning",t;
int i,j=0;
for(i=1;i<7;i++)if(a〔j〕<a〔i〕)j=i;
t=a〔j〕;a〔j〕=a〔7〕;
a〔7〕=a〔j〕;puts〔a〕; }
A)mrgninr
B)mo
C)moring
D)morning
正确答案: B
(28) 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
void sort(int a〔〕,int n)
{int i,j,t;
for(i=0;i<n-1;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("%d,",aa〔i〕);
printf("\n"); }
程序运行后的输出结果是
(28) 以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序
void sort(int a〔〕,int n)
{int i,j,t;
for(i=0;i<n-1;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("%d,",aa〔i〕);
printf("\n"); }
程序运行后的输出结果是
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,
正确答案: C
(29)请阅读以下程序:
#include<stdio.h>
void fun(int s〔〕)
{static int j=0;
do
s〔j〕+=s〔j+1〕;
while(++j<2); }
main()
{int k,a〔10〕={1,2,3,4,5};
for(k=1;k<3;k++)fun(a);
for(k=0;k<5;k++)printf("%d",a〔k〕); }
上面程序的输出是
A)34756
B)23445
C)35745
D)12345
正确答案: C
(30)下面程序的输出结果是
#include<stdio.h>
#include<string.h>
main()
{char *p1="abc",*p2="ABC",str〔50〕= "xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str); }
A)xyzabcABC
B)zabcABC
C)xyabcABC
D)yzabcABC
正确答案: C
(31)下列程序的运行结果为
#include<stdio.h>
void abc(char*str)
{int a,b;
for(a=b=0;str〔a〕!=′\0′;a++)
if(str〔a〕!=′c′)
str〔b++〕=str〔a〕;
str〔b〕=′\0′;}
void main()
{char str〔〕="abcdef";
abc(str);
printf("str〔〕=%s",str); }
A)str〔〕=abdef
B)str〔〕=abcdef
C)str〔〕=a
D)str〔〕=ab
正确答案: A
(32)不合法的main函数命令行参数表示形式是
A)main(int a,char *c〔〕)
B)main(int arc,char **arv)
C)main(int argc,char *argv)
D)main(int argv,char *argc〔〕)
正确答案: C
(33)阅读下列程序,则运行结果为
#include "stdio.h"
fun()
{ staticint x=5;
x++;
return x;}
main()
{ int i,x;
for(i=0;i<3;i++)
x=fun();
printf("%d\n",x);}
A)5
B)6
C)7
D)8
正确答案: D
(34)若有以下定义和语句
struct a
{ int n,m;};
struct a st〔3〕={{1,20},{2,19},{3,21}};
struct a *p=st;
则以下错误的引用是
A)(p++)->n;
B)st〔0〕.n;
C)(*p).n;
D)p=&st.m;
正确答案: D
(35)已知 int a=1,b=3则a^b的值为
A)3
B)1
C)2
D)4
正确答案: C
二 、填空题 本题共得 (0) 分
(1)数据的逻辑结构有线性结构和 【1】两大类。
正确答案: 1.(非线性结构)
(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置 【2】的存储单元中。
正确答案: 1.(相邻)
(3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】 。
正确答案: 1.(可重用性)
(4)软件工程研究的内容主要包括:【4】技术和软件工程管理。
正确答案: 1.(软件开发)
(5)关系操作的特点是 【5】 操作。
正确答案: 1.(集合)
(6)现有如下定义:struct aa{int a;float b;char c;}*p;现需用malloc函数动态的申请一个struct aa类型大小的空间(由p指向),则定义的语句为: 【6】 。
正确答案: 1.(p=(struct aa *)malloc(sizeof(struct aa));)
(7)下列程序的输出结果是16.00,请填空。
main()
{int a=9, b=2;
float x=【7】, y=1.1,z;
z=a/2+b*x/y+1/2;
printf("%5.2f\n", z ); }
正确答案: 1.(6.6)
(8)下面程序的功能是:计算1~10之间的奇数之和与偶数之和,请填空。
#include<stdio.h>
main()
{ int a,b,c, i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
【8】;
c+=b; }
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11); }
正确答案: 1.(b=I+1)
(9)下面程序的运行结果是【9】。
#include<stdio.h>
#define SIZE 12
main()
{ char s〔SIZE〕; int i;for(i=0;i<SIZE;i++)s〔i〕=′A′+i+321;
sub(s,7,SIZE-1);
for(i=0;i<SIZE;i++)printf("%c",s〔i〕);
printf("\n"); }
sub(char*a,int t1,int t2)
{ char ch;
while (t1<t2)
{ ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--; } }
正确答案: 1.(a b c d e f g l k j I h)
(10)下面函数的功能是将一个字符串的内容颠倒过来,请填空。
void fun(char str〔〕)
{int i,j, k;
for(i=0,j= 【10】;i<j;i++,j--)
{ k=str〔i〕;
str〔i〕=str〔j〕;
str〔j〕=k; } }
正确答案: 1.(strlen(str)-1)
(11)阅读下面程序,则程序的执行结果为【11】。
#include "stdio.h"
fun(int k,int *p)
{ int a,b;
if(k==1‖k==2)
*p=1;
else{ fun(k-1,&a);
fun(k-2,&b);
*p=a+b; } }
main()
{ int x;
fun(6,&x);
printf("%d\n",x); }
正确答案: 1.(8)
(12)设有定义"struct {int a; float b; char c;} abc, *p_abc=&abc;",则对结构体成员a的引用方法可以是abc.a和p_abc【12】a。
正确答案: 1.(->)
(13)以下程序是求矩阵a,b的和,结果存入矩阵c中,并按矩阵形式输出,请填空。
#include<stdio.h>
main()
{int a〔3〕〔4〕={{3,-2,7,5},{1,0,4,-3},{6,8,0,2}};
int b〔3〕〔4〕={{-2,0,1,4},{5,-1,7,6},{6,8,0,2}};
int i,j,c〔3〕〔4〕;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
c〔i〕〔j〕=【13】;
for(i=0;i<3;i++)
{for(j=0;j<4;j++)
printf("%3d",c〔i〕〔j〕);
printf("\n"); } }
正确答案: 1.(a[I][j]+b[I][j])
(14)以下涵数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
#defineN4
void rotade(inta〔〕〔N〕,intb〔〕〔N〕)
{int i,j;
for(i=0;i<N;i++)
{b〔i〕〔N-1〕=【14】;【15】=a〔N-1〕〔i〕; } }
正确答案: 1.(a[0][I]) 2.(b[I][0])
温馨提示:内容为网友见解,仅供参考