文档库 最新最全的文档下载
当前位置:文档库 › 上海市计算机二级考试(C语言)复习资料题目

上海市计算机二级考试(C语言)复习资料题目

上海市计算机二级考试(C语言)复习资料题目
上海市计算机二级考试(C语言)复习资料题目

上海理工大学

上海市计算机二级考试(C语言)复习资料题目

C语言是一种面向过程的程序设计语言,函数、指针、地址和递归概念是它的难点。本复习资料以教学大纲为依据,提供各类题型和练习,重在“基本概念”、“常用算法”、“阅读分析程序”、“编程技能”等诸方面的强化训练,按照上海市计算机二级考试(C语言)的框架,提供“基础知识、读程序写结果、改错、编程序和程序指令填空”几部份,供学生学习参考,文末附习题参考解答。

第一部份:基础知识

1. 下述循环的循环次数是()

int k=2;

while(k=0)printf("%d",k);

k--;printf("\n");

A、无限次

B、0次

C、1次

D、2次

2. 在下列选项中,没有构成死循环的程序段是()

A、int i=100;

B、for(;;)

while(1)

{i=i%100+1;

if(i>100)break;

}

C、int k=1000;

D、int s=36;

do {++k;} while(k>=10000);while(s);--s;

3. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是()

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

p=a;

A、*(a+i)

B、a[p-a]

C、p+i

D、*(&a[i])

4. 下面能正确将字符串"Boy"进行完整赋值操作的语句是()

A、char s[3]={'B','o','y'};

B、char s[ ]="Boy";

C、char s[3]={"Boy"};

D、char s[3];

s[0]='B';s[1]='o';s[2]='y';

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

char arr[ ]="ABCD";

char*ptr;

for(ptr=arr;ptr

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

A、ABCD

B、A

C、D

D、ABCD

BCD

CD

D

6. C语言的auto型变量是()

A、存储在动态存储区中。

B、存储在静态存储区中。

C、存储在计算机CPU的寄存器中。

D、存储在外存储器中。

7. 测试文件是否结束函数的函数名是()

A、feof

B、EOF

C、eof

D、FEOF

8. 下面程序段的输出结果是()

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

p=a;

printf(―%d\n‖,*(*(p)+2));

A、1

B、5

C、3

D、7

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

A、必须在最开始

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

C、可以任意

D、必须在最后

10. 一个C程序的执行是从()

A、本程序的main函数开始,到main函数结束

B、本程序的第一个函数开始,到本程序文件的最后一个函数结束

C、本程序的main函数开始,到本程序文件的最后一个函数结束

D、本程序文件的第一个函数开始,到本程序main函数结束

11. 下面的四个选项中,均是不合法的用户标识符的选项是()

A、A

B、float

C、b-a

D、_123

P_0 la0 goto temp

do _A int INT

12. 下面四个选项中,均是合法转义字符的选项是()

A、‘\‘‘

B、‘\‘

C、‘\018‘

D、‘\\0‘

?\\‘ ?\017‘ ?\f‘ ?\101‘

?\n‘ ?\‖‘ ?xab‘ ?x1f‘

13. sizeof(float)是()

A、一个双精度型的表达式

B、一个整型表达式

C、一种函数调用

D、一个不合法的表达式

14. 下述循环的循环次数是()

int k=2;

while(k=0)printf("%d",k);

k--;printf("\n");

A、无限次

B、0次

C、1次

D、2次

15. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是()

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

p=a;

A、*(a+i)

B、a[p-a]

C、p+i

D、*(&a[i])

16. 若二维数组a有m列,则在a[i][j]前的元素个数为()

A、j*m+i

B、i*m+j

C、i*m+j-1

D、i*m+j+1

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

char a[ ]=‖ABCDEF‖;

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

则以下叙述正确的是()

A、a与b 数组完全相同

B、a 与b 长度相同

C、a 和b中都存放字符串

D、a数组比b 数组长度长

18. C语言中有关全局变量的说法,正确的是()

A、在使用到它的所有文件中均需定义

B、在函数体外定义一次

C、在main函数中定义

E、在main函数外定义

19. 若有数组名作为函数调用时的实参,则传递给该函数形参的是()

A、数组的首地址

B、数组的第一个元素的值

C、数组中全部元素的值

D、数组元素的个数

20. 下面程序段的输出结果是()

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

p=a;

printf(―%d\n‖,*(*(p+1)+2));

A、3

B、4

C、6

D、7

21. 不属于C语言程序基本结构的是( )

A)顺序结构B)选择结构C)函数结构D)循环结构

22. 若有定义及赋值:

int a[6][6],*p;p=*a;

则下列各式中能表示元素a[0][1]列地址的表达式是。

A)&a[0]+1 B)a[0]+1 C)*(p+1) D)p+1

23. 十进制数123转换成十六进制数是。

A) 7AH B) 7BH C) 7CH D) 7DH

24. C语言中合法的字符常量是。

A) '\058' B) 'ab' C) '\xab' D) ‖\0‖

25. 下列字符中,ASCⅡ码值最小的是。

A) A B) a C) 0 D) 空格

26.下面程序输出结果是__________

main()

{int k=0; char c='A';

do

{ switch( c++ )

{ case 'A': k++; break;

case 'B': k--;

case 'C': k+=2; break;

case 'D': k=k%2; continue;

case 'E': k=k*10; break;

default: k=k/3;

}

k++;

}while( c<'G' );

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

}

A)k=3 B)k=4 C)k=2 D)k=0

27. 设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是( )

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

28. C语言规定,函数返回值的类型是由。

A)return语句中的表达式类型所决定

B)调用函数时的主调函数类型所决定

C)调用函数时系统临时决定

D)在定义该函数时所指定的函数类型所决定

29. 下列定义中,不是指针数组定义的是。

A)int *p[5];B)float *q[4];C)int (*r)[6];D)char *w[7];30. 以下程序运行结果为__________

#define PT 3.5

#define S(x) PT*x*x

main()

{ int a=1, b=2;

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

}

A)14.0 B)31.5 C)7.5 D)10.5

31. 下面程序输出结果是( )

main()

{ char a[]="ABCDEFG", k, *p;

fun(a, 0, 2); fun(a, 4, 6);

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

}

fun(char *s, int p1, int p2)

{ char c;

while(p1

{c=s[p1]; s[p1]=s[p2];

s[p2]=c; p1++; p2--;

}

}

A)ABCDEFG B)DEFGABC C)GFEDCBA D)CBADGFE

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

main()

{ int a=1,i;

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

printf("%d",func(a));

}

func(a)

int a;

{ int b=0; static int c=1;

b++;c++;

return(a+b+c);

}

A)4444 B)4455 C)4567 D)5678

33. 执行下面的程序后, y 的值是__________

main()

{ int a[]={2,4,6,8,10};

int y=1, x, *p=a+1;

for( x=0; x<3; x++ ) y+=*(p+x);

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

}

A)17 B)18 C)19 D)20

34. 若使用下述程序段将整数30和浮点数5.5分别赋给变量a和b,那么输入应该是( ) int a;

float b;

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

A) 30 5.0 B) a=30,b=5.5 C) 30,5.5 D) a=30 b=5.5

35. 设有如下定义:

int (*ptr)();

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

A)ptr是指向一维数组的指针变量

B)ptr是指向int型数据的指针变量

C)ptr是指向函数的指针,该函数返回一个int型数据

D)ptr是一个函数名,该函数的返回值是指向int型数据的指针

36. 设有以下定义:

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

int (*ptr)[3]=a, *p = a[0];

则以下能够正确表示数组元素a[1][2]的表达式的是( )

A)*(*ptr+1)[2] B)*(*(p+5))

C)(*ptr+1)+2 D)*(*(a+1)+2)

37.若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是( )

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

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

38. 执行下面的程序后,a的值是( )

#define SQR(X) X*X

main()

{ int a=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

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

}

A)10 B)1 C)9 D)0

39. 表达式18/4*sqrt(4.0)/8的值的数据类型为( )

A)int B)float

C)double D)不确定

40. 当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是( )

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

41. 判断char 型变量ch 是否为大写字母的正确表达式( )

A) ‘A‘<=ch<=‘Z‘ B) (ch>=‘A‘)and (ch <=‘z‘)

C) (ch >= ?A‘)&&(ch <=‘Z‘) D) (?A‘<=ch )||(?Z‘>=ch)

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

main()

{ int i, k, a[10], p[3]; k=5;

for(i=0;i<10;i++) a[i]=i;

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

for(i=0;i<3;i++) k+=p[i]*2;

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

}

A)20 B)21 C)22 D)23

43. 下面程序的运行结果是( )

main()

{ char ch[7]={"65ab21"};

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)12ba56 B)6521 C)6 D)62

44. 以下程序运行后的结果是( )。

main()

{ char s[]="12345678"; int v[4]={0,1,1,0},k,i;

for (k=0; s[k];k++)

{switch (s[k])

{case'1': i=0; case'2': i=1;

case'3': i=2; case'4': i=3; }

v[i]++;

}

for(k=0;k<4;k++) printf("%d ",v[k]);

}

A)0 1 2 3 B)0 1 1 8 C)5 6 7 8 D)0 2 4 6

45. 下面程序输出结果是 ( )

main()

{int k=0; char c='A';

do

{ switch( c++ )

{ case 'A': k++; break;

case 'B': k--;

case 'C': k+=2; break;

case 'D': k=k%2; continue;

case 'E': k=k*10; break;

default: k=k/3;

}

k++;

}while( c<'G' );

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

}

A)k=3 B)k=4 C)k=2 D)k=0

46. 二进制数1110111B转换成十六进制数是( )

A)77H B)37H C)73H D)E7H

47.能正确表示a和b同时为正或同时为负的逻辑表达式是( )

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

48. 要把高级语言编写的源程序转换为目标程序,需要使用( )

A) 编辑程序B) 驱动程序C) 诊断程序D) 编译程序49.英文小写字母d的ASCII码为100(十进制),英文大写字母D的ASCII码为( ) A)50 B) 66 C) 52 D) 68

50. 下面程序输出结果是 ( )

void prtv(int *x)

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

}

main()

{ int a=25;prtv(&a);

}

A)23 B)24 C)25 D)26

51. 下面程序的输出是( )

int aa[3][3] = {{2},{4},{6}};

main()

{ int i, *p = &aa[0][0]; for (i = 0; i< 2; i++) {if(i == 0)

aa[i][i+1] = *p + 1; else ++p;

printf("%d", *p);} }

A)23

B)26

C)33

D)36

52. 该程序的执行结果是( ) #include #include main()

{ int fun(char*,int); char *p; p="1234567"; fun(p,strlen(p)); puts(p); }

int fun(char *w,int n) { char t,*s1,*s2; s1=w; s2=w+n-1; while (s1

A )1234567

B )7654321 C)1711717 D )7177171

53. 试写出下列数学表达式的C 语言表达式

54. 下面程序的输出结果是( ) #include main()

{ char *a="1234"; fun(a); printf("\n"); } fun(char *s) { char t;

if (*s) {t=*++s; putchar(t); fun(s); } }

55. 若有定义及赋值:

)

(2y x y x ++

int a[6][6],*p;p=*a;

则下列各式中能表示元素a[0][1]列地址的表达式是( )

A)&a[0]+1 B)a[0]+1 C)*(p+1) D)p+1

56. 如果用八位二进制补码表示带符号的定点整数, 则能表示的十进制数的范围是( )

A) -127到+127 B) -128到+128 C) -127到+128 D) -128到+127

57. 若有定义及赋值:

int y,*p,*p1;

p=&y;p1=p;*p1=4;

则可以输出变量y的地址的语句是( )

A)printf("%u\n",y);B)printf("%u\n",*p1);

C)printf("%u\n",*p);D)printf("%u\n",&y);

58. 设有int y,u=0,x=15,下列各项中不能使y值为0的是()

A) y=x∧x;B、y=x∣u;C、y=x>>4;D、y=x&u;

59.二进制数1111111.101B转换成十六进制数是( )

A) FF.AH B) FF.5H C)7F.AH D)7F.5H

60.字符串‖123‖在计算机内所占用的字节数是( ) 个。

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

61. C语言中最基本的数据类型包括( )

A)整型、实型、逻辑型B)整型、实型、字符型

C)整型、字符型、逻辑型D)整型、实型、逻辑型、字符型

62. C语言中有关do—while循环的说法,正确的是( )

A)在if语句内不能再使用do-while语句构成的循环

B)do-while语句构成的循环必须用break语句才能退出

C)do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环

63.在C语言中,不正确的int类型的常数是( )

A) 32768 B) 0 C) 037 D) Xaf

64. 设有如下定义:

int a=2,b=1,c=3,d=4,m=2,n=2;

则执行表达式:(m=a>b)&&(n=c>d)后,n的值为( )

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

65.设a,b类型正确,语句:printf("%d",(a=2)&&(b= -2));的执行结果是( )

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

66.设有如下定义:int x=l,y=-1;,则语句:printf("%d\n",(x--&++y));的输出结果是( )

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

67. 若有以下定义和语句,且0<=i<10,则对数组元素的错误引用是()

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

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

68. 以下程序段的输出结果是( )

char arr[ ]="ABCD";

char *ptr;

for(ptr=arr;ptr

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

A )ABCD B)A C)D D)ABCD

BCD

CD

D

69.下列定义中,不是指针数组定义的是( )

A)int *p[5];B)float *q[4];C)int (*r)[6];D)char *w[7];

70. 不能进行++和--运算的数据类型是( )

A)指针变量 B)整型变量 C)整型常量 D)字符变量

71. 已知:int a,b; 用语句 scanf("%d%d",&a,&b); 输入a、b的值时,不能作为输入数据分隔符的是( )

A) , B)空格 C)回车 D)[Tab]键

72. 为表示关系x>=y>=z,应使用C语言表达式( )

A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z)

C)(x>=y>=z) D)(x>=y)&(y>=z)

73. 以下不能对二维数组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};

74.以下不正确的描述是( )

A)break语句不能用于循环语句和switch语句外的任何其它语句

B)在switch语句中使用break语句或continue语句的作用相同

C)在循环语句中使用continue语句结束本次循环,但不会终止整个循环

D)在循环语句中使用break语句是,会跳出循环体,提前结束循环

75. 若有以下定义和语句

char s[12]="a book!";

printf("%d",strlen(s));

则输出结果是( )

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

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

main()

{ int a=2,i;

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

printf("%d",func(a));

}

func(a)

int a;

{ int b=0; static int c=3;

b++;c++;

return(a+b+c);

}

A)777 B)7 7 7 C)789 D)7 8 9

77. 执行下面的程序后, y 的值是( )

main()

{ int a[]={2,4,6,8,10};

int y=1, x, *p=a+1;

for( x=0; x<3; x++ ) y+=*(p+x);

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

}

A)17 B)18 C)19 D)20

78. 下面程序的输出是( )

int aa[3][3] = {{2},{4},{6}};

main()

{ int i, *p = &aa[0][0];

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

{if(i == 0)

aa[i][i+1] = *p + 1;

else

++p;

printf("%d", *p);}

}

A)23 B)26 C)33 D)36

79. 设有以下定义:

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

int (*ptr)[3]=a, *p = a[0];

则以下能够正确表示数组元素a[1][2]值的表达式的是( )

A)*(*ptr+1)[2] B)*(*(P+5))

C)(*ptr+1)+2 D)*(*(a+1)+2)

80. 设有如下的程序段:

char str[]="Hello";

char *ptr;

ptr=str;

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

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

81. 假设已定义 char a[10] 和 char *p=a,下面的赋值语句中,正确的是( )

A)a[10]="Turbo C" B)a="Turbo C"

C)*p="Turbo C" D)p="Turbo C"

82. 下面程序输出结果是( )

main()

{ char a[]="ABCDEFG", k, *p;

fun(a, 0, 2); fun(a, 4, 6);

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

}

fun(char *s, int p1, int p2)

{ char c;

while(p1

{c=s[p1]; s[p1]=s[p2];

s[p2]=c; p1++; p2--;

}

}

A)ABCDEFG B)DEFGABC C)GFEDCBA D)CBADGFE

83. 下列程序的输出结果是( )

main()

{ int a[5]={2,4,6,8,10},*p,**k;

p=a; k=&p;

printf("%d ",*(p++));

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

}

A)4 4 B)2 2 C)2 4 D)4 6

84. 如有 struct student

{ int no;

char name[20];

char sex;

struct

{ int year;

int month;

int day;

} birth;

};

struct student s;

对变量s赋值"1984年11月11日"正确方式是( )

A)year=1984; month=11; day=11;

B)birth.year=1984; birth.month=11; birth.day=11;

C)s.year=1984; s.month=11; s.day=11;

D)s.birth.year=1984; s.birth.month=11; s.birth.day=11;

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

main()

{ union

{char i[2];

int k;

}r;

r.i[0]=0; r.i[1]=2;

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

}

A)2 B)512 C)0 D)不确定

86. C语言中,文件由__________

A)记录组成 B)由数据行组成

C)由数据块组成 D)由字符(字节)序列组成

87. 要判断char型变量m是否是数字字符,可以使用表达式( )

A) 0<=m && m<=9 B) '0'<=m && m<='9'

C) "0"<=m && m<="9" D) 0<=m & m<=9

88.以下正确的语句是( )

A) int a[1][4] = {1,2,3,4,5};

B) float x[3][ ] = {{1},{2},{3}};

C) long b[2][3] = {{1},{1,2},{1,2,3}};

D) double y[ ][3] = {0};

89. 执行下面的程序后,a的值为( )

main()

{ int a,b;

for(a=1,b=1;a<=100;a++)

{if(b>=20) break;

if(b%3==1)

{b+=3;continue; }

b-=5;

}

}

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

90. 下面程序的运行结果是( )

main()

{ char ch[7]={"65ab21"};

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)12ba56 B)6521 C)6 D)62

91. 若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式为( )

A)p+1 B)a+1 C)a++ D)++p

92. struct student

{ int age;

int num;

}stud1,*p;

p=stud1;

对结构体变量stud1中成员age的不正确引用方式为( )

A)stud1.age B)student.age

C)(*p).age D)p->age

93. 若有以下的说明,则输出结果为( )

union un

{ int a;

char c[2];

}w;

w.c[0]=0x49;w.c[1]=0x48;

printf("%x\n",w.a);

A)4948 B)4849 C)480049 D)490048

94. C语言中的文件类型只有( )

A)索引文件和文本文件两种 B)ASCII文件和二进制文件两种

C)文本文件一种 D)二进制文件一种

95.请写出将整数n(0≤n≤9)转化为数字字符(ASCII字符)的表达式。

96. 写出表达式(0x1234 & 0xDF) << 8 的16进制结果。

97. 分别写出下面两式的计算结果(括号内是二进制数):

(11010101)&(01001011) 和(11010101)&&(01001011)

98.试计算以下表达式的值

( int) ((( float )32 / 5 + (int )(6.8) * 2.5 ) * 4)

99. 表达式(11^5) 的结果为:

100. 设有如下定义int x = 6;

执行语句x+=x-=x*x; 后请写出x 的值

第二部分读程序,写结果

1.设有数组a的定义:

int a[]={1,2,3,4};

语句:

a[3]=--a[0]?a[1]++:a[2]++;

执行后,数组a的各元素依次为。

2.下面的程序段执行后,

#define ROUND3(x) (int)(x*1000+0.5)/1000.0

printf(―%f‖,ROUND3(3.1416));

输出的结果是。

3.设有函数段如下:

int efg(int a,int b)

{ if (a%b==0)

return b;

else

return efg(b,a%b);

}

c=efg(48,8);

则c 的值是。

4. 假设m是一个三位数,从左到右用a,b,c表示各位上的数字,现将该三位数上的百位数与十位数交换,则从左到右各位数字是bac的三位数其表达式是。

5.执行下面的程序后,

#include

main()

{ char *p1,*p2;

p1="How_are_you?";

p2=p1+strlen(p1)-1;

while(p2>=p1)

printf("%c",*p2--);

for (p2=p1; *p2!='\0';p2=p2+2)

printf("%c",*p2);

printf("\n");

}

输出的结果是。

6. 以下程序运行后,

struct ks

{ int a;

int *b;

} s[4],*p;

main()

{ int n=1,i;

printf("\n");

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

{ s[i].a=n;

s[i].b=&s[i].a;

n=n+2;

}

p=&s[0];

p++;

printf("%d,%d\n",(++p)->a,(p++)->a);

}

则结果是。

7. 从键盘上输入123<回车>,该程序的输出结果是。

#include

main()

{ int c;

while((c=getchar())!='\n')

{ switch(c-'1')

{ case 0:

case 1: putchar(c+4);

case 2: putchar(c+3);break;

case 3: putchar(c+2);

case 4: putchar(c+1);break; }}

printf("\n");

}

8. 以下程序运行时,输入10个整型数,输出结果是。int a,b;

void found_value(int array[],int n)

{ int *p,*array_end;

array_end=array+n;

a=b=*array;

for (p=array+1;p

if (*p>a) a=*p;

else if (*p

return;

}

main()

{ int i,number[10];

printf(" enter 10 integer numbers : \n");

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

scanf("%d",&number[i]);

found_value(number,10);

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

}

9.执行该程序时,输出结果是。

main()

{ int y=10;

do { y--;} while (--y);

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

}

10.运行以下程序,从键盘上输入china#,则输出结果是

#include

main()

{ int v1=0,v2=0;

char ch;

while ((ch=getchar())!='#')

switch(ch)

{ case 'a' :

case 'h' :

default : v1++;

case 'o' : v2++;

}

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

}

11. #include

void printletter()

{ static int c=57;

if (c>=48)

{ putchar(c);

c--;

printletter();

}

}

main()

{ printletter();

}

12. main()

{ int a[5]={1,3,5,7,9};

int *num[5];

int **p,i;

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

num[i]=&a[i];

p=num;

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

{ printf("%3d",**p); p++;}

}

13. main()

{ int fun (int *, int );

int j = 1 , m =4, k ;

k = fun(&j, m ) ;

printf(“j=%d m=%d\n”,j,m);

printf(“The first k: %d\n”, k );

k = fun(&j, m);

printf(“j=%d m=%d\n”,j,m);

printf(“The second k: %d\n”, k) ;

}

int fun (int *x , int y )

{ static int k = 2;

k += *x + 1;

*x = k- y;

return k;

}

14.#include

int count, position, data;

void search( int *p, int n, int st )

{ if ( *p == data )

{ count ++;

position = st;

}

if ( n > 1 )

search( p+1, n-1, st+1 );

}

main()

{ int a[5] = { 10, 30, 50, 30, 20 };

count = 0;

data = 25;

search( a, 15, 1 );

printf( "count=%d,position=%d\n", count, position );

}

15. int sumadd( int func, int data )

{ static int sum;

switch ( func )

{ case 0 : sum = data; break;

case 1 : sum += data; break;

case 2 : sum -= data; break;

}

return sum;

}

main()

{ sumadd( 1, 10 );

printf( ―%d‖, sumadd(2,10));

sumadd( 2, 20 );

printf( ―%d‖, sumadd(2,10));

}

16.void s ( int a[], int n )

{ int i, j, t ;

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

{ for ( t = a[i], j = i - 1 ; j >= 0 && t < a[j] ; j -- ) a[j+1] = a[j];

a[j+1] = t ;

}

}

main()

{ int i , b[6] ={24, 12, 14, 32, 22, 34 } ;

s ( b, 6) ;

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

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

printf(“\n”) ;

}

17.void p ( int k )

{ int m , i;

for ( m = 2; m <= k ; m ++)

{ for ( i = 2; i <= m; i ++)

if ( !(m % i )) break ;

if ( i = = m ) printf(“%4d”, m);

}

printf( “\n”);

}

main()

{ p (13) ; }

18.#include

main()

{ int a[]={0,10,20,30,};

int n=0, *p;

p=a+1;

n+=*(p++);

n+=(*p)++;

n+=*(++p);

n+=++(*p);

printf(―n=%d, a[]=%d, %d, %d, %d\n‖, n, a[0], a[1], a[2], a[3]);

}

19. #include

void strselect(char *strs[], int n, char *dest)

{ int i;

for(i=0; i

*(dest+i)=*(strs[i]+i);

*(dest+i)=’\0’;

}

main()

{ char *strs[]={“First”, “Second”, “Third”, “Forth”, “Fifth”}; char rst[81];

strselect(strs, 5, rst);

printf(“%s\n”, rst);

}

20. #include

struct node

{ int n;

struct node *next;

};

void insert(struct node *head, int newn)

{ struct node *p, *q ;

for(p=head; p->next!=NULL; p=p->next )

{ q=p->next;

if((newn%10)<(q->n%10)) break;

}

q=(struct node*)malloc(sizeof(struct node));

q->n=newn;

q->next=p->next;

p->next=q;

}

main()

{ struct node head, *p, *q;

head.next=NULL;

insert(&head, 56);

insert(&head, 38);

insert(&head, 72);

insert(&head, 49);

for(p=head.next; p!=NULL; p=p->next) printf(“%d ”, p->n);

printf(“\n”);

for(p=head.next; p!=NULL;)

{ q=p;

p=p->next;

free(q);

}

}

21. #include

#include

main()

{ int fun(char*,int);

char *p;

p="87654321";

fun(p,strlen(p));

puts(p);

}

int fun(char *w,int n)

{ char t,*s1,*s2;

s1=w; s2=w+n-1;

while (s1

{ t=*s1++;

*s1=*s2--;

*s2=t;

}

}

22. long f(int i)

{ if (i==0) return 0;

else if (i==1) return 1;

return f(i-1)+f(i-2);

}

main()

{ long k;

k=f(5);

printf("k=%ld\n",k);

}

23. 该程序的执行结果是

long fun(int n)

{ long s;

if (n==1||n==2) s=2;

else s=n-fun(n-1);

return s;

2017全国计算机等级考试二级C语言知识点超全整(打印版).docx

全国计算机等级考试

目录 第-部分公共基础知识 第1章算法与数据结构 (1) 考点1算法........................... I 考点2数据结构.. (1) 考点3线性表及英顺序存储结构 (1) 考点4栈和队列 (1) 考点5线性链表 (2) 考点6树与二叉树 (2) 考点7查找技术 (3) 考点8排序技术 (3) 第2章程序设计基础 (4) 考点I程序设计方法与风格 (4) 考点2结构化程序设计 (5) 考点3面向对象的程序设计 (5) 第3章软件工程基础 (5) 考点1软件工程基本概念 (5) 考点2软件分析方法 (6) 考点3结构化设计方法 (7) 考点4软件测试 (8) 考点5程用的调试 (9) 笫4帝数据库设计基础 (9) 考点1数据库系统的基本概念 (9) 考点2数据带系统的基木概念 (10) 考点3关系代数 (12) 考点4数据库设计与管理 (12) 第二部分二级C语言 笫1章程序设汁基本概念 (14) 考点1程序设计 (14) 考点2 C程序的结构和格式 (14) 考点3常鱼和变蛍 (14) 考点4算术表达式 (15) 考点5赋值表达式 (16) 考点6自加.口减和逗号运算 (16) 第2章顺疗结构 (17) 考点1字符型常屋与变虽 (17) 考点 2 putchar 与gclchar 函数 (17) 考点3 printf函数 (17) 考点4 scanf函数 (18) 考点5位运算的含义和应用 (18) 第3章选择结构 (19) 考点1关系运算符和关系表达式 (19) 考点2逻轉运算符和逻辑表达式 (19) 考点3 if语句及其构成的选择结构 (19) 考点4 switch语句与break语句 (20) 第4章循环结构 (20) 考点1 while循环结构 (20) 考点2 do-while循环结构 (21) 考点3 for循环结构 (21) 考点4嵌套循环语句 (21) 第5章函数 (21) 考点I库函数 (21) 考点2函数的调用 (22) 考点3参数传递 (22) 考点4函数的递归调用 (23) 考点5局部、全局变量和存储分类 (23) 第6章地址与指针 (23) 考点1变量的地址和指针 (23) 考点2抬针变量的操作 (24) 考点3函数之间地址的传递 (24) 第7章数组 (24) 考点1 一维数组的定义及元素的引用??24 考点2函数对-维数组及元素的引用??25 考点3二维数组的定义 (25) 考点4二维数组和指针 (25) 考点5二维数组名和指针数组作为实参???26 第8章字符串 (26) 考点|用-?维字符数组存放字符出? (26) 考点2使指针指向字符串 (26) 考点3字符串的输入和输出 (26) 考点4字符串数组 (27) 考点5用于字符串处理的函数 (27) 第9章编译预处理和动态存储分配 (27) 考点I編译预处理 (27) 考点2宏替换 (27) 考点3文件包含处理 (28) 考点4动态存储分配 (28) 第10章结构体.共用体和用戸定义类型28考点1结构体 (28) 考点2共用体 (29) 考点3用户定义类型 (29) 第11章文件 (29) 考点1文件指针 (29) 考点2文件的读写 (30)

计算机二级C语言高效考点

计算机二级C语言高效考点 2017年计算机二级C语言高效考点锦集 C语言基本知识 【考点1】C程序 C语言程序结构有三种:顺序结构,循环结构(三个循环结构),选 择结构(if和switch) 【考点2】main函数 每个C语言程序中main函数是有且只有一个。读程序都要从 main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做 选择)。 【考点3】存储形式 计算机的数据在电脑中是以二进制的形式保存。最低的存储单元是bit(位),位是由为0或者1构成。byte是指字节,一个字节=八 个位。数据存放的位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行, 注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

并且第一个必须为字母或则是下划线。第一个为数字就错了。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 关键字不可以作为用户标识符号。maindefinescanfprintf都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 【考点7】实型数据 实型数据的合法形式:小数形式和指数形式。掌握判定指数形式合法性。 2.333e-1就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。 【考点8】字符 字符数据的合法形式:: '1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。 字符型和整数是近亲: chara=65; printf(“%c”,a);得到的输出结果:a

国家二级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语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

2019年全国计算机二级C语言知识点复习:指针

2019年全国计算机二级C语言知识点复习:指针 【考点1】指针变量 指针变量是用来存储地址的,而一般变量是存储数值的。指针变量可指向任意一种数据类型,但不管它指向的数据占用多少字节,一个指针变量占用四个字节。 【考点2】指针变量的定义 格式为:类型名 *指针变量名。二维指针int **p;能够理解为基类型为(int *)类型。 【考点3】指针变量的初始化 指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。 指针变量两种初始化 方法一:int a=2,*p=&a;(定义的同时初始化) 方法二:int a=2,*p; (定义之后初始化) p=&a; 【考点4】指针变量的引用 &是取地址符,*是间接访问运算符,它们是互逆的两个运算符。在指针变量名前加间接访问运算符就等价它所指向的量。 【考点5】指针的运算 int *p 中 *p 和p 的差别: *p 能够当做变量来用;*的作用是取后面地址p 里面的数值

p 是当作地址来使用。 *p++ 和(*p)++的之间的差别:改错题目中很重要 *p++是地址会变化。 (*p)++ 是数值会要变化。 三名主义:(考试的重点) 数组名:表示第一个元素的地址。数组名不能够自加,他是地址常量名。(考了很多次) 函数名:表示该函数的入口地址。 字符串常量名:表示第一个字符的地址。 考试重要的话语: 指针变量是存放地址的。并且指向哪个就等价哪个,所有出现*p 的地方都能够用它等价的代替指向的变量。 例如:int a=2,*p=&a; *p=*p+2; (因为*p 指向变量a,所以指向哪个就等价哪个,这里*p 等价于a,能够相当于是a=a+2)

C语言基础必须掌握的 知识点

C语言基础必须掌握的知识点 C程序的结构和格式。 1.main函数 任何一个有效的程序都有且只能有一个main()函数,它的地位相当于程序的主体,就像大树的树干,而其他函数都是为main()服务的,就像大树树干分出的枝干。 main函数具有以下3个特点: ① C语言规定必须用main作为主函数名。其后的一对圆括号中间可以是空的,但不能省略。 ②程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。 ③一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。 2.程序中的注释 在一个C程序中放在符号“/*”和“*/”之间的内容,称为对程序的注释。注释是对程序的说明。编写注释时应遵循以下4条规则: ①符号“/*”和“*/”必须成对出现,“/”和“*”两者之间不可以有空格。 ②注释可以用英文、中文,可以出现在程序中任意合适的地方。 ③在注释之间不可以再嵌套“/*”和“*/”。例如,/*/*…*/*/形式是非法的。 ④注释从“/*”开始到最近的一个“*/”结束,其间的任何内容都被编译程序忽略。换句话说,注释只是为了更好地看懂程序而做的标记,不对程序产生任何影响。 3.源程序的书写格式 C程序书写格式的基本习惯有: ①一行内可以写几个语句,一个语句可以分写在多行上。 ②每个语句和数据定义的最后必须由一个分号“;”结束(分号是C语句的一部分,不是语句之间的分隔符)。 4.C语言的风格 C语言的风格主要有以下几个方面: ●C语言简洁、紧凑,使用方便、灵活; ●运算符丰富。C语言的运算符包含的范围很广泛,共有34种运算; ●数据结构丰富,具有现代化语言的各种数据结构; ●用函数作为程序模块以实现C程序的模块化; ●C语言允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作; ●生成目标代码质量高,程序执行效率高; ●用C语言写的程序可移植性好(与汇编语言比)。 5.标识符 所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。 C语言合法标识符的命名规则是: ①标识符由字母、数字和下划线组成; ②第一个字符必须为字母或下划线;

计算机二级C语言考点解析:初步知识

计算机二级C语言考点解析:初步知识 2.1程序的构成 尽管C程序的内容千变万化,但是它们的构成都是一致的,一个完整的C源程序的格式可以如下表示: 编译预处理 主函数() 函数() 函数() 从上面中可以看出,一个C源程序实际上就是若干函数的集合,这些函数中有一个是程序的主函数,任何C的源程序执行时,都是从主函数开始执行的,其它的函数最终必将被这个主函数所调用。C语言除了主函数规定必须取名main外,其它的函数名可以任取,但是要符合C的标识符取名规则,另外注意不要与保留字重名,最好也不可与C语言中的库函数或其它一些命令如编译预处另命令重名。各个函数在程序中所处的位置并不是固定的,但要求一个函数是完整的、独立的。不允许出现在一个函数内部又去定义另一个函数,或是函数格式不齐全的现象。一个完整的一般意义上的函数有一个固定的框架,编写具体的函数时,只需在这个框架中填入相应的内容即可。框架如下: 函数类型函数名(形参) 形参说明 { 内部变量说明; 执行语句部分; } 2.2C语言的基本词法 C语言的基本词法由三部分组成:符号集、关键字、保留字。 符号集就是一门语言中允许出现的字符的集合,C语言的符号集就是ASCⅡ码表中的一些字符,在键盘上不能直接得到(比如说响铃字符),C语言引入了转义字符的概念,利用反斜杠符号″\″后加上字母的一个字符组合来表示这些字符,当在源程序中遇到这类字符组合

时,虽然这个字符组合是一个字符串的形式,但C语言仍会自动将之理解成某一特定的字符。比如″\″,C语言在处理这个字符组合时,会自动理解成回车换行符号。转义字符经过进一步引申应用,形成了另外两种形式:″\ddd″和″\xnn″,这里″\″后的ddd和xnn分别代表三位八进制和两位十六进制数(打头的″x″只是标明后面跟着的是十六进制数),这两种形式不再局限于表示不可打印的字符,它们可以表示ASCⅡ码表中的任意字符,只要把所需表示的字符的ASCII码转换成八进制数或十六进制数即可。比如说字母″A″,ASCII码为65,65的八进制和十六进制分别为101和x41,所以,字母A可表示为″\101″或″\x41″,对转义字符应认真理解。 标识符就是用以标识的符号。正如现实生活中给每一个人都取一个名字一样,C语言中的每一个对象(如函数、变量等)都必须取一个标识符以和其它对象区别开。在C语言中,这个标识符是一个字符串,这个字符串的选定有一定的规则:必须是以字母或下划线开头的字母与数字的序列。除了这个基本的规则外,C语言对标识符的命名还有几个限制需加以注意:①长度最好不要超过八个字符。因C中对标识符只处理前8个字符,超过8个长度的部分将被C自动忽略掉。″ABCDEFGH1″和″ABCDEFH2″是同一个标识符;②标识符不要与保留字同名,最好也不要与C提供的标准标识符,如库函数重名;③应注意C语言对大小写字母是敏感的,Abcd和abcd是两个不同的标识符。 关键字实际上就是一些特殊的标识符,又称保留字,这些保留字不允许用户对它重新定义。 2.3头文件、数据说明、函数的开始和结束标志 1.头文件:也称为包含文件或标题文件,一般放在一个C语言程序的开头,用#include″文件名″的格式,其中文件名是头文件名,一般用.h作为扩展名。 2.数据说明:C语言中的数据分常量和变量两种。 3.常量:有数值常量和符号常量两种。 4.数值常量:可以分为整型常量、实型常量、浮点型常量和字符常量。 5.符号常量:用一个标识符代表的一个常量,又称标识符形式的常量。 6.变量:其值可以改变的量,变量名习惯上用小写字母表示。 7.标识符:用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 8.标识符的命名规则:C语言中标识符只能由字母、数字下划线三种字符组成,且第一个字符必须为字母或下划线。C语言是大小写敏感语言,即对大小写字母认为是不同的字符。C语言中标识符的长度随系统不同而字,如TURBOC中取前8个字符,8个字符后面的字符会自动取消。

计算机等级考试必备C语言最重要的知识点

计算机等级考试必备C语言最重要的知识点

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是她的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不能够再定义函数。 5、算法:能够没有输入,可是一定要有输出。

6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识 1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行能够写多个语句,能够写多行。 3、一个C语言程序有且只有一个main 函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---.obj---.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才能够运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。

计算机等级考试二级C语言高频考点(C语言部分)

计算机等级考试二级C语言高频考点(C 语言部分) 第一章 C语言基本知识 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。 【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include 等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1)、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2)、每个C语言程序中main函数是有且只有一个。 3)、在函数中不可以再定义函数。 4)、算法的是一定要有输出的,他可以没有输入。 5)、break可用于循环结构和switch语句。 6)、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

2019年全国计算机二级C语言考试必背知识点总结(4)

1)指针变量的本质是用来放地址,而一般的变量是放数值的。 2)int *p 中 *p和p的差别: *p可以当做变量来用;*的作用是取后面地址p里面的数值 p是当作地址来使用。 3)*p++ 和 (*p)++的之间的差别:改错题目中很重要 *p++是地址会变化。 (*p)++ 是数值会要变化。 4)三名主义:(考试的重点) 5)数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次) 6)函数名:表示该函数的入口地址。 7)字符串常量名:表示第一个字符的地址。 对a[10]这个数组的讨论。 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。 对a[3][3]的讨论2016计算机二级考试C语言知识点总结计算机考试。 1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。 2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。 3、a是二维数组名,所以它是行指针,也就是说a+1是跳一行。 4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同时它们都是列指针,a[0]+1,a[1]+1,a[2]+1都是跳一列。 5、注意a和a[0] 、a[1]、a[2]是不同的,它们的基类型是不同的。前者是一行元素,后三者是一列元素。

二维数组做题目的技巧: 如果有a[3][3]={1,2,3,4,5,6,7,8,9}这样的题目。 步骤一:把他们写成:第一列第二列第三列 a[0]à 1 2 3 ->第一行 a[1]à 4 5 6—>第二行 a[2]à 7 8 9->第三行 步骤二:这样作题目间很简单: *(a[0]+1)我们就知道是第一行的第一个元素往后面跳一列,那么这里就是a[0][1]元素,所以是1。 *(a[1]+2)我们就知道是第二行的第一个元素往后面跳二列。那么这里就是a[1][2]元素,所以是6。 一定记住:只要是二维数组的题目,一定是写成如上的格式,再去做题目,这样会比较简单。 数组的初始化,一维和二维的,一维可以不写,二维第二个一定要写 int a[]={1,2} 合法 WiseMedia int a[][4]={2,3,4}合法。但int a[4][]={2,3,4}非法。 二维数组中的行指针 int a[1][2]; 其中a现在就是一个行指针,a+1跳一行数组元素。搭配(*)p[2]指针 a[0],a[1]现在就是一个列指针。a[0]+1 跳一个数组元素。搭配*p[2]指针数组使用 还有记住脱衣服法则: a[2] 变成 *(a+2) a[2][3]变成 *(a+2)[3]再可以变成 *(*(a+2)+3) 这个思想很重要!

计算机二级C语言知识点(字符串)

计算机二级C语言知识点(字符串) 计算机二级C语言知识点(字符串) 字符串与字符数组 1.字符数组的定义 定义方法与前面介绍的类似,只是将数组定义为字符型即可。例如: charc[10]; 这里定义了一个包含10个元素的字符数组c。 2.字符数组的初始化 对字符数组初始化,可以采用以下方法: (1)逐个字符赋给数组中各元素; (2)用字符串常量使字符数组初始化。 3.字符串 在C语言中,字符串是作为字符数组来处理的,字符串可以存放在字符型一维数组中,故可以把字符型一维数组作为字符串变量。 字符串常量是用双引号括起来的一串字符。 C语言中约定用′\0′作为字符串的结束标志,它占内存空间,但不计入串的长度,′\0′的代码值为0。 系统对字符串常量也自动加一个′\0′作为结束符。例如″clanguage″共有10个字符,但在内存中占11个字节,最后一个字节存放′\0′。 4.字符数组的输入输出 (1)逐个字符输入和输出

①在标准输入输出printf和scanf中使用%c格式描述符; ②使用getchar和putchar函数。例如: for(i=0;i10;i++) scanf(″%c″,str[i]);/*或str[i]=getchar();*/ str[i]=′\0′;/*人为加上串结束标志*/ for(i=0;i10;i++) printf(″%c″,str[i]);/*或putchar(str[i]);*/ (2)字符串整体输入输出 ①在标准输入输出函数printf和scanf中使用%s格式描述符; 输入形式: charstr[6]; scanf(″%s″,str); 其中str为字符数组名,代表着str字符数组的起始地址,输入时系统自动在每个字符串后加入结束符′\0′。若同时输入多个字符串,则以空格或回车符分隔。 输入形式: printf(″%s″,str); 输字符串时,遇第一个′\0′即结束。但可人为控制输出串所占的域宽如: printf(″%6s″,str);/*若字符串中字符多于6个,仍将全部输出*/ printf(″%-6s″,str);/*只输出前6个字符,多余的不输出*/ ②使用gets和puts函数输入输出一行

2019年计算机二级考试C语言知识点:选择结构

2019年计算机二级考试C语言知识点:选择结构 选择结构 特别要注意:c 语言中是用非0 表示逻辑真的,用0 表示逻辑 假的。 【考点1】关系运算 关系运算符有6个,分别是>,>=,8 这个是真的,所以表达式 的数值就是1。 【考点2】逻辑运算 只能为1(表示为真),或0(表示假) a) 共有三种逻辑运算符号。逻辑非(!),辑与(&&),逻辑或(||)。 b) !>&&>|| 优先的级别。 c) 注意短路现象。考试比较喜欢考到。 例a++||b++,如果表达式a++的值非零,则表达式b++不再执行。 d) 要表示 x 是比0 大,比10 小的方法。0 【考点3】if语句 能够单独出现,也能够与else匹配出现。if语句能够嵌套,这 时else总是与离它最近的且没有与else匹配的if匹配。 注意if语句的子句是紧接if或else的一句,如有多句需要用{}括起来。 【考点4】条件运算 是的三目运算符,格式:表达式1 ?表达式2 :表达式3

表达式1值为非0时,整个表达式值为表达式2的值,表达式1 值为0时,整个表达式值为表达式3的值。考试口诀:真前假后。 【考点5】switch语句 a) 一定要注意有 break 和没有break 的差别,书上(53,54 页)的两个例子,没有break 时候,只要有一个case 匹配了,剩下的都要执行,有break 则 是直接跳出了switch 语句。 b) switch 只能够和break 一起用,不能够和continue一起用。 c) switch(x) x:是整型常量,字符型常量,枚举型数据。 {case 1:…. 不能够是变量。 case 2:…. } switch后小括号里面的表达式不能为实型,case后表达式不能 有变量。 口诀:switch表不为实,case表不为变。

计算机二级C语言程序设计重要知识点

本次串讲的要讲解的重要知识点 1、高级语言与C语言的特点 2、C语言的基本字符集、转义字符、保留字及其含义和C语言标识符的构成规则。 3、C程序的基本结构与书写C程序的基本规则 4、C语言中数据类型的分类 5、整型、实型、字符型、字符串常量的书写方法 6、符号常量的应用和宏定义命令的使用 7、整型、实型、字符型变量的定义、初始化方法 8、基本类型数据在内存中的存放方式 9、基本运算符的运算规则、优先级别和结合性 10、掌握算术表达、关系和逻辑表达式、赋值表达式、逗号和条件表达式的构成和运算规则 11、变量赋值及表达式计算时的数据类型转换规则 12、字符输入/输出函数和格式输入/输出函数的使用 13、三条选择语句和三种选择结构的程序设计 13、三条选择语句和三种选择结构的程序设计 14、三条循环语句和三种循环结构的程序设计 15、一维数组的定义、初始化和数组元素的引用方法 16、二维数组的定义、初始化和数组元素的引用方法 17、字符数组的定义、初始化和数组元素的引用方法 18、字符数组中存放的字符串的输入/输出和处理方法 19、字符串处理的常用系统函数及其使用 20、指针变量的定义、初始化、赋值和一般使用形式 21、指向变量的指针变量、指向一维数组元素的指针变量、指向字符串的指针变量的使用方法。 22、指针数组的定义、初始化和引用 23、函数的结构与定义方法,握函数的一般调用方法 24、函数调用时参数的值传递方法、地址传递方法、返回值传递方法和利用全局外部变量在函数间传递数据的方法。 25、变量的存储类型及其定义方法、变量的生存期和作用域 26、函数嵌套调用和递归函数的特点和设计方法 27、指针型函数的定义方法和调用方法 28、常用系统函数的使用 29、结构型数据的特点和应用及结构型的定义方法 30、结构型变量的定义、初始化和成员引用方法 31、结构型数组的定义、初始化和引用结构型数组元素的成员的方法。 32、结构型指针变量的定义、初始化和利用结构型指针变量引用结构型数据的成员的方法 33、用户自定义类型的定义和使用 34、文件名的组成规则、文件的分类及其特点 36、文件型指针的定义方法 37、缓冲文件系统中各类系统函数的使用 (1)打开/关闭文件函数的使用方法。 (2)文件尾测试函数的使用方法。

2020全国计算机等级考试二级C语言知识点全套复习提纲(精华版)

全国计算机等级考试二级C语言全套复习提纲(精华 版)

目录 第一部分公共 基础知识 第1 章算法与数据结构 (1) 考点1 算法 (1) 考点2 数据结构 (1) 考点3 线性表及其顺序存储结构 (1) 考点4 栈和队列 (1) 考点5 线性链表 (2) 考点6 树与二叉树 (2) 考点7 查找技术 (3) 考点8 排序技术 (3) 第2 章程序设计基础.4 考点1 程序设计方法 与风格 (4) 考点2 结构化程序设计 (5) 考点3 面向对象的程序设计 (5) 第3 章 . 软件工程基础 5 考点1 软件工程基本概念 (5) 考点2 软件分析方法6 考点3 结构化设计方法 (7) 考点4 软件测试 (8) 考点5 程序的调试 (9) 第4 章数据库设计基础

(9) 考点1 数据库系统的基本概念 (9) 考点2 数据库系统的基本概念 (10) 考点3 关系代数 (12) 考点4 数据库设计与管理 (12) 第二部分二级 C 语言 第1 章程序设计基本概念 (14) 考点1 程序设计 (14) 考点2 C 程序的结构和格式 (14) 考点3 常量和变量.14 考点4 算术表达式.15 考点5 赋值表达式 .16 考点6 自加、自减和逗号运算 (16) 第2 章顺序结构 (17) 考点1 字符型常量与变量 (17) 考点2 putchar 与getchar 函数 (17) 考点3 printf 函数 (17) 考点4 scanf 函数 (18) 考点5 位运算的含义和应用 (18) 第3 章选择结构 (19) 考点1 关系运算符和关系表达式 (19) 考点2 逻辑运算符和逻辑表达式 (19)

2020年全国计算机等级考试二级C语言必考知识点总结【完美版】

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。 byte是指字节, 一个字节 = 八个位. 概念常考到的: 1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。 3、每个C语言程序中main函数是有且只有一个。 4、在函数中不可以再定义函数。 5、算法:可以没有输入,但是一定要有输出。 6、break可用于循环结构和switch语句。 7、逗号运算符的级别最低,赋值的级别倒数第二。 第一章C语言的基础知识 第一节、对C语言的基础认识

1、C语言编写的程序称为源程序,又称为编译单位。 2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。 3、一个C语言程序有且只有一个main函数,是程序运行的起点。 第二节、熟悉vc++ 1、VC是软件,用来运行写的C语言程序。 2、每个C语言程序写完后,都是先编译,后链接,最后运行。(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。(常考!) 第三节、标识符 1、标识符(必考内容): 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了 2、标识符分为关键字、预定义标识符、用户标识符。 关键字:不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 预定义标识符:背诵define scanf printf include。记住预定义标识符可以做为用户标识符。 用户标识符:基本上每年都考,详细请见书上习题。 第四节:进制的转换 十进制转换成二进制、八进制、十六进制。 二进制、八进制、十六进制转换成十进制。

全国计算机二级考试C语言易错知识点汇总

计算二级C语言易错知识点 1.指针是用来存放地址的变量,用(类型名 *指针变量名)的形式定义。赋值时 应将某个变量地址即&x 赋给指针变量 2. 设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp) 的返回值为 A) 0 B) '\0' C) 非0值 D) NULL 【解析】本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以选项C正确。 3. 有以下程序 #include main() { int a=5,b=1,t; t=(a<<2)|b; printf("%d\n",t); } 程序运行后的输出结果是 A) 1 B) 11 C) 6 D) 21 【解析】本题考查位运算,以及按位或操作,将a左移一位相当于是将a乘以了4,所以a<<2等于20,二进制表示为00010100,与b按位或得到00010101,即21,所以选项D正确。 4. 有以下程序 #include

#define N 5 #define M N+1 #define f(x) (x*M) main() { int i1,i2; i1=f(2) ; i2=f(1+1) ; printf("%d %d\n",i1,i2); } 程序的运行结果是 A) 12 7 B) 12 12 C) 11 11 D) 11 7 【解析】本题考查宏定义的用法,宏定义只是做个简单的替换,所以本题中执行f(2)=(2*N+1)=11,执行f(1+1)=(1+1*N+1)=7。选项D正确。 5. 有以下程序 #include #include struct A { int a; char b[10]; double c; }; void f(struct A t); main() { struct A a={1001,"ZhangDa",1098.0}; f(a); printf("%d,%s,%6.1f\n", a.a,a.b,a.c); } void f(struct A t) { t.a=1002; strcpy(t.b,"ChangRong"); t.c=1202.0;

c语言知识点总结

二级C语言基础知识点总结 第一章 1,函数是从主函数(main())开始执行,回到主函数(main())结束; 2,一个程序的编译是从第一个函数(语句)开始,到最后一个函数(语句)结束; 第二章 1,算法的特性:有穷性,确定性,有一个或者0个输入,有一个或者多个输出;有效性2,算法(程序)的几个结构:选择结构,顺序结构,循环结构 第三章 1,int类型是2个字节,float是4个字节,dooble是8个字节 2,数据类型分为:基本类型(整型,实型,字符型,枚举型),指针类型,构造类型(结构体类型,数组类型,共用体类型),空类型(空类型合法哦,不要忘记了这个特殊哦)3,变量的地址是确定的,变量变的地方只是地址里面的值。 4,用户标志符,由数字,字母,下划线构成,第一个不能是数字,但是32个关键字除外。5,注意int的最大表示范围是-32768――+32767,当超过这个范围的时候,即以%d输出+32768时结果为-32768 6,长整形(long)表示方法是在数字后面加L,如果一个变量a=3,那么表示的是一个整形的3,如果是a=3L,那么就是长整形的3;当分别以%o,%ld,%x (8进制,长整形,16进制)输出的时候,结果没有前面的0,0X,和后面的L 例:int a=075,b=ox14;long int c=5L; printf(“%o,%x,%ld”,a b c); 结果为(75,14,5) 7,当出现’\0’的什么时候为结束,什么时候为八进制的转义字符:当’\0’后面有1-7之间的数字的时候为转义字符;其他的时候为字符串结束标志,注意转义字符有哪些(参考书p8) 这样一个例题若strlen(”abc\089”)=3 strlen(“abc\012”)=4 8,强制转换不会改变一个变量的值,只是改变其作用的那个表达式的值。 9,++,――,当++,——,在变量后面的时候表示在本次运算的时候不会改变,在下次引用或者参与运算的时候才会自变;当++,――,在变量的前面的时候则是在本次运算就会发生自变(顺便掌握++,――结合性是右结合,若i+++j等价于(i++)+j; 10,复合运算符要注意当等号后面接的是表达式的时候要把表达式看成一个整体即x *=y+8等价于x=x*(y+8),y+8是一个整体 第四章 1,格式输入和输出的时候,注意格式。要严格按照题目的格式进行操作。(在做题的时候尤其是读程序写结果的时候要细心哈!) 2,%d,%md,%m..nd, %e,以及相应的几种格式是什么意思,参考书p13 第五章 1,关系运算符,>,<,<=,>=,= =,!= ,==和!=优先级最低,主意=与==的区别:=是赋值的意思,表达式的值是对变量赋的值,==是关系运算符,关系运算表达式的值为0或者1. 2,逻辑运算符,&& ,||,!在这几个中优先级!> && > ||,优先级是体现在结合性上而不是运算的先后性上。例如 a=b=c=1;d=++a||++b&&++c在这个里面&&最高那就是加粗部分先看成一个整体,运算顺序还是从++a开始,即做完这个运算后,可以依次判断出后边的运算式子没有必要计算了,所以d=1,a=2,b=1,c=1

相关文档
相关文档 最新文档