二级C语言笔试1

(总分96,考试时间90分钟)

一、选择题

下列各题A)、B)、C)、D)4个选项中,只有1个选项是正确的。

  1. 有以下程序:

void sum(int a[])

a[0]=a[-1]+a[1];

main()

int a[10]=1,2,3,4,5,6,7,8,9,10;

sum(&a[2]);

printf("%d\n",a[2]);

程序运行后的输出结果是( )。

A. 6 B. 7

C. 5 D. 8

  1. 若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是( )。

A. ++x,y=x-- B. x+1=y

C. x=x+10=x+y D. double(x)/10

  1. 有以下程序段:

main()

int a=5,*b,**c;

c=&b; b=&a;

......

程序在执行了"c=&b; b=&a;"语句后,表达式"**c"的值是( )。

A. 变量a的地址 B. 变量b中的值

C. 变量a中的值 D. 变量b的地址

  1. 下列叙述中正确的是( )。

A. break语句只能用于switch语句

B. 在switch语句中必须使用default

C. break语句必须与switch语句中的case配对使用

D. 在switch语句中,不一定使用break语句

  1. 有以下程序:

#include <stdio.h>

int fun(char s[])

int n=0;

while(*s<='9'&&*s>='0') n=10*n+*s-'0';s++;

return(n);

main()

char s[10]='6','1','*','4','*','9','*','0','*';

printf("%d\n",fun(s));

程序的运行结果是( )。

A. 9 B. 61490

C. 61 D. 5

  1. 有以下程序;

main()

char s[]="aaiou",*ps;

ps=s; printf("%c\n",*ps+4);

程序运行后的输出结果是( )。

A. a B. e

C. u D. 元素s[4]的地址

  1. 数据库技术的根本目标是要解决数据的( )。

A. 存储问题 B. 共享问题

C. 安全问题 D. 保护问题

  1. 有以下程序:

main()

int a[10]=1,2,3,4,5,6,7,8,9,10),*p=&a[3],*q=p+2;

printf("%d\n",*p+*q);

程序运行后的输出结果是( )。

A. 16 B. 10

C. 8 D. 6

  1. 有以下程序:

#include <stdio.h>

main()

FILE *fp;

int i,k,n;

fp=fopen("data.dar","w+");

for(i=1;i<6;i++)

fprintf(fp,"%d ",i);

if(i%3==0)

fprintf(fp,"\n");

rewind(fp);

fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n);

fclose(fp);

程序运行后的输出结果是( )。

A. 0 0 B. 123 45

C. 1 4 D. 1 2

  1. 以下不能正确计算代数式sin2()值的C语言表达式是( )。

A. 1/3*sin(1/2)*sin(1/2)

B. sin(0.5)*sin(0.5)/3

C. pow(sin(0.5),2)/3

D. 1/3.0*pow(sin(1.0/2),2)

  1. 以下程序的输出结果是( )。

main()

int a=0,i;

for(i=1;i<5;i++)

switch(i)

casc 0:

case 3:a+=2;

case 1:

case 2:a+=3;

default:a+=5;

printf("%d\n",

A. ;

&nbsp 12. 有以下程序:

main()

char str[]="xyz",*ps=str;

while(*ps) ps++;

for(ps--;ps-str>=0;ps--) puts(ps);

执行后输出结果是( )。

A. yz

xyZ

B. z

yz

C. z

yz

D. x

xy

xyz xyz

  1. 下列叙述中正确的是( )。

A. 在面向对象的程序设计中,各个对象之间具有密切的联系

B. 在面向对象的程序设计中,各个对象都是公用的

C. 在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小

D. 上述3种说法都不对

  1. 若有以下函数首部:

int fun(double x[10],int *n)

则下面针对此函数的函数声明语句中正确的是( )。

A. int fun(double x, int *n);

B. int fun(double, int);

C. int fun(double *x, int n);

D. int fun(double*, int*);

  1. 以下程序中,while循环的循环次数是( )。

main()

int i=0;

while(i<10)

if(i<1) continue;

if(i==5) break;

i++;

......

A. 1 B. 10

C. 6 D. 死循环,不能确定次数

  1. 可在C程序中用作用户标识符的一组标识符是( )。

A. and

_2007

B. Date

y-m-d

C. Hi

Dr.Tom

D. case

Bigl

  1. 在关系数据库中,用来表示实体之间联系的是( )。

A. 树结构 B. 网结构

C. 线性表 D. 二维表

  1. 有以下程序段:

int k=0,a=1,b=2,c=3;

k=a<b ? b:a; k=k>c ? c:k;

执行该程序段后,k的值是( )。

A. 3 B. 2

C. 1 D. 0

  1. 有定义语句:"int x,y;",若要通过"scanf("%d,%d",&x,&y);"语句使变量x得到数值11,变量y得到数值12,下面四组输入形式中,错误的是( )。

A. 11 12<回车> B. 11, 12<回车>

C. 11,12<回车> D. 11,<回车>

12<回车>

  1. 有以下程序:

main()

int c=35; printf("%d\n",c&c);

程序运行后的输出结果是( )。

A. 0 B. 70

C. 35 D. 1

  1. 设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是( )。

A. c1^c2 B. c1&c2

C. ~c2 D. c1|c2

  1. 有以下程序:

main()

int y=10;

while(y--); printf("y=%d\n",y);

程序执行后的输出结果是( )。

A. y=0 B. y=-1

C. y=1 D. while构成无限循环

  1. 有以下程序:

#include <stdio.h>

main()

FILE *fp; int i,k=0, n=0;

fp=fopen("d1.dat","w");

for(i=1;i<4;i++) fprintf(fp,"%d",i);

fclose(fp);

fp=fopen("d1.dat","r");

fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n);

fclose(fp);

执行后输出结果是( )。

A. 1 2 B. 123 0

C. 1 23 D. 0 0

  1. 有以下程序:

point(char *p) p+=3;

main()

char b[4]='a','b','c','d', *p=b;

point(p);

printf("%c\n",*p);

程序运行后的输出结果是( )。

A. a B. b

C. c D. d

  1. 以下选项中非法的表达式是( )。

A. 0<=x<100 B. i=j==0

C. (char)(65+3) D. x+1=x+1

  1. 设有如下3个关系表:

下列操作中正确的是( )。

  1. 有以下程序:

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+2,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. 1,2,7,6,3,4,5,8,9,10,

C. 1,2,7,6,5,4,3,8,9,10,

D. 1,2,9,8,7,6,5,4,3,10,

  1. 以下叙述中错误的是( )。

A. C程序必须由一个或一个以上的函数组成

B. 函数调用可以作为一个独立的语句存在

C. 若函数有返回值,必须通过咖语句返回

D. 函数形参的值也可以传回给对应的实参

  1. 下面程序的功能是输出以下形式的金字塔图案:

*

***

*****

*******

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");

在下划线处应填入的是( )。

A. i B. 2*1-1

C. 2*i+1 D. i+2

  1. 有定义语句:int b;char c[10];,则正确的输入语句是( )。

A. scanf("%d%s",&b,&c);

B. scanf("%d%s",&b,c);

C. scanf("%d%s",b,c);

D. scanf("%d%s",b,&c);

  1. 已有定义:char a[]="xyz",b[]='x','y','z';,以下叙述中正确的是( )。

A. 数组a和b的长度相同 B. a数组长度小于b数组长度

C. a数组长度大于b数组长度 D. 以述说法都不对

  1. 一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为( )。

A. 221 B. 219

C. 231 D. 229

  1. 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。

若有以下程序段:

q=s; s=s->next; p=s;

while (p->next) p=p->next;

p->next=q; q->next=NULL;

该程序段实现的功能是( )。

  1. 在结构化程序设计中,模块划分的原则是( )。

A. 各模块应包括尽量多的功能 B. 各模块的规模应尽量大

C. 各模块之间的联系应尽量紧密 D. 模块内具有高内聚度、模块间具有低耦合度

  1. 设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是( )。

A. (!a==1)&&(!b==0) B. (a<b)&&!c||1

C. a&&b D. a||(b+b)&&(c-

  1. 有以下程序:

#include <stdio.h>

main()

int a=1,b=2,c=3,x;

x=(a^b)&c; printf("%d\n",x);

程序的运行结果是( )。

A. 0 B. 1

C. 2 D. 3

  1. 有以下程序:

main()

char a1='M',a2='m';

printf("%c\n",(a1,a2));

以下叙述中正确的是( )。

A. 程序输出大写字母M B. 程序输出小写字母m

C. 格式说明符不足,编译出错 D. 程序运行时产生出错信息

  1. 有以下程序:

#include <string.h>

main()

char str[][20]="Hello","beijing",*p=str;

ptintf("%\n",strlen(p+20));

程序运行后的输出结果是( )。

A. 0 B. 5

C. 7 D. 20

  1. 有以下计算公式:

若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是( )。

  1. 若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是( )。

A. 1 B. 2

C. 3 D. 4

  1. 下面选项中不属于面向对象程序设计特征的是( )。

A. 继承性 B. 多态性

C. 类比性 D. 封装性

  1. 若有一些定义和语句:

#include <stdio.h>

int a=4,b=3,*p,*q,*w;

p=&a; q=&b; w=q; q=NULL;

则以下选项中错误的语句是( )。

A. *q=0; B. w=p;

C. *p=a; D. *p=*w;

  1. 以下不能定义为用户标识符的是( )。

A. scanf B. Void

C. 3com D. int

  1. 以下叙述中正确的是( )。

A. 构成C程序的基本单位是函数

B. 可以在一个函数中定义另一个函数

C. main()函数必须放在其他函数之前

D. 所有被调用的函数一定要在调用之前进行定义

  1. 以下数组定义中错误的是( )。

A. int x[][3]=0;

B. int x[2][3]=1,2,3,4,5,6;

C. int x[][3]=1,2,3,4,5,6;

D. int x[2][3]=(1,2,3,4,5,6;

  1. 以下程序调用fmdmax函数返回数组中的量大值:

findmax(int *a,int n)

int *p,*s;

for(p=a,s=a;p-a<n;p++)

if( )s=p;

return(*s);

main()

int x[5]=12,21,13,6,18;

printf("%d\n",findmax(x,5));

在下划线处应填入的是( )。

A. p>s B. *p>*s

C. a[p]>a[s] D. p-a>p-s

  1. 有以下程序;

void f(int *x,int *y)

int t;

t=*x; *x=*y; *y=t;

main()

int a[8]=1,2,3,4,5,6,7,8,i,*p,*q;

p=a; q=&a[7];

while (p>q)

f(p,q);p++; q--;

for(i=0;i<8; i++) printf("%d,",a[i]);

程序运行后的输出结果是( )。

A. 8,2,3,4,5,6,7,1,

B. 5,6,7,8,1,2,3,4,

C. 1,2,3,4,5,6,7,8,

D. 8,7,6,5,4,3,2,1,

  1. 下列叙述中错误的是( )。

A. 在数据库系统中,数据的物理结构必须与逻辑结构一致

B. 数据库技术的根本目标是要解决数据的共享问题

C. 数据库设计是指在已有数据库管理系统的基础上建立数据库

D. 数据库系统需要操作系统的支持

  1. 某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为( )。

A. n+1 B. n-1

C. 2n D. n/2

  1. 下列选项中不属于结构化程序设计方法的是( )。

A. 自顶向下 B. 逐步求精

C. 模块化 D. 可复用

二、填空题

  1. 设一棵完全二叉树共有700个结点,则在该二叉树中有 【1】 个叶子结点。

  2. 在面向对象方法中, 【2】 描述的是具有相似属性与操作的一组对象。

  3. 诊断和改正程序中错误的工作通常称为 【3】 。

  4. 对下列二叉树进行中序遍历的结果为 【4】 。

  5. 在结构化分析使用的数据流图(DFD)中,利用 【5】 对其中的图形元素进行确切解释。

  6. 执行以下程序后的输出结果是 【6】 。

main()

int a=10;

a=(3*5,a+4); printf("a=%d\n",a);

  1. 以下程序运行后的输出结果是 【7】 。

main()

int m=011,n=11;

printf("%d %d\n",++m,n++);

  1. 有以下程序:

main()

int t=1,i=5;

for(; i>=0;i--) t*=i;

printf("%d\n",t);

执行后输出结果是 【8】 。

  1. 以下程序的运行结果是 【9】 。

main()

int a=2,b=7,c=5;

switch(a>0)

case 1:

switch (b<0)

case 1:printf("@"); break;

case 2:pnntf("!"); break;

case 0:

switch (c==5)

case 0:pnntf("*"); break;

case 1:printf("#"); break;

case 2:printf("$"); break;

default: printf("&");

printf("\n");

有以下程序段,且变量已正确定义和赋值。

for(s=1.0, k=1; k<=n;k++) s=s+1.0/(k*(k/1));

printf("s=%f\n\",s);

请填空,使下面程序段的功能与之完全相同。

s=1.0; k=1;

while( 【10】 ) s=s+1.0/(k*(k+1)); 【11】 ;

printf("s-=%f\n\n",s);

  1. 以下程序的输出结果是 【12】 。

#include <stdio.h>

main()

int i;

for(i-'a'; i<'f'; i++,i++) printf("%c",i-'a'+'A');

printf("\n");

  1. 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

其构成规律是:

①第0列元素和主对角线元素均为1。

②其余元素为其左上方和正上方元素之和。

③数据的个数每行递增1。

请将程序补充完整。

#define N 6

void yanghui(int x[N][N])

int i,j;

x[O][0]=1;

for(i=1;i<N;i++)

x[i][0]= 【13】 =1;

for(j=1;j<i;j++)

x[i][j]= 【14】 ;

)

  1. 以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

void sstrcpy(char *s,char *t)

while(*s++= 【15】 );

main()

char str1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

printf("%s\n",str1);

  1. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。

【16】 (double,double);

main()

double x,y;

scanf("%1f%1f",&x,&y);

printf("%1f\n",max(x,y));

double max(double a,double B)

return(a>b ? a:b);

  1. 以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FGHI

JKL

MN

O

请填空完成该程序。

main()

int i,j,n; char ch='A';

scanf("%d",&n);

if(n<11)

for(i=1;i<=n;i++)

for(j=1;j<=n-i+1;j++)

printf("%2c",ch);

【17】 ;

【18】 ;

else printf("n is too large!\n")

printf("\n"0);

设有说明;

struct DATE int year; int month; int day;

请写出一条定义语句,该语句定义d为上述结构体类型变量,并同时为其成员year、month、day依次赋初值2006、10、1: 【19】 。

  1. 以下程序的功能是将宁符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abcl23edf4568h,执行程序后输出:123456。请填空。

#include <stdio.h>

#include <ctype.h>

main()

char s[80],d[80]; int i,j;

gets(s);

for(i=j=0;s[i]!='\0';i++)

if( 【20】 ) d[j]=s[i];j++;

d[j]='\0';

puts(d);

相关推荐
远望清一色11 分钟前
基于MATLAB边缘检测博文
开发语言·算法·matlab
何曾参静谧19 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
Prejudices23 分钟前
C++如何调用Python脚本
开发语言·c++·python
我狠狠地刷刷刷刷刷36 分钟前
中文分词模拟器
开发语言·python·算法
wyh要好好学习39 分钟前
C# WPF 记录DataGrid的表头顺序,下次打开界面时应用到表格中
开发语言·c#·wpf
AitTech40 分钟前
C#实现:电脑系统信息的全面获取与监控
开发语言·c#
qing_04060342 分钟前
C++——多态
开发语言·c++·多态
孙同学_42 分钟前
【C++】—掌握STL vector 类:“Vector简介:动态数组的高效应用”
开发语言·c++
froginwe1143 分钟前
XML 编辑器:功能、选择与使用技巧
开发语言
Jam-Young1 小时前
Python的装饰器
开发语言·python