当前位置:文档之家› C语言基础知识习题

C语言基础知识习题

C语言基础知识习题
C语言基础知识习题

第二章:C语言概述

1.以下(○A)是不正确的转义字符。

A.'\\'

B.'\"

C.'020'

D.'\0'

2.构成C语言程序的基本单位是(○C)。

A.函数

B.变量

C.子程序

D.语句

3.C语言规定:在一个源程序中,main( )函数的位置(C)。

A.必须在最开始

B.必须在系统调用的库函数后面

C.可以任意

D.必须在最后

4.为求出return语句返回计算100!的结果,此函数的类型说明应为(D)。

A.int

B.long

C.unsigned long

D.选项A,B,C.都不对:ABC的数值范围都不够

5.C语言中的标识符只能由字母、数字和下划线3种字符组成,且第一个字符(C)。

A.必须为字母

B.必须为下划线

C.必须为字母或下划线

D.可以是字母、数字和下划线中的任意一种

6.以下选项中合法的用户标识符是(D)。

A.int

B.a#

C.5mem

D._243

7.C语言中的简单数据类型有(C)。

A.整型、实型、逻辑型

B.整型、字符型、逻辑型

C.整型、实型、字符型

D.整型、实型、字符型、逻辑型

8.以下选项中不正确的整型常量是(B)。

A.-37

B.32,758

C.326

D.6

9.以下选项中合法的C语言字符常量是(A)。

A.'\t'

B."A"

C.67

D. A

10.以下选项中不正确的实型常量是(A)。

A.123

B.1e4

11.以下选项中合法的C语言赋值语句是(D)。

A.a=b=34

B.a=34,b=34

C.--i;

D.m=(int)(x+y);

12.设int类型的数据长度为两个字节,则unsigned int类型数据的取值范围是(B)。

A.0~255

B.0~65535

C.-32768~32767

D.-256~255

第三章:运算符与表达式(原先给的答案很多错误)

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

A.在C程序中,%是只能用于整数运算的运算符

B.在C程序中,无论整数还是实数,都能准确无误地表示

C.若a 是实型变量,C程序中a=20是正确的,因此实型变量允许被整型数赋值

D.以上表述都是正确的

2.若变量x、y、z均为double类型且已正确赋值,不能正确表示x/y×z的C语言表达式是(A)。

A.x/y*z

B.x*(1/(y*z))

C.x/y*1/z

D.x/y/z

3.设a、b、c、d、m、n均为int型变量,且a=5,b=6,c=7,d=8,m=2,n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为(C)。

A.0

B.1

C.2

D.3

4.设w、x、y、z、m均为int型变量,有如下程序段:

w=1; x=2; y=3; z=4;

m=(w

则该程序运行后,m的值是(D)。

A.4

B.3

C.2

D.1

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

#include

main( )

{int a=5,b=4,c=6,d;

printf("%d\n",d=a>b?(a>c?a:c):(b));

}

A.5

B.4

C.6

D.不确定

6.在C语言中,如果下面的变量都是int类型,则输出的结果是(A)。

sum=pad=5; pad=sum++ ,pad++ ,++pad;

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

A.7

B.6

C.5

D.4

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

#include

main( )

{int i=010 , j=10;

printf("%d,%d\n",++i , j--);

}

A.11,10

B.9,10

C.010,9

D.10,9

8.已知int i;float f;,由以下选项中正确的语句是(D)。

A.(int f)%i;

B.int(f)%i;

C.int(f%i);

D.(int)f%i;

9.若有定义:int x=3 ,y=2; float a=2.5 ,b=3.5; 则下面表达式的值为(B)。(x+y)%2+(int)a/(int)b

A.1.0

B.1

C.2.0

D.2

10.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值为(C)。

A.7

B.8

C.9

D.10

11.若有定义"int x=1, y=1;",表达式(!x||y--)的值是(B)。

A.0

B.1

C.2

D.-1

12.有以下程序:

main( )

{unsigned char a,b,c;

a=0x3;

b=a | 0x8;

c=b<<1;

printf("%d %d\n",b,c);

}

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

A.-1112

B.-6-13

C.1224

D.1122

13.若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是(C)。

A.1

B.2

C.2.0

D.2.5

14.执行以下程序段后,c3的值为(A)。

int c1=1,c2=2,c3;

c3=1.0/c2*c1;

A.0

B.0.5

C.1

D.2

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

#include

main( )

{int y=3,x=3,z=1;

printf("%d %d\n",(++x,y++),z+2);

}

A.34

B.42

C.43

D.33

第四章:基本语句

1.以下选项中不是C语句的是 C 。

A){int i;i++;printf("%d\n",i);} B);

C)a=5,c=10 D){; }

2.执行以下程序时输入1234567,程序的运行结果为 B 。

#include

main()

{ int x,y;

scanf("%2d%2ld",&x,&y);

printf("%d\n",x+y);

}

A)17 B)46 C)15 D)9

3.若有定义char a;int b;float c;double d;,则表达式a*b+c-d结果为型 A 。

A)double B)int C)float D)char

4.若有定义int a,b;,则用语句scanf("%d%d",&a,&b);输入a,b的值时,不能作为输入数据分隔符的是A 。A),B)空格C)回车D)【Tab】键

5.运行下面的程序,如果从键盘上输入:

ab<回车>

c <回车>

def<回车>

则输出结果为 C 。

#define N 6

#include

main()

{char c[N];

int i=0;

for(;i

for(i=0;i

}

A)

a

b

c

d

e

f

B)

a

b

c

d

C)

ab

c

d

D)abcdef

6.以下程序的输出结果是 A 。

#include

main()

{ printf("%f",2.5+1*7%2/4);

}

A)2.500000 B)2.750000 C)3.375000 D)3.000000

7.根据定义和数据的输入方式,输入语句的正确形式是 B 。

已有定义:float f1,f2;

数据的输入方式:4.52

3.5

A)scanf("%f,%f",&f1,&f2); B)scanf("%f%f",&f1,&f2);

C)scanf("%3.2f%2.1f",&f1,&f2);D)scanf("%3.2f,%2.1f",&f1,&f2);

8.以下程序不用第3个变量,实现将两个数进行对调的操作,请填空。

#include

main()

{ int a,b;

scanf("%d%d",&a,&b);

printf("a=%d b=%d",a,b);

a=a+b;b=a-b;a= B ;

printf("a=%d b=%d\n",a,b);

}

A)a+b B)a-b C)b*a D)a/b

第五章:选择结构

1.以下选项中,能正确表示a≥10或a≤0的关系表达式是___D__。

A)a>=10 or a<=0 B)a>=10|a<=0C)a>=10&&a<=0 D)a>=10 ||a<=0

2. 假定所有变量均已正确定义,下列程序段运行后x的值是__B___。a=b=c=0;x=35;

if(!a) x--;

else if(b);

if(c) x=3;

else x=4;

A)34 B)4 C)35 D)3

3.以下程序的输出结果___A__。

#include

main()

{ int a,b,c=246;

a=c/100%9;

b=(-1)&&(-1);

printf("%d,%d\n",a,b);

}

A)2,1 B)3,2 C)4,3 D)2,-1

4..已知a=1、b=3、c=5、d=5,下列程序段运行后,x的值是__B___。

if(a

if(c

else

if(a

if(b

else x=3;

else x=6;

else x=7;

A)1 B)2 C)3 D)6

5. 能正确表示a和b同时为正或同时为负的表达式是__D___。

A)(a>=0||b>=0)&&(a<0||b<0) B)(a>=0&&b>=0)&&(a<0&&b<0)

C)(a+b>0)&&(a+b<=0) D)a*b>0

6. 以下程序的输出结果是__C___。

#include

main()

{ int a=-1,b=1;

if((++a<0)&& ! (b-- <=0))

printf("%d %d\n",a,b);

else

printf("%d %d\n",b,a);

}

A)-11 B)01 C)10 D)00

7.下列关于switch语句和break语句的结论中,正确的是_B____。

A)break语句是switch语句中的一部分

B)在switch语句中可以根据需要使用或不使用break语句

C)在switch语句中必须使用break语句

D)break语句只能用于switch语句中

8. 若有定义int a=1,b=0;,则执行以下语句后,输出为___B__。

switch(a)

{ case 1:

switch (b)

{ case 0: printf("**0**"); break;

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

}

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

}

A)**0** B)**0****2**

C)**0****1****2** D)有语法错误

9. 以下程序的输出结果是__A___。

#include

main()

{ int x=1,a=0,b=0;

switch(x)

{ case 0: b++;

case 1: a++;

case 2: a++;b++;

}

printf("a=%d,b=%d\n",a,b);

}

A)a=2,b=1 B)a=1,b=1 C)a=1,b=0 D)a=2,b=2

10. 以下程序的输出结果是___C__。

#include

main()

{ int a=12,b=5,c=-3;

if(a>b)

if(b<0) c=0;

else c++;

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

}

A)0 B)1 C)-2 D)-3

11. 阅读以下程序:

#include

main()

{ int x;

scanf("%d",&x);

if(x--<5)printf("%d",x);

else printf("%d",x++);

}

程序运行后,如果从键盘输入5,则输出结果是__B___。

A)3 B)4 C)5 D)6

12. 两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是_A____。#include

main( )

{int x;

scanf("%d",&x);

if(x++>5)printf("%d",x);

else printf("%d\n",x--);

}

A)7和5 B)6和3 C)7和4 D)6和4

第6章循环结构1.在while(x)语句中的x与下面条件表达式等价的是。D

A)x==0 B)x==1 C)x!=1 D)x!=0

2.以下程序的输出结果是。D

#include

main()

{int k,j,m;

for (k=5;k>=1;k--)

{ m=0;

for (j=k;j<=5;j++)

m=m+k*j;

}

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

}

A)124 B)25 C)36 D)15

3.以下程序的输出结果是。D

#include

main()

{ int x=10,y=10,i;

for (i=0;x>8;y=++i)

printf("%d %d",x--,y);

}

A)10 1 9 2 B)9 8 7 6 C)10 9 9 0 D)10 10 9 1

4.以下程序的输出结果是。A

a=1;b=2;c=2;

while(a

printf ("%d,%d,%d",a,b,c);

A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,1

5.以下for循环体的执行次数是。C

#include

main()

{int i,j;

for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d\n",i);

}

A)3 B)2 C)1 D)0

6.有以下程序:

#include

main()

{ int n=9;

while(n>6){n--;printf("%d",n);}

}

该程序段的输出结果是。B

A)987 B)876 C)8765 D)9876

7.有以下程序段:A

int k=0;

while(k=1)k++;

while 循环执行的次数是。

A)无限次B)有语法错,不能执行C)一次也不执行D)执行一次

8.以下程序中,while循环的循环次数是。D

#include

main()

{ int i=0;

while(i<10)

{ if(i<1) continue;

if(i==5) break;

i++;

}

}

A)1 B)10

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

9.以下程序的输出结果是。B

#include

main()

{ int i=0,a=0;

while(i<20)

{ for(;;)

{if((i%10)==0)break;

elsei--;

}

i+=11;a+=i;

}

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

}

A)21 B)32 C)33 D)11

10.语句while(!E);中的条件!E等价于。A

A)E==0 B)E!=1 C)E!=0 D)~E

11.以下的for循环。C

for(x=0,y=0; (y!=123)&&(x<4); x++ );

A)是无限循环B)循环次数不定

C)循环执行4次D)循环执行3次

12.执行以下程序段的结果是。B

int x=23;

do

{ printf("%d",x--);

}while(!x);

A)打印出321 B)打印出23

C)不打印任何内容D)陷入死循环

第7章:数组1.有以下程序:

#include

#include

main()

{char a[ ]={'a','b','c','d', 'e', 'f', 'g','h','\0'};

int i,j;

i=sizeof(a); j=strlen(a);

printf("%d,%d\n",i,j);

}

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

A)9,9 B)8,9 C)1,8 D)9,8

2.以下程序中函数reverse()的功能是将a所指数组中的内容进行逆置存放。#include

void reverse(int a[ ],int n)

{int i,t;

for(i=0;i

{ t=a[i]; a[i]=a[n-1-i];a[n-1-i]=t;}

}

main()

{int b[10]={1,2,3,4,5,6,7,8,9,10}; int i,s=0;

reverse(b,8);

for(i=6;i<10;i++)s+=b[i];

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

}

则程序运行后的输出结果是。A

A)22 B)10 C)34 D)30

3.有以下程序:

main(int argc,char*argv[])

{int n,i=0;

while(argv[1][i]!='\0')

{ n=fun();i++;}

printf("%d\n",n*argc);

}

int fun()

{static int s=0;

s+=1;

return s;

}

假设程序经编译、连接后生成可执行文件exam.exe,若键入以下命令行

exam 123<回车>

则运行结果为。A

A)6 B)8 C)3 D)4

4.以下程序的输出结果是。A

# include

# include

main()

{char str[12]={'s','t','r','i','n','g'};

printf("%d\n",strlen(str)); }

A)6 B)7 C)11 D)12

5.若有说明:int a[3][4];,则对数组a元素非法引用的是。D

A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4]

6.若有说明:int a[][4]={0,0};,则以下选项中,不正确的是。D

A)数组a的每个元素都可得到初值。

B)二维数组a的第一维大小为1

C)因为二维数组a中初值的个数不能被第二维大小的值整除,则第一维的大小等于所得商数再加1,故数组a的行数为1

D)只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

7.以下程序中有错误的一行是。D

(1)main()

(2){

(3) int a[3]={1};

(4)int i;

(5)scanf("%d",&a);

(6) for(i=1;i<3;i++) a[0]=a[0]+a[i];

(7) printf("%f\n",a[0]);

(8)}

A)3 B)6 C)7 D)5

8.若有说明:int a[][3]={1,2,3,4,5,6,7};,则a数组第一维的大小是。B

A)2 B)3 C)4 D)无确定值

9.若有数组定义: char array[ ]="China";,则数组array所占的空间为。C

A)4个字节B)5个字节C)6个字节D)7个字节

10.以下程序的输出结果是。A

#include

#include <string.h>

main ()

{char arr[2][4];

strcpy(arr,"you"); strcpy(arr[1],"me");

arr[0][3]='&';

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

}

A)you&me B)you C)me D)err

11.有以下程序:

#include

main()

{int n[5]={0,0,0},i,k=2;

for(i=0;i

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

}

该程序的输出结果是。D

A)不定值B)2 C)1 D)0

12.以下程序的输出结果是。A

#include

main()

{int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;

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

for(j=0;j

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

}

A)14 B)19 C)20 D)21

13.当执行以下程序时,如果输入ABC,则输出结果是。A

#include

#include

main()

{char ss[10]="1,2,3,4,5";

gets(ss); strcat(ss, "6789"); printf("%s\n",ss);

}

A)ABC6789 B)ABC67 C)12345ABC6 D)ABC456789

14.以下程序的输出结果是。A

#include

f(int b[],int m,int n)

{ int i,s=0;

for(i=m;i

return s;

}

main()

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

x=f(a,3,7);

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

}

A)10 B)18 C)8 D)15

15.以下程序中函数sort()的功能是对数组a中的数据进行由大到小的排序。

#include

void sort(int a[],int n)

{int i,j,t;

for(i=0;i

for(j=i+1;j

if(a[i]

}

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

}

程序运行后的输出结果是。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,

16.对两个数组a和b进行如下初始化:

char a[]="ABCDEF";

char b[]={'A','B','C','D','E','F'};

则以下叙述正确的是。D

A)数组a与数组b完全相同B)数组a与数组b长度相同

C)数组a与数组b中都存放字符串D)数组a比数组b长度长

17.有以下程序段:D

char a[3],b[]="China";

a=b;

printf("%s",a);

则。

A)运行后将输出China B)运行后将输出ChC)运行后将输出Chi D)编译出错18.判断字符串s1是否大于字符串s2,应当使用。D

A)if(s1>s2) B)if(strcmp(s1,s2)) C)if(strcmp(s2,s1)>0) D)if(strcmp(s1,s2)>0) 19.以下程序的输出结果是。A

#include

main()

{char ch[7]={"12ab56"};

int i,s=0;

for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)

s=10*s+ch[i]-'0';

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

}

A)1 B)1256 C)12ab56 D)1

20.当运行以下程序时,从键盘输入:AhaMA[空格] Aha<回车>,则程序的输出结果是。A

#include

main()

{char s[80],c='a';

int i=0;

scanf("%s",s);

while(s[i]!='\0')

{ if(s[i]==c) s[i]=s[i]-32;

else if(s[i]==c-32) s[i]=s[i]+32;

i++;

}

puts(s);

}

A)ahAMa B)AbAMa C)AhAMa[空格]ahA D)ahAMa[空格]ahA 操作题:

1.下列给定程序中,函数fun( )的功能是:将形参a所指数组中的前半部分元素中的值与后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

例如:若a所指数组中的数据为:1、2、3、4、5、6、7、8、9,则调换后为:6、7、8、9、5、1、2、3、4。

请在空白处填入正确内容,使程序得出正确的结果。

(源程序在考生文件夹"WEXAM\00000000"下)

不得增行或删行,也不得更改程序的结构!

#include

#define N 9

void fun(int a[ ], int n)

{ int i, t, p;

p=(n%2==0)?n/2:n/2+ 1;

for(i=0;i

{ t=a[i];

a[i]=a[p+ i];

a[p+i]=t;

}

}

main()

{ int b[N]={1, 2, 3, 4, 5, 6, 7, 8, 9},i;

printf("\nThe original data:\n");

for (i=0;i

printf("%4d",b[i]);

printf("\n");

fun(b,N);

printf("\nThe data after moving:\n");

for (i=0;i

printf("%4d",b[i]);

printf("\n");

}

第八章函数

1.以下函数值的类型是。A

fun ( float x )

{ float y;

y= 3*x-4;

return y;

}

A)int B)不确定C)void D)float

2.以下程序的输出结果是。B

#include

int a, b;

void fun()

{ a=100; b=200; }

main()

{ int a=5, b=7;

fun();

printf("%d%d\n", a,b);

}

A)100200 B)57 C)200100 D)75

3.以下程序的输出结果是。C

#include

int x=3;

main()

{ int i;

for (i=1;i

}

incre()

{ static int x=1;

x*=x+1;

printf("%d",x);

}

A)33 B)22 C)26 D)25

4.以下程序的输出结果是。B

#include

int f(int n)

{ if(n==1)return 1;

else return f(n-1)+1;

}

main()

{ int i,j=0;

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

j+=f(i);

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

}

A)4 B)3 C)2 D)1

5.以下程序的输出结果是。A

#include

int d=1;

fun (int p)

{ int d=5;

d+=p++;

printf("%d ",d);

}

main( )

{ int a=3;

fun(a);

d+=a++;

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

}

A)84 B)96 C)94 D)85

6.函数调用strcat(strcpy(str1,str2),str3)的功能是。C

A)将字符串str1复制到字符串str2中后再连接到字符串str3之后

B)将字符串str1连接到字符串str2之后再复制到字符串str3之后

C)将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后

D)将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中

7.有如下程序:

int sub(int n)

{if(n<5) return 0;

else if(n>12) return 3;

return 1;

if(n>5) return 2;

}

main()

{int a=10;

printf("%d\n",sub(a));

}

该程序的输出结果是。B

A)0 B)1 C)2 D)3

8.以下程序的输出结果是。C

#include

int d=1;

fun(int p)

{ static int d=5;

d+=p;

printf("%d ",d);

return(d);

}

main()

{ int a=3;

printf("%d\n",fun(a+fun(d)));

}

A)699 B)669 C)61515 D)6615

9.在一个源文件中定义的外部变量的作用域为。D

A)本文件的全部范围B)本程序的全部范围

C)本函数的全部范围D)从定义该变量的位置开始至本文件结束

10.以下叙述中正确的是。B

A)全局变量的作用域一定比局部变量的作用域范围大

B)静态(static)类别变量的生存期贯穿于整个程序的运行期间

C)函数的形参都属于全局变量

D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值

11.以下对C语言函数的描述中,正确的是。A

A)C程序由一个或一个以上的函数组成B)C函数既可以嵌套定义又可以递归调用

C)函数必须有返回值,否则不能使用函数D)C程序中调用关系的所有函数必须放在同一个程序文件中

12.C语言中形参的默认存储类别是。A

A)自动(auto)B)静态(static)C)寄存器(register)D)外部(extern)

13.以下叙述中不正确的是。B

A)在C语言中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B)在C函数中,最好使用全局变量

C)在C语言中,形式参数只是局限于所在函数

D)在C语言中,函数名的存储类别为外部

14.C语言中函数返回值的类型由决定。D

A)return语句中的表达式类型B)调用函数的主调函数类型

C)调用函数时的临时类型D)定义函数时所指定的函数类型

15.C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是。C

A)地址传递B)由实参传给形参,并由形参返回给实参

C)值传递D)由用户指定传递方式

16.在C语言中。D

A)函数的定义可以嵌套,但函数的调用不可以嵌套

B)函数的定义和调用均可以嵌套

C)函数的定义和调用均不可以嵌套

D)函数的定义不可以嵌套,但函数的调用可以嵌套

17.以下函数调用语句中,含有的实参个数是。A

fun(x+y,(e1,e2),fun(xy,d,(a,b)));

A)3 B)4 C)6 D)8

18.以下程序的输出结果是。C

#include

fun(int x)

{ static int a=3;

a+=x;

return(a);

}

main()

{ int k=2,m=1,n;

n=fun(k);

n=fun(m);

printf("%d",n);

}

A)3 B)4 C)6 D)9

19.以下程序的输出结果是。D

#include

int func(int a,int b)

{return(a+b);}

main( )

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

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

}

A)12 B)13 C)14 D)15

第9章指针1.在说明语句:int *f();中,标识符f代表的是。D

A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名2.以下程序的输出结果是。A

#include

#include

main()

{ char *p="abcde\0fghjik\0";

printf("%d\n",strlen(p));

}

A)12 B)15 C)6 D)5

3.设有以下语句,则不是对a数组元素的正确引用,其中0≤i<10。D

int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a;

A)a[p-a] B)*(&a[i]) C)p[i] D)*(*(a+i))

4.以下程序段的输出结果是。A

int *var,ab;

ab=100;var=&ab;ab=*var+10;

printf("%d\n",*var);

A)110 B)100 C)0 D)出现错误

5.设有如下的程序段:B

char str[ ]="Hello";

char *ptr;

ptr=str;

执行上面的程序段后,*(ptr+5)的值为。

A)'o' B)'\0' C)不确定的值D)'o'的地址

6.若有以下定义和语句:A

#include

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;

7.下面函数的功能是。B

sss(s, t)

char *s, *t;

{ while((*s)&&(*t)&&(*t++== *s++));

return(*s-*t);

}

A)求字符串的长度B)比较两个字符串的大小

C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中

8.有以下程序:

#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

A)def def B)abc def C)abc d D)d d

9. 若有以下说明和定义:

typedef int *INTEGER;

INTEGER p,*q;

以下叙述正确的是。B

A)p是int型变量B)p是基类型为int的指针变量C)q是基类型为int的指针变量D)程序中可用INTEGER代替int类型名10.说明语句int *(*p)();的含义是。D

A)p是一个指向int型数组的指针

B)p是指针变量,它构成了指针数组

C)p是一个指向函数的指针,该函数的返回值是一个整型

D)p是一个指向函数的指针,该函数的返回值是一个指向整型的指针11.已知char *p,*q;,选择正确的语句。C

A)p*=3; B)p /=q; C)p+=3; D)p+=q;

12.已知int i,x[3][4];,则不能将x[1][1]的值赋给变量i的语句是。C

A)i=*(*(x+1)+1);B)i=x[1][1];

C)i=*(*(x+1));D)i=*(x[1]+1);

13.下列程序的输出结果是。B

#include

int b=2;

int func(int *a)

{ b += *a; return (b);

}

main()

{ int a=2, res=2;

res += func(&a);

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

}

A)4 B)6 C)8 D)10

14.有如下程序段:

int*p,a=10,b=1;

p=&a;a=*p+b;

执行该程序段后,a的值为。B

A)12 B)11 C)10 D)编译出错

15.对于基类型相同的两个指针变量之间,不能进行的运算是。C

A)< B)= C)+ D)-

16.如下程序的输出结果是。C

#include

main()

{ char ch[2][5]={"6937","8254"},*p[2];

int i,j,s=0;

for(i=0;i<2;i++) p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]>'\0';j+=2)

s=10*s+p[i][j]-'0';

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

}

A)69825 B)63825 C)6385 D)693825

17.当调用函数时,实参是一个数组名,则向函数传递的是。B

A)数组的长度B)数组的首地址

C)数组每一个元素的地址D)数组每个元素中的值

18.若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是。A A)scanf("%d%d%d",&a,&b,d); B)scanf("%d%d%d",&a,&b,&d);

C)scanf("%d%d%d",a,b,d); D)scanf("%d%d%d",a,b,*d);

19.若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为。D

A)无确定值B)a的地址C)512 D)511

第10章编译预处理和动态存储分配1.对下面程序段,正确的判断是。B

#define A 3

#define B(a) ((A+1)*a)

x=3*(A+B(7));

A)程序错误,不许嵌套宏定义B)x=93

C)x=21 D)程序错误,宏定义不许有参数

2.以下程序的输出结果为。B

#include

#define F(y) 3.84+y

#define PR(a) printf("%d",(int)(a))

#define PRINT(a) PR(a); putchar('\n')

main()

{ int x=2;

PRINT(F(3)*x);

}

A)8 B)9 C)10 D)11

3.以下说法中正确的是。C

A)#define和printf都是C语句B)#define是C语句,而printf不是

C)printf是C语句,但#define不是D)#define和printf都不是C语句

4.以下程序的输出结果是。C

#define f(x) x*x

#include

main()

{ int a=6,b=2,c;

c=f(a)/ f(b);

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

}

A)9 B)6 C)36 D)18

5.以下程序运行后,输出结果是。B

#define PT 5.5

#define S(x) PT*x *x

#include

main()

{int a=1,b=2;

printf("%4.1f\n",S(a+b));

}

A)49.5 B) 9.5 C)22.0 D)45.0

6.下列程序执行后的输出结果是。B

#define MA(x) x*(x-1)

#include

main()

{ int a=1,b=2;printf("%d \n",MA(1+a+b));

}

A)6 B)8 C)10 D)12

7.有如下程序:

#define N 2

#define M N+1

#define NUM 2*M+1

main()

{ int i;

for(i=1;i<=NUM;i++) printf("%d\n",i);

}

该程序中的for循环执行的次数是。C

A)5 B)6 C)7 D)8

8.程序中头文件typel.h 的内容是:

#define N 5

#define M1 N*3

程序如下:

#include "type1.h"

#define M2 N*2

main()

{ int i;

i=M1+M2;printf("%d\n",i);

}

程序编译后运行的输出结果是。C

A)10 B)20 C)25 D)30

9.以下正确的描述为。C

A)每个C语言程序必须在开头使用预处理命令#include

B)预处理命令必须位于C源程序的首部

C)在C语言中预处理命令都以"#"开头

D)C语言的预处理命令只能实现宏定义和条件编译的功能

10.从下列选项中选择不会引起二义性的宏定义是。D

A)#define POWER(x)x*x B)#define POWER(x)(x)*(x)

C)#define POWER(x)(x*x) D)#define POWER(x)((x)*(x))

11.设有以下宏定义:

#define N 3

#define Y(n)((N+1)*n)

则执行语句"z=2 * (N+Y(5+1));"后,z的值为。C

A)出错B)42 C)48 D)54

12.若有宏定义#define MOD(x,y) x%y,则执行以下语句后的输出为。B int z, a=15,b=100;

z=MOD (b,a);

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

A)11 B)10 C)6 D)宏定义不合法

13.以下程序的输出结果是 D

#include

int a[3][3]={1,2,3,4,5,6,7,8,9},*p;

main()

{ p=(int*)malloc(sizeof(int));

f(p,a);

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

free(p);

}

f(int *s,int p[][3])

A)1 B)4 C)7 D)5

第11章结构体与共用体1.在16位的PC机上使用C语言,若有如下定义:D

struct data

{ int i;

char ch;

double f;

} b;

则结构变量b占用内存的字节数是。

A)1 B)2 C)8 D)11

2.设有以下说明和定义语句,则下面表达式中值为3的是。D

struct s

{ int i;

struct s *i2;

};

static struct s a[3]={1, &a[1],2,&a[2],3,&a[0]};

static struct s *ptr;

ptr=&a[1];

A)ptr->i++ B)ptr++->I C)*ptr->i D)++ptr->i

3.有以下程序:

main()

{union {

unsigned int n;

unsigned char c;

} u1;

u1.c='A';

printf("%c\n",u1.n);

}

执行后输出结果是 C

A)产生语法错B)随机值C)A D)65

4.设有以下说明语句:C

struct stu

{ int a;

float b;

} stutype;

则下面的叙述正确的是。

A)struct是结构体类型名B)struct stu是用户定义的结构体变量名C)stutype是用户定义的结构体变量名D)a和b都是结构体变量名

5. 以下程序输出结果是 B

#include

typedef union

{ long i;

int k[5];

char c;

} DA TE;

struct date

{ int cat;

DATE cow;

double dog;

} too;

DATE max;

main()

{printf("%d\n",sizeof(struct date)+sizeof(max));

}

A)25 B)30 C)18 D)8

6.以下对结构体变量stu1中成员age的非法引用是。B

{ int age;

int num;

}stu1, *p;

p=&stu1;

A)stu1.age B)student.age C)p->age D)(*p).age

7.下列程序中,结构体变量a所占内存字节数是。C

union U

{ char st[4];

int i;

long l;

};

struct A

{ int c;

union U u;

}a;

A)4 B)5 C)6 D)8

8.设有以下说明语句:

struct ex {

int x ;float y;char z ;

} example;

则下面的叙述中不正确的是。B

A)struct是结构体类型的关键字B)example是结构体类型名

C)x,y,z都是结构体成员名D)structex是结构体类型名

9.若有下面的说明和定义:

struct test {

int ml; char m2;float m3;

union uu {

char ul[5];

int u2[2];

} ua;

} myaa;

则sizeof(struct test )的值是。A

A)12 B)16 C)14 D)9

10.已知:

union

{ int i;

char c;

float a;

} test;

则sizeof(test)的值是。A

A)4 B)5 C)6 D)7

11.以下对C语言中联合类型数据的正确叙述是。C

A)一旦定义了一个联合变量后,即可引用该变量或该变量中的任意成员

B)一个联合变量中可以同时存放其所有成员

C)一个联合变量中不能同时存放其所有成员

D)联合类型数据可以出现在结构体类型定义中,但结构类型数据不能出现在联合类型定义中

结构体操作题:

1.下列给定程序是建立一个带头节点的单向链表,并用随机函数为各节点赋值。函数fun的功能是将单向链表节点(不包括头节点)数据域为偶数的值累加起来,并且作为函数值返回。

请改正函数fun中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

#include

#include

#include

typedef struct aa

{ int data;

struct aa *next;

} NODE;

int fun(NODE *h)

{ int sum=0;

NODE *p;

p=h->next;

/**********found**********/

while (p!=NULL)

{ if (p->data%2==0)

sum+=p->data;

/**********found**********/

p=p->next;

}

return sum;

}

NODE *creatlink(int n)

{ NODE *h , *p, *s;

int i;

h=p=(NODE*)malloc(sizeof(NODE));

for (i=1;i

{ s=(NODE*)malloc(sizeof(NODE));

s->data=rand( )%16;

s->next=p->next;

p->next=s;

p=p->next;

}

p->next=NULL;

return h;

}

outlink(NODE *h)

{ NODE *p;

p=h->next;

printf("\n\nTHE LIST:\n\n HEAD");

while (p)

{ printf("->%d",p->data);

p=p->next;

}

printf("\n");

}

main ( )

{ NODE *head;

int sum;

head=creatlink (10);

outlink (head);

sum=fun (head);

printf("\nSUM=%d",sum);

}

2.下列给定程序中已建立了一个带头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

请在空白处填入正确内容,使程序得出正确的结果。

(源程序在考生文件夹"WEXAM\00000000"下)

不得增行或删行,也不得更改程序的结构!

#include

#include

#define N 8

typedef struct list

{ int data;

struct list *next;

} SLIST;

void fun( SLIST *h)

{ SLIST *p, *q;

p=h->next;

if (p!=NULL)

{ q=p->next;

C语言基础知识_测试题

C语言程序设计基础测试题 一、单选 [1] 下面叙述中错误的是____。 A. 复合语句中定义的函数只在该复合语句中有效 B. return( )语句中的括号中,可以是变量,常量或有确定值的表达式 C. 形式参数也是局部变量 D. 主函数中定义的变量在整个程序中都是有效的 [2]下列说法中正确的是____。 A.带参数的宏定义中的参数是没有类型的 B.宏展开将占用程序的运行时间 C.宏定义命令是C语言中的一种特殊语句 D.使用#include命令包含的头文件必须以“.h"为后缀 [3.] 若函数的形参为一维数组,则下列说法中正确的是____。 A.调用函数时的对应实参必为数组名 B.形参数组可以不指定大小 C.形参数组的元素个数必须等于实参数组的元素个数 D.形参数组的元素个数必须多于实参数组的元素个数 [4]. 系统的标准输出设备是____。 A.键盘 B.硬盘 C.内存 D.显示器 [5] 下面叙述中正确的是____。 A.全局变量在定义它的文件中的任何地方都是有效的 B.全局变量在程序的全部执行过程中一直占用内存单元 C. C语言的switch语句中case后可为常量或表达式或有确定值的变量及表达式 D. 说明函数时必须明确其参数类型和返回类型 [6]. C程序的基本结构单位是____。 A.文件 B.语句 C.函数 D.表达式 [7] 对于定义,char *aa[2]={"abcd","ABCD"},选项中说法正确的是____。 A.aa数组元素的值分别是"abcd"和"ABCD" B.aa是指针变量,它指向含有两个数组元素的字符型一维数组 C.aa数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址 D.aa数组的两个元素中各自存放了字符'a'和'A'的地址 [8]. 任何一个C语言的可执行程序都是从____开始执行的。 A.程序中的第一个函数 B.main( )函数的入口处

2019年电大C语言考试题库(c语言小题+编程)

C语言程序设计课程期末复习练习 一、单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( )。 A. main B. MAIN C. name D. function 2.每个C语言程序文件的编译错误分为()类。 A. 1 B. 2 C. 3 D. 4 3. 字符串"a+b=12\n"的长度为()。 A. 6 B. 7 C. 8 D. 9 4. 在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为()语句。 A. for B. if C. do D. while 5. 在下面的do-while循环语句中,其循环体语句被执行的次数为()。 int i=0; do i++; while(i<10); A. 4 B. 3 C. 5 D. 10 6. 将两个字符串连接起来组成一个字符串时,选用的函数为()。 A. strlen() B. strcap() C. strcat() D. strcmp() 7. 若用数组名作为函数调用的实参,传递给形参的是()。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 8. 假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大( )个字节。 A. 4 B. 8 C. 16 D. 32 9. 假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为()。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 10. 从一个数据文件中读入以换行符结束的一行字符串的函数为()。 A. gets() B. fgets() C. getc() D. fgetc() 11. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. c 12. 设有两条语句为“int a=12; a+=a*a;”,则执行结束后,a的值为( )。 A. 12 B. 144 C. 156 D. 288 13. 带有随机函数调用的表达式rand()%20的值在( )区间内。 A. 1~19 B. 1~20 C. 0~19 D. 0~20 14. for循环语句“for(i=0; i

计算机二级C语言公共基础知识

计算机二级C语言公共基础知识手册 1.算法的时间复杂度是指执行算法所需要的计算工作量.算法的工作量由算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数. 2.算法的空间复杂度是指算法执行过程中所需要的存储空间,存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间. 3.一个算法通常由两种基本要素组成:一是对数据对象的运算和操作;而是算法的控制结构. 4算法设计基本方法主要包括有列举法、归纳法、递推、递归和减半递推技术. 5.数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构).、 6.数据处理是指对数据集合中的各元素以各种方式进行运算,包括插入、删除、查找、更改等运算,也包括对数据元素进行分析. 7.数据元素是指相互有关联的数据元素的集合. 8.前驱和后继关系是数据元素之间的一个基本关系,但前驱个后继关系所表示的实际意义随具体对象的不同而不同.一般说来,数据元素之间的任何关系都可以用前驱和后继关系来描述. 9.常用的存储结构有顺序链接、索引等存储结构.而采用不同的存储结构,其数据处理的效率是不同的.

10.在数据结构中,没有前驱的结点称为根结点;没有后继的结点称为终端结点(叶子结点);数据结构中除了根结点与终端结点外的其他结点一般称为内部结点. 11.在数据结构中,结点几结点的相互关系有线性结构和非线性结构. 12.线性结构(线性表):非空数据结构满足(1)有且只有一个根结点;(2)每个结点最多有一个前驱,也最多有一个后继. 在一个线性结构中插入或删除任何一个结点后还应该是线性结构,若删除或插入后不是线性结构,则该数据结构不能称为线性结构. 13.线性表是最简单、最常用的一种数据结构.有一组数据元素组成.在稍微复杂的线性表中,一个数据元素可以由若干个数据项组成,在这种情况下,常把数据元素称为记录,含有大量记录的线性表就称作文件. 14.非空线性表如与如下结构特征(1)有且只有一个根结点A1,它无前驱;(2)有且只有一个终端结点AI,它无后继;(3)除根结点与终端结点外,其他所有结点有且只有一个前驱,也只有一个后继.线性表中结点的个数N称为线性表的长度.当 N=0时,称其为空表. 15.在计算机中存放线性表,一种最简单的方法是顺序存储,也称顺序分配. 16.线性表的顺序存储结构具有以下两种基本特点:(1)线性表中所有元素所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的. 在线性表的存储结构中,其前后继两个元素在存 储空间中是紧邻的,且前驱元素一定存储在后继元素的前面. 17.假设线性表中第一个数据元素的存储地址是ADR(AI),每一个数据元素占K 个字节,则线性表中第I个元素AI在计算机存储空间中的存储地址是 ADR(AI)=ADR(A1)+(I-1)K.

C语言程序设计基础试题及答案

第一部分C语言基础 一、选择题 1、以下正确得C语言标识符就是() A。%X B。a+b?C.a123 D.test! 2、已定义int a,b;则以下不正确得C语句就是() A.a*=5;??B。b/=2;? C.a+=1、75;?D.b&&=a; 3、若x、i、j与k都就是整型变量,则执行下面表达式后x得值为( ) x=(i=4,j=16,k=32) A.4?B.16 ?C.32 D.52 4、C语言中得标识符只能由字母、数字与下划线三种字符组成,且第一个字符( ) A.必须就是字母???B.必须为下划线? C.必须为字母或下划线D.可以就是字母、数字、下划线中得任一字符 5、下面正确得字符常量就是( ) A.“c”? B。’\\”? C.‘w’??D.” 6、设int a=2,b=0,c;则执行语句c+=b&&a--后, c得结果为( )。 A.0,1B.1,0 ?C.2,0 D.不确定 7、以下不正确得C语言标识符就是()?A) int B)a_1_2?C)ab1exe D)_x 8、以下就是正确得C语言标识符就是( )。?A)#define?B)_123 C) %d D) \n 9、下列四组字符串中都可以用作C语言程序标识符得一组就是() 。?A) prin tB)i\am C)Pxq D)str_l ???oodbs tart$it line# _3d one_half My-〉bookCpp ? pow 10、下面各选项组中,均就是C语言关键字得组就是()。?A)auto,enu

m,include B)switch,typedef,continue?C)signed,union,scanf?D)if,s truct,type 11、下列不属于C语言关键字得就是( ) 。 A)default?B)register C)enum ?D)external 12、C语言程序从main()函数开始执行,所以这个函数要写在( )。?A) 程序文件得开始?B)程序文件得最后?C)它所调用得函数得前面 D) 程序文件得任何位置 13、下列关于C语言得叙述错误得就是( ) A)大写字母与小写字母得意义相同?B) 不同类型得变量可以在一个表达式中 C)在赋值表达式中等号(=)左边得变量与右边得值可以就是不同类型?D) 同一个运算符号在不同得场合可以有不同得含义 14、在C语言中,错误得int类型得常数就是( ) 。?A)32768?B)0 C)037?D) 0xAF 15、将字符g赋给字符变量c,正确得表达式就是( )。 A) c=\147 ?B)c="\147" ?C)c='\147' 16、下列转义字符中错误得一个就是( )。 A) ’\000’ B)'\0014' ?C) ’\x111’ D) ’\2’ 17、将空格符赋给字符变量c,正确得赋值语句就是( )。 A) c=’\0’ B) c=NULL C)c=0 D)c=32 18、已知:char a=’\70’;则变量a中()。 A)包含1个字符?B)包含2个字符?C) 包含3个字符?D) 说明非法 19、字符串"\”EOF\n=-\61\””得长度就是( )。 A)8 ?B) 9?C)14?D)非法字符串

大学c语言考试题库含答案

================================================== 题号:1482 执行以下程序段后,输出结果和a的值是()。int a=10; printf("%d",a++); A、11 和10 B、11 和11 C、10 和11 D、10 和10 答案: C 题号:2100 已知字符'A'的ASCⅡ代码值是65,字符变量c1的值是'A',c2的值是'D'.执行语句printf("%d,%d",c1,c2-2);后,输出结果是 A、65,66 B、A,B C、65,68 D、A,68 答案: A 题号:5055 相同结构体类型的变量之间,可以()。 A、比较大小 B、地址相同 C、赋值 D、相加 答案: C 题号:3217 int a[10];合法的数组元素的最小下标值为()。 A、1 B、0 C、10 D、9 答案: B

能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达式是 A、a>=0 | a<=10 B、a>=10 or a<=0 C、a>=10 && a<=0 D、a>=10 || a<=0 答案: D 题号:157 main() {int x=1,a=0,b=0; switch (x) { case 0: b++; case 1: a++; case 2: a++;b++;} printf("a=%d,b=%d",a,b); }该程序的输出结果是( ) A、2,2 B、2,1 C、1,1 D、1,0 答案: B 题号:4784 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的 数据类型为()。 A、不确定 B、double C、int D、float 答案: B 题号:1647 以下程序中,while循环的循环次数是______ main() { int i=0;

年C语言程序设计基础期末考试试卷‘B’及答案

年C语言程序设计基础期 末考试试卷‘B’及答案 The following text is amended on 12 November 2020.

一、单项选择题 1. 在C语言中,下面字符串能用作变量名的是( )。 A、a+b B、auto C、2-and D、a2 2. 若double x=2,y;则执行y=x+3/2;后,y的值是( )。 A、 B. C. D. 3 3. 下列关于C语言中字符常量与字符串常量的叙述中,错 误的是( )。 A、字符常量是用单撇号括起来的一个字符 B、空格字符也可用作字符常量 C、字符串常量是用单撇号括起来的一个字符序列 D、字符串常量是用双撇号括起来的一个字符序列 4. 若有以下变量说明和数据的输入方式,则正确的输入语 句为( )。

变量说明:float x1,x2; 数据的输入方式:<回车> <回车> A、scanf(“%f,%f”,&x1,&x2); B、scanf(“%f%f”,&x1,&x2); C、scanf(“%,%”,&x1,&x2); D、scanf(“%%”,&x1,&x2); 6. 在一个源文件中定义的全局变量的作用域为()。 A. 本文件的全部范围 B. 从定义该变量开始至本文件结束 C. 本函数的全部范围 D. 本程序的全部范围

7. 当调用函数时,实参是一个数组名,则向函数传送的是( )。 A、数组的长度 B、数组的首地址 C、数组每一个元素的地址 D、数组每个元素中的值 8.若j为整型变量,则下面while循环( )。 j=10; while(j!=0) j=j-1; A、执行0次 B、执行1次 C、执行10次 D、执行无限次 9. 在while(x)语句中的x与下面条件表达式等价的 是:( )。 A、x!=0 B、 x==1 C、x!=1 D、x==0 10. 以下对C语言函数的描述中,正确的是( )。 A、调用函数时,参数可以是表达式

c语言公共基础知识

二级公共基础知识总结 第一章数据结构与算法 1.1 算法算法:是指解题方案的准确而完整的描述。算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。指令系统:一个计算机系统能执行的所有指令的集合。基本运算包括:算术运算、逻辑运算、关系运算、数据传输。算法的控制结构:顺序结构、选择结构、循环结构。算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。算法复杂度:算法时间复杂度和算法空间复杂度。算法时间复杂度是指执行算法所需要的计算工作量。算法空间复杂度是指执行这个算法所需要的内存空间。 1.2 数据结构的基本基本概念数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;

(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。数据结构是指相互有关联的数据元素的集合。数据的逻辑结构包含:(1)表示数据元素的信息;(2)表示各数据元素之间的前后件关系。数据的存储结构有顺序、链接、索引等。线性结构条件:(1)有且只有一个根结点;(2)每一个结点最多有一个前件,也最多有一个后件。非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构线性表是由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。非空线性表的结构特征:(1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。线性表的顺序存储结构具有以下两个基本特点:(1)线性表中所有元素的所占的存储空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。ai的存储地址为:ADR(ai)=ADR(a1)+(i-1)k,,ADR(a1)为第一个元素的地址,k代表每个元素占的字节数。顺序表的运算:插入、删除。 (4)1.4 栈和队列栈是限定在一端进行插入与删除的线性表,允许

C语言试题及答案

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。 第2章数据类型运算符和表达式习题 1. 单项选择题 (1) 以下选项中,正确的 C 语言整型常量是 D 。 A. 32L B. 510000 C. -1.00 D. 567 (2) 以下选项中, D 是不正确的 C 语言字符型常量。

国家二级C语言公共基础知识要点及历年真题

1算法 1.1 算法的基本概念 1.算法的概念(必记): 算法是指解题方案的准确而完整的描述。 分析:要用计算机实现某一任务时,先应设计出一整套解决问题的指导方案,然后具体实现。整套的指导方 案称之为算法,而具体的实现称之为程序。并且在设计指导方案时,可不用过多考虑到实现程序的具体细节(即可以一点点的理想化),但在程序实现时,必须受到具体环境的约束(现实不同于理想)。 结论:算法不等于程序,也不等于计算方法,程序的编制不可能优于算法的设计。 2.算法的基本特征(必记): a.可行性:由于算法总是在某个特定的计算工具上实现并执行的,因而受到计算工具的限制,所以在设计算法时,要考虑到设计的算法是否是可性的。 b.确定性:算法中的每一个步骤都必须是有明确定义的,不允许有模棱两可的解释,也不允许有多义性。 c.有穷性:算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。 d.拥有足够的情报:算法有相应的初始数据。 3.算法的基本要素: 一个算法通常由两个基本要素所组成:一是对数据对象的运算和操作,二是算法的控制结构。 基本运算和操作分为四类: a. 算术运算: (加、减、乘、除等运算) b. 逻辑运算: (与、或、非等运算) c. 关系运算: (大于、小于、等于、不等于等运算) d. 数据传输: (赋值、输入、输出等操作) 算法的控制结构: 算法中各操作之间的执行顺序称之为算法的控制结构。一个算法一般都可以用顺序、选择、循环三种基本控 制结构组合而成。 注意:一个计算机系统能执行的所有指令的集合,称为该计算机系统的指令系统。 4.算法设计基本方法: 列举法、归纳法、递推、递归、减半递推技术、回溯法。 1.2 算法的复杂度 (必记) 算法的复杂度主要包括时间复杂度和空间复杂度。 1.算法的时间复杂度: 是指执行算法所需要的计算工作量,是由算法所执行的基本运算次数来度量。 可用平均性态和最坏情况两种分析方法。其中平均性态分析是指用各种特定输入下的基本运算次数的加权平 均值来度量算法的工作量;而最坏情况分析是指在所有特定输入下的基本运算次数据的最大次数。 2.算法的空间复杂度: 一个算法的空间复杂度,是指执行这个算法所需要的内存空间。包含有三部分所组成:算法程序所占的空间 +输入的初始数据所占的存储空间+算法执行过程中所需要的额外空间。 历届的考题: 1、算法具有五个特性,以下选项中不属于算法特性的是(______) [2005.4] A)有穷性B)简洁性C)可行性D)确定性 2、问题处理方案的正确而完整的描述称为______。[2005.4] 3、下列叙述中正确的是________。[2006.9] A)一个算法的空间复杂度大,则其时间复杂度也必定大

(完整版)C语言考试题库之判断题(2)

三、判断题(10道小题,共10分) 1、C 语言具有简洁明了的特点。(1分) 正确 2、预处理命令的前面必须加一个“#”号。(1分) 正确 3、标准格式输入函数scanf()可以从键盘上接收不同数据类型的数据项。(1分) 正确 4、在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用{}括起来组成一个复合语句。(1 分) 正确 5、continue 不是结束本次循环,而是终止整个循环的执行。(1分) 错误 6、在对数组全部元素赋初值时,不可以省略行数,但能省略列数(1分) 错误 7、.函数的实参传递到形参有两种方式值传递和地址传递(1分) 正确 8、直接访问就是直接利用变量的地址进行存取直接访问(1分) 正确 9、共用体变量可以作结构体的成员,结构体变量也可以作共用体的成员。(1分) 正确 10、文件指针和位置指针都是随着文件的读写操作在不断改变。(1分) 错误 11、C 语言标准格式输入函数scanf() 的参数表中要使用变量的地址值。(1分) 正确 12、浮点型常量的指数表示中,e 是可以省略的。(1分) 错误 13、任何表达式语句都是表达式加分号组成的。(1分) 正确 14、在switch语句中,每一个的case常量表达式的值可以相同。(1分) 错误 15、do-while循环的while后的分号可以省略。(1分) 错误 16、用字符串方式赋值比用字符逐个赋值要多占一个字节,用于存放字符串结束标志'\0'。正确 17、C语言函数返回类型的默认定义类型是void(1分) 错误 18、可以用一个指针变量指向一个函数,然后通过该指针变量调用此函数(1分) 正确 19、枚举类型中的元素都具有一个整型值。(1分) 正确 20、C 语言是一种具有某些低级语言特征的高级语言。(1分) 正确 21、case语句后如没有break,顺序向下执行。(1分)正确

计算机二级c语言公共基础知识(免费的)

计算机二级C语言的二级共公基础知识教程 第一章数据结构与算法 1.1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 1.2 数据结构的基本基本概念

数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构;(2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构; (3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位臵只取决于自己的序号,元素之间的相对位臵是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件;

C语言考试试题基础版

一、选择题 1. 在每个C 程序中都必须包含有这样一个函数,该函数的函数名为 。 A. main B. MAIN C. name D. function 2. 在以下关于C 语言的注释的叙述中,不正确的是 。 A .注释可用"/*"、"*/"形式表示,也可用"//"形式表示 B .编译器在编译一个程序时,将跳过注释,不对其进行处理 C .编译器在编译一个程序时,可发现注释中的单词拼写错误 D .程序中注释的多少不会影响所生成的可执行文件的长度 3. 以下叙述不正确的是 。 A .在C 程序中,严格区分大小写字母 B .一个C 源程序有且仅有一个main 函数 C .在C 程序中,注释只能位于一条语句的后面 D .一个C 程序总是从main 函数开始执行 4. 下列合法的标识符为 A. abde+ B. #KDJF C. 67KDJ D. DK3_ 5. 关于字符串和字符的关系正确的是 A. “A ”与’A ’是相同的 B. 字符串是常量,字符是变量 C. “A ”与’A ’是不同的 D. “A ”与“A ”是相同的 6. 下面关于语句的说法正确的是 A. 下面这两段程序的执行效果是一致的 B. 空语句是只有一个分号的语句,它其实什么也不干 C. 语句的构成不一定需要分号 D. 语句的书写对程序的运行不起作用,因此可以随便写都可以 7. 以下各标识符中,合法的用户标识符组为 。 A. PAd ,P#d ,b-b ,abc ,_0123,ssiped B. cin ,a10,CPP ,float ,del_word ,signed C. void ,max ,hiy ,,list ,*jer if (x>y) {z=x; s=z*z;} else {z=y;s=1/(z*z);} if (x>y) z=x; s=z*z; else z=y;s=1/(z*z);

计算机二级C语言公共基础知识

计算机公共基础部分知识归纳 第一章数据结构与算法 算法---是一组严谨地定义运算顺序的规则 算法的基本要素---一是对数据对象的运算和操作,二是算法的控制结构 算法设计基本方法---列举法、归纳法、递推、递归、减半递推 算法的复杂度---包括时间复杂度和空间复杂度 时间复杂度---执行算法所需的计算工作量 空间复杂度---执行算法所需的内存空间 数据结构---相互有关联的数据元素的集合。如春、夏、秋、冬;18、11、35、23、16。。。; 父亲、儿子、女儿等都是数据元素。 前件---数据元素之间的关系,如父亲是儿子和女儿的前件 后件---如儿子是父亲的后件 结构---指数据元素之间的前后件关系 数据的逻辑结构—是指反映数据元素之间逻辑关系,而与它们在计算机中的存储位置无关数据的存储结构(物理结构)---数据的逻辑结构在计算机存储空间中的存放形式,数据元素 在计算机存储空间的位置关系可能与逻辑关系不同。 根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据结构分两类---线性结构与 非线性结构 线性结构(线性表)---满足下列两个条件(1)有且只有一个根结点(2)每一个结点最多有 一个前件和后件。则称该数据结构为线性结构,否则为非线 性结构。 线性表是最简单、最常用的一种数据结构,其数据元素之间的相对位置是线性的,其存储方 式为顺序存储的,如数组 栈---是限定在一端进行插入与删除的线性表,一端封闭,另一端开口,其操作原则是“先进 后出”,栈的运算有入栈、退栈、读栈顶元素 队列---是指在一端进行插入(称为队尾)而在另一端进行删除(称为队头)的线性表,其操 作规则是“先进先出”,其运算有入队和退队。 树---是一种简单的非线性结构,而且是层次结构,是倒立的大树,有根结点、父结点、子结 点、叶子结点。根结点在第一层,一个结点所拥有的后件的 个数称为该结点的度,所有结点中最大的度称为树的度, 树的最大层次称为树的深度。 二叉树---(1)非空二叉树只有一个根结点(2)每一个结点最多有两棵子树(左子树和右子 树),其存储结构为链式。 二叉树性质---(1)K层上最多有2(K-1)个结点(2)深度为m的二叉树最多有2m-1个结点(3)度为0的结点(叶子结点)比度为2的结点多一个(4)具有n个结点的 二叉树,其深度至少为[Log2n]+1,其中[Log2n]表示对Log2n 取整 满二叉树---除最后一层外,其余层的结点都有两个子结点 完全二叉树---除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的 若干结点,叶子结点只可能在层次最大的两层上出现。满二 叉树是完全二叉树,而完全二叉树不是满二叉树。完全二叉 树有两个性质:(1)具有n个结点的完全二叉树的深度为

C语言试题库(完整版)

C语言试题库 一、单项选择 第一章 C语言概述 (1)一个C程序的执行是从 A、本程序的MAIN函数开始,到MAIN 函数结束。 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C、本程序的MAIN函数开始,到本程序的最后一个函数结束。 D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。(2)以下叙述正确的是 A、在C程序中,MAIN函数必须位于程序的最前面。 B、 C程序的每行中只能写一条语句。 C、 C语言本身没有输入输出语句。 D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。(3) C语言规定,在一个源程序中,MAIN主函数的位置是在: A、必须在最前面。 B、必须在系统调用的库函数的后面 C、可以在任意位置。

D、必须在最后面 (4)一个C程序是由: A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 (5)以下叙述不正确的是: A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个MAIN函数 C、 C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 第二章数据类型、运算符与表达式 (1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=( i=4, j=16, k=32) A、4 B、16 C、32

D、52 (2)下列四组选项中,均不是C语言键字的选项是 A、define , IF, type B、getc, char, printf C、include, scanf, case E、 if, struct, type (3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,do B、float,1a0, _A C、b-a, goto, int D、_123, temp, INT (4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3 B、3*a*e/bc C、3*a*e/b*c D、a*e/c/b*3 (5)已知各变量的类型说明如下:

C语言公共基础知识

C语言公共基础知识标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

第一部分公共基础部分知识归纳 数据结构与算法 算法---是一组严谨地定义运算顺序的规则 算法的基本要素---一是对数据对象的运算和操作,二是算法的控制结构 算法设计基本方法---列举法、归纳法、递推、递归、减半递推 算法的复杂度---包括时间复杂度和空间复杂度 时间复杂度---执行算法所需的计算工作量 空间复杂度---执行算法所需的内存空间 数据结构---相互有关联的数据元素的集合。如春、夏、秋、冬;18、11、35、23、16。。。;父亲、儿子、女儿等都是数据元素。 前件---数据元素之间的关系,如父亲是儿子和女儿的前件 后件---如儿子是父亲的后件 结构---指数据元素之间的前后件关系 数据的逻辑结构—是指反映数据元素之间逻辑关系,而与它们在计算机中的存储位置无关 数据的存储结构(物理结构)---数据的逻辑结构在计算机存储空间中的存放形式,数据元素在计算机存储空间的位置关系可能与逻辑关系不同。 根据数据结构中各数据元素之间前后件关系的复杂程度,可将数据结构分两类---线性结构与非线性结构 线性结构(线性表)---满足下列两个条件(1)有且只有一个根结点(2)每一个结点最多有一个前件和后件。则称该数据结构为线性结构,否则为非线性结构。 线性表是最简单、最常用的一种数据结构,其数据元素之间的相对位置是线性的,其存储方式为顺序存储的,如数组 栈---是限定在一端进行插入与删除的线性表,一端封闭,另一端开口,其操作原则是“先进后出”,栈的运算有入栈、退栈、读栈顶元素 队列---是指在一端进行插入(称为队尾)而在另一端进行删除(称为队头)的线性表,其操作规则是“先进先出”,其运算有入队和退队。 树---是一种简单的非线性结构,而且是层次结构,是倒立的大树,有根结点、父结点、子结点、叶子结点。根结点在第一层,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度,树的最大层次称为树的深度。 二叉树---(1)非空二叉树只有一个根结点(2)每一个结点最多有两棵子树(左子树和右子树),其存储结构为链式。

大学C语言考试题库及答案

精选考试类应用文档,如果您需要使用本文档,请点击下载,另外祝您生活愉快,工作顺利,万事如意! 大学C语言考试题库及答案 姓名成绩 温馨提示:同学们,经过培训学习,你一定积累了很多知识,现在请认真、仔细地完成这张试题库吧。加油! 一单项选择题库 1. 在C语言中,以 D 作为字符串结束标志 A)’\n’ B)’ ’ C) ’0’ D)’\0’ 2.下列数据中属于“字符串常量”的是( A )。 A.“a” B.{ABC} C.‘abc\0’ D.‘a’ 若干个字符构成字符串 在C语言中,用单引号标识字符;用双引号标识字符串 选项B,C,分别用{}和’’标识字符串 选项D,标识字符。 3、以下说法中正确的是( C )。 A、C语言程序总是从第一个定义的函数开始执行

B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是(B )。 A) C程序的工作过程是编辑、编译、连接、运行 B) C语言不区分大小写。 C) C程序的三种基本结构是顺序、选择、循环 D) C程序从main函数开始执行 5.下列正确的标识符是(C )。 A.-a1 B.a[i] C.a2_i D.int t 6.下列C语言用户标识符中合法的是(B )。 A)3ax B)x C)case D)-e2 E)union 7.下列四组选项中,正确的C语言标识符是(C )。 A)%x B)a+b C)a123 D)123 8、下列四组字符串中都可以用作C语言程序中的标识符的是(A )。 A、print _3d db8 aBc B、I\am one_half start$it 3pai C、str_1 Cpp pow while D、Pxq My->book line# His.age 9.C语言中的简单数据类型包括(D )。 A、整型、实型、逻辑型 B、整型、实型、逻辑型、字符型 C、整型、字符型、逻辑型 D、整型、实型、字符型 10.在C语言程序中,表达式5%2的结果是 C 。

C语言编程基础考试试题

C语言编程基础考试试题 文档名称文档密级 C语言编程基础考试 [考前说明]本题目中不考虑头文件引用问题(假定已经包含正确的头文件),C 语言的标 准函数都可用;如果不特别说明, 假定程序运行环境为:操作系统Windows 2000, VC6.0编译环境,缺省为四字节对齐, X86(80586)CPU处理器(32位小字节序处理器). 一、单选题 1、给出以下定义: char acX[ ]= "abcdefg"; char acY[ ]= {'a','b','c','d','e','f','g'}; 则正确的叙述为( ) A) 数组acX和数组acY等价 B) 数组acX和数组acY的长度相同 C) 数组acX的长度大于数组acY的长度 D) 数组acX的长度小于数组Y的长度 2、 void example(char acHello[]) { printf("%d", sizeof(acHello)); return; } void main()

{ char acHello[] = "hello"; example(acHello); return; } 的输出是( ) A 4 B 5 C 6 D不确定 3、以下叙述中不正确的是( ) A) 在不同的函数中可以使用相同名字的变量 B) 函数中的形式参数是在栈中保存 C) 在一个函数内定义的变量只在本函数范围内有效 D) 在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数 中的成对括号构成的代码) 4、设有如下定义: unsigned long pulArray[] = {6, 7, 8, 9, 10}; unsigned long *pulPtr; 则下列程序段的输出结果为( ) 1 文档名称文档密级 pulPtr = pulArray; *(pulPtr + 2) += 2; printf ("%d,%d\n", *pulPtr, *(pulPtr + 2)); A)8,10 B)6,8 C)7,9 D)6,10

c语言学习知识公共基础知识

公共基础知识总结 第一章数据结构与算法 1.1 算法 1.2 数据结构的基本基本概念 (1 (2 线性结构条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 1.3 线性表及其顺序存储结构 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 1.4 栈和队列 1、先进后出 FILO; 1、支持子程序调用; 2、具有记忆功能; 3、可以不用顺序存放数据; 4、只能够在top首部进行操作,bottom是绝对不动的; 5、栈的存放数据的个数为 num = (bottom – top)+1; 1、Rear指针指向队尾,front指针指向队头。 3、先进先出FIFO,或者是后进后出LILO 2、循环队列里面的个数计算方法: A、rear > front 的时候, num = rear – front; B、rear < front 的时候, num = rear + n – front; 1.5 线性链表 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。 链式存储方式即可用于表示线性结构,也可用于表示非线性结构。 1.6 树与二叉树 在树结构中,一个结点所拥有的后件的个数称为该结点的度,所有结点中最大的度称为树的度。树的最大层次称为树的深度。 子树。 二叉树的基本性质:必考的题目

(1)在二叉树的第k层上,最多有2k-1(k≥1)个结点; (2)深度为m的二叉树最多有2m-1个结点; (3)度为0的结点(即叶子结点)总是比度为2的结点多一个; (4)二叉树中 n = n0 +n1 +n2 每一层上的所有结点有两个子结点,则k层上有2k-1个结点深度为m的满二叉树有2m-1个结点。 二叉树的遍历:(一般画个图要你把顺序写出来) 1.7 查找技术 顺序查找的使用情况: 长度为n的线性表,找出一个数据,最差的情况为比较n 次。 长度为n的线性表,找出一个最大数据,最差的情况为比较n-1 次。 二分查找:对于长度为n的有序线性表,最坏情况只需比较 1.8 排序技术 排序是指将一个无序序列整理成按值非递减顺序排列的有序序列。 交换类排序法:(1 (2。 插入类排序法:(1 (2 选择类排序法:(1)简单选择排序法, (2)堆排序法,最坏情况需要 第二章程序设计基础 2.1 程序设计设计方法和风格 程序设计方法有两种,结构化程序设计和面向对象程序设计。 2.2 结构化程序设计 结构化程序设计方法的四条原则是:考试重点都要背下来 1.自顶向下; 2. 逐步求精; 3.模块化; 4.限制使用goto语句。 注意,这四个特点中,最重要的是模块化。 结构化程序的基本结构和特点:顺序结构\选择结构\循环结构 2.3 面向对象的程序设计 面向对象的程序设计:以对象为核心。 面向对象具备哪些基本概念: 对象、类和实例、消息、继承、多态性、 面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一组操作组成。

相关主题
文本预览
相关文档 最新文档