打印本文 打印本文  关闭窗口 关闭窗口  
全国计算机等级考试二级C语言模拟试题7
作者:佚名  文章来源:不详  点击数  更新时间:2008/4/18 14:36:29  文章录入:杜斌  责任编辑:杜斌

答案  

一、选择题(每题2分,共计70分)

1.下列叙述中正确的是
A)线性表是线性结构 B)栈与队列是非线性结构
C)线性链表是非线性结构 D)二叉树是线性结构
A       B       C       D      
2.非空的循环单链表head的尾结点(由p所指向),满足
A)p->next==NULL B)p==NULL
C)p->next=head D)p=head
A       B       C       D      
3.已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是
A)堆排序 B)直接插入排序
C)快速排序 D)直接选择排序
A       B       C       D      
4.对建立良好的程序设计风格,下面描述正确的是
A)程序应简单、清晰、可读性好
B)符号名的命名只要符合语法
C)充分考虑程序的执行效率
D)程序的注释可有可无
A       B       C       D      
5.下列不属于结构化分析的常用工具的是
A)数据流图 B)数据字典
C)判定树 D)PAD图
A       B       C       D      

答案  
6.在软件生产过程中,需求信息的给出是
A)程序员 B)项目管理者
C)软件分析设计人员 D)软件用户
A       B       C       D      
7.下列工具中为需求分析常用工具的是
A)PAD B)PFD
C)N-S D)DFD
A       B       C       D      
8.NULL是指
A)0 B)空格
C)未知的值或无任何值 D)空字符串
A       B       C       D      
9.数据库的故障恢复一般是由
A)数据流图完成的 B)数据字典完成的
C)DBA完成的 D)PAD图完成的
A       B       C       D      
10.下列说法中,不属于数据模型所描述的内容的是
A)数据结构 B)数据操作
C)数据查询 D)数据约束
A       B       C       D      

答案
11.C语言程序的基本单位是
A)程序行 B)语句
C)函数 D)字符
A       B       C       D      
12.下面四个选项中,均是合法整型常量的选项是
A)160-0xffff011 B)-0xcdf01a0xe
C)-01986,0120668 D)-0x48a2e50x
A       B       C       D      
13.以下选项中合法的用户标识符是
A)long B)_2Test
C)3Dmax D)A.dat
A       B       C       D      
14.假定x和y为double型,则表达式x=2,y=x+3/2的值是
A)3.500000 B)3
C)2.000000 D)3.000000
A       B       C       D      
15.设x,y,t均为int型变量,执行下列语句后,y的值为
x=y=3;
t=++x||++y;
A)不确定 B)4
C)3 D)1
A       B       C       D      

答案
16.已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是
A)scanf("-,-,-", i, j, k);
B)scanf("%d %d %d",&i,&j,&k);
C)scanf("%d,%d,%d",&i,&j,&k);
D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);
A       B       C       D      
17.下列程序运行的结果是
main()
{
float x;
int i;
x=3.6;
i=(int)x;
printf("x=%f,i=%d ",x,i);
}
A)x=3.600000,i=3 B)x=3.6,i=3
C)x=3,i=3 D)x=3.600000,i=3.000000
A       B       C       D      
18.若执行下面的程序时,从键盘上输入5和2,则输出结果是
main()
{
int a,b,k;
scanf("%d,%d ",&a,&b);
k=a;
if(aelse k=b%a;
printf("%d\n ",k);
}
A)5 B)3
C)2 D)0
A       B       C       D      
19.C语言中 while 和do-while循环的主要区别是
A)do-while的循环体至少无条件执行一次
B)while的循环控制条件比do-while的循环控制条件更严格
C)do-while允许从外部转到循环体内
D)do-while 的循环体不能是复合语句
A       B       C       D      
20.以下程序的输出结果是
main()
{
int x=1,y=3;
printf("%d,",x++);
{ int x=0;x+=y*2;
printf("%d,%d, ",x,y);
}
printf("%d,%d\n",x,y);
}
A)1,6,3,1,3 B)1,6,3,6,3
C)1,6,3,2,3 D)1,7,3,2,3
A       B       C       D      

答案
21.下面程序输出的结果是
main()
{
int i;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++)
printf("%d ",a[2-i][i]);
}
A)1 5 9 B)7 5 3
C)3 5 7 D)5 9 1
A       B       C       D      
22.请阅读以下程序
main()
{
int a=5,b=0,c=0;
if(a=b+c)printf("***\n");
else printf("$$$\n");
}
以上程序
A)有语法错不能通过编译
B)可以通过编译但不能通过连接
C)输出***
D)输出$$$
A       B       C       D      
23.下面函数的功能是
char *fun(char *str1,char*str2)
{
while((*str1)&&(*str2++=*str1++));
return str2;
}
A)求字符串的长度
B)比较两个字符串的大小
C)将字符串str1复制到字符串str2中
D)将字符串str1接续到字符串str2中
A       B       C       D      
24.设有如下定义
char *s[2]={ "abcd","ABCD"};
则下列说法错误的是
A)s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址
B)s是指针数组名,它含有两个元素分别指向字符型一维数组
C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素
D)s数组的两个元素中分别存放了字符′a′和′A′的地址
A       B       C       D      
25.以下不能对二维数组a进行正确初始化的语句是
A)int a[2][3]={0};
B)int a[][3]={{1,2},{0}};
C)int a[2][3]={{1,2},{3,4},{5,6}};
D)int a[][3]={1,2,3,4,5,6};
A       B       C       D   

答案
26.有以下程序
struct STU
{ char num[10]; float score[3]; };
main()
{
struct STU s[3]={{"20021",90,95,85},
{"20022",95,80,75},
{ "20023",100,95,90},
},*p=s;
int i; float sum=0;
for(i=0;i<3;i++)
sum=sum+p->score[i];
printf("%6.2f\n",sum);
}
程序运行后的输出结果是
A)260.00 B)270.00
C)280.00 D)285.00
A       B       C       D      
27.设有如下函数
fun (float x)
{
printf("\n%d",x*x);}
则函数的类型是
A)与参数x的类型相同 B)是void
C)是int型 D)无法确定

A       B       C       D      
28.有如下定义
#define D 2
int x=5;float y=3.83;
char c=′D′;
则下面选项中错误的是
A)x++; B)y++;
C)c++; D)D++;
A       B       C       D      
29.C语言规定,函数返回值的类型是由
A)return语句中的表达式类型所决定
B)调用该函数时的主调函数类型所决定
C)调用该函数时系统临时决定
D)在定义该函数时所指定的函数类型所决定
A       B       C       D      
30.下列程序的运行结果是
void fun(int *a,int *b)
{
int *k;
k=a;a=b;b=k;
}
main()
{
int a=2004, b=9,*x=&a,*y=&b;
fun(x,y);
printf("%d%d",a,b);
}
A)2004 9 B)9 2004
C)0 0 D)编译时出错
A       B       C       D      

答案
31.下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:
876 675 896 101 301 401 980 431 451 777
#include
#include
int fun(int *s, int t, int *k)
{
int i;
*k=0;
for(i=0;iif(s[*k]return s[*k];
}
main()
{
int a[10]={ 876,675,896,101,301,401,980,431,451,777},k;
clrscr();
fun(a, 10, &k);
printf("%d, %d\n ", k, a[k]);
}
则输出结果为
A)7,431 B)6
C)980 D)6,980
A       B       C       D      
32.下面程序应能对两个整型变量的值进行交换。以下正确的说法是
main()
{
int a=10,b=20;
printf("(1)a=%d,b=%d\n",a,b);
swap(&a,&b);
printf("(2)a=%d,b=%d\n",a,b);
}
swap(int p,int q)
{
int t;
t=p;p=q;q=t;
}
A)该程序完全正确
B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
D)以上说法都不对
A       B       C       D      
33.有以下程序
#include
main()
{
char *p,*q;
p=(char *)malloc(sizeof(char)*20); q=p;
scanf("%s %s",p,q); printf("%s %s\n",p,q);
}
若从键盘输入:abc def<回车>,则输出结果是
A)def def B)abc def
C)abc d D)d d
A       B       C       D      
34.以下程序的输出结果是
int f()
{
static int i=0;
int s=1;
s+=i; i++;
return s;
}
main()
{
int i,a=0;
for(i=0;i<5;i++)a+=f();
printf("%d\n",a);
}
A)20 B)24
C)25 D)15
A       B       C       D      
35. 有以下程序
#include
struct NODE
{ int num; struct NODE *next; };
main()
{
struct NODE *p,*q,*r;
p=(struct NODE*)malloc(sizeof(struct NODE));
q=(struct NODE*)malloc(sizeof(struct NODE));
r=(struct NODE*)malloc(sizeof(struct NODE));
p->num=10; q->num=20; r->num=30;
p->next=q;q->next=r;
printf("%d\n ",p->num+q->next->num);
}
程序运行后的输出结果是
A)10 B)20
C)30 D)40
A       B       C       D    

答案

二、填空题(每空2分,共计30分)

1.冒泡排序算法在最好的情况下的元素交换次数为 【1】 。
输入答案,中间不含空格:
2.在最坏情况下,堆排序需要比较的次数为 【2】 。
输入答案,中间不含空格:
3.若串s="MathTypes",则其子串的数目是 【3】 。
输入答案,中间不含空格:
4.软件开发环境是全面支持软件开发全过程的 【4】 集合。
输入答案,中间不含空格:
5.关系数据库的关系演算语言是以 【5】 为基础的DML语言。
输入答案,中间不含空格:

答案
6.以下程序的输出结果是 【6】 。
main ()
{ int i=010,j=10;
pirntf ("%d,%d\n",i,j);
}
输入答案,中间不含空格:
7.下列程序的输出结果为 【7】 。
main ()
{ int x=3,y=5;
printf ("%d",x=(x--)*(--y));
}
输入答案,中间不含空格:
8.以下程序的输出结果是 【8】 。
fun (int x,int y,int z)
{ z =x*x+y*y;}
main ()
{ int a=31;
fun (6,3,a)
printf ("%d", a)
}
输入答案,中间不含空格:
9.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=′a′+′8′-′3′的值为 【9】 。
输入答案,中间不含空格:
10.若从键盘输入58,则以下程序输出的结果是 【10】 。
main()
{ int a;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
输入答案,中间不含空格:

答案
11.下列程序的输出的结果是 【11】 和 【12】 。
main()
{ int i,j row,colum,m;
static int array[3][3]={{100,200,300},{28,72,-30}{-850,2,6}};
m=array[0][0];for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(array[i][j]<m)
{m=array[i][j];colum=j;row=i;}
printf("%d,%d,%d\n",m,row,colum);
}
输入答案,中间不含空格:
12.以下程序中,select 函数的功能是在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。
#define N 3
#define M 3
select(int a[N][M],int *n)
{ int i,j,row=1,colum=1;
for(i=0;i for(j=0;j if(a[i][j]>a[row][colum]){row=i;colum=j;}
*n= 【13】 ;
return 【14】 ;
}
main()
{ int a[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
输入答案,中间不含空格:
13.函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s > t时返回正值,当s < t时返回负值。请填空。
my_cmp(char *s, char *t)
{ while (*s == *t)
{ if (*s == ′\0′)return 0;
++s; ++t;
} return 【15】 ;
}
输入答案,中间不含空格:
打印本文 打印本文  关闭窗口 关闭窗口