您的位置:

二级c语言内部资料下载,计算机二级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’ 是合法的, 0是不能写的。

‘\108’是非法的,因为不可以出现8。

6)算术运算符号的优先级别:

同级别的有的是从左到右,有的是从右到左。

7)强制类型转换:

一定是 (int)a 不是 int(a),注意类型上一定有括号的。

注意(int)(a+b)和(int)a+b 的区别。 前是把a+b转型,后是把a转型再加b。

8)表达式的考查:

是表达式就一定有数值。

赋值表达式:表达式数值是最左边的数值,a=b=5;该表达式为5,常量不可以赋值。

自加、自减表达式:假设a=5,++a(是为6), a++(为5);

运行的机理:++a 是先把变量的数值加上1,然后把得到的数值放到变量a中,然后再用这

个++a表达式的数值为6,而a++是先用该表达式的数值为5,然后再把a的数值加上1为6,

再放到变量a中。 进行了++a和a++后在下面的程序中再用到a的话都是变量a中的6了。

考试口诀:++在前先加后用,++在后先用后加。

逗号表达式:优先级别最低 ;表达式的数值逗号最右边的那个表达式的数值。

(2,3,4)的表达式的数值就是4。

9)位运算的考查:

 会有一到二题考试题目。

总的处理方法:几乎所有的位运算的题目都要按这个流程来处理(先把十进制变成二进制再变成十进制)。

例1: char a = 6, b;

b = a2; 这种题目的计算是先要把a的十进制6化成二进制,再做位运算。

例2: 一定要记住,

例3: 在没有舍去数据的时候,左移一位表示乘以2;右移一位表示除以2。

10)018的数值是非法的,八进制是没有8的,逢8进1。

11)%符号两边要求是整数。不是整数就错了。

12) 三种取整丢小数的情况:

 1、int a =1.6;

2、(int)a;

3、 

第二章

1)printf函数的格式考查:

%d对应整型;%c对应字符;%f对应单精度等等。宽度的,左对齐等修饰。

%ld对应 long int;%lf 对应double。

2)scanf函数的格式考察:

注意该函数的第二个部分是a 这样的地址,不是a;

Scanf(“%d%d%*d%d”,a,b,c); 跳过输入的第三个数据。

3)putchar ,getchar 函数的考查:

char a = getchar() 是没有参数的,从键盘得到你输入的一个字符给变量a。

putchar(‘y’)把字符y输出到屏幕中。

4)如何实现两个变量x ,y中数值的互换(要求背下来)

不可以把 x=y ,y=x; 要用中间变量 t=x;x=y;y=t。

5)如何实现保留三位小数,第四位四舍五入的程序,(要求背下来)

这个有推广的意义,注意 x = (int)x 这样是把小数部分去掉。

第三章

特别要注意:c语言中是用非0表示逻辑真的,用0表示逻辑假的。

1)关系表达式:

表达式的数值只能为1(表示为真),或0(表示假)

当关系的表达是为真的时候得到1。如 98这个是真的,所以表达式的数值就是1;

2)逻辑表达式:

只能为1(表示为真),或0(表示假)

a) 共有 || ! 三种逻辑运算符号。

b) !|| 优先的级别。

c) 注意短路现象。考试比较喜欢考到。

d) 要表示 x 是比0大,比10小的方法。0x10是不可以的(一定记住)。是先计算0x 得到的结果为1或则0;再用0,或1与10比较得到的总是真(为1)。所以一定要用 (0x)(x10)表示比0大比10小。

3)if 语句

else 是与最接近的if且没有else的相组合的。

4)条件表达式:

 表达式1 ?表达式2 :表达式3

 注意是当非0时候是表达式2的数值,当为0是就是表达式2的数值。

考试口诀:真前假后。

5)switch语句:

a)一定要注意 有break 和没有break的差别,书上(34页)的两个例子,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。

  b)switch只可以和break一起用,不可以和continue用。

第四章

1)三种循环结构:

a)for() ; while(); do- while()三种。

b)for循环当中必须是两个分号,千万不要忘记。

c)写程序的时候一定要注意,循环一定要有结束的条件,否则成了死循环。

d) do-while()循环的最后一个while();的分号一定不能够丢。(当心上机改错)

2) break 和 continue的差别

记忆方法:

break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。

continue:是继续的意思,(继续循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮的循环。

3)嵌套循环

就是有循环里面还有循环,这种比较复杂,要一层一层一步一步耐心的计算,一般记住两层是处理二维数组的。

4) while((c=getchar())!=’\n’) 和 while(c=getchar() !=’\n’)的差别

先看a = 3 != 2 和 (a=3)!=2 的区别:

(!=号的级别高于=号 所以第一个先计算 3!=2) 第一个a的数值是得到的1;第二个a的数值是3。

考试注意点: 括号在这里的重要性。

第五章

函数:是具有一定功能的一个程序块;

1) 函数的参数,返回数值(示意图):

main()

{

int a = 5,b=6,c;

c = add(a,b);

printf(“%d”,c);

}

调用函数

a,b是实参

整个函数得到一个数值就是

Add函数的返回数值。

int add ( int x, int y)

{

int z;

z=x+y;

return z;

}

被调用函数

x,y是形式参数

函数返回数值是整型

z就是这个add函数计算后得到的结果,就是函数返回给主程序的返回数值。

程序是在从上往下顺序执行,当碰到了函数add后,把a,b的数值穿给调用函数,程序暂时中断等待返回数值。当得到了返回数值后,再顺序的往下执行

2)一定要注意参数之间的传递

实参和形参之间 传数值,和传地址的差别。(考试的重点)

传数值的话,形参的变化不会改变实参的变化。

传地址的话,形参的变化就会有可能改变实参的变化。

3)函数声明的考查:

一定要有:函数名,函数的返回类型,函数的参数类型。

不一定要有:形参的名称。

第六章

指针变量的本质是用来放地址,而一般的变量是放数值的。

int *p 中 *p和p的差别:

*p可以当做变量来用;*的作用是取后面地址p里面的数值

p是当作地址来使用。

*p++ 和 (*p)++的之间的差别:改错题目中很重要

*p++是 地址会变化。

(*p)++ 是数值会要变化。

三名主义:(考试的重点)

数组名:表示第一个元素的地址。数组名不可以自加,他是地址常量名。(考了很多次)

函数名:表示该函数的入口地址。

字符串常量名:表示第一个字符的地址。

第七章

1一维数组的重要概念:

对a[10]这个数组的讨论。

1、a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。

2、a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。

3、a是一维数组名,所以它是列指针,也就是说a+1是跳一列。 

对a[3][3]的讨论。

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} 合法。 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)

这个思想很重要

1、求1+2+3+……….+100。(循环)

答案[C] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8 #includestdio.h

voidmain()

{

inti,sum=0;

for(i=1;i=100;i++)

sum=sum+i;

printf("%d",sum);

}

2、 求1*2*3*……….*10。(循环)

答案[C] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10 voidmain()

{

inti=0,j=1;

for(i=2;i=10;i++)

{

j*=i;

}

printf("%d",j);

return0;

}

3、 输入三个数字,输出他们的最大值。(if)

答案[C] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17 #includestdio.h

voidmain()

{inta,b,c,d;

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

d=max(a,b,c);

printf("max=%d",d);

getch();/*暂停看运行结果*/

}

intmax(intx,inty,intz)

{intu;

if(x=yx=z)

u=x;

elseif(y=xy=z)

u=y;

else

u=z;

return(u);

4.用起泡法对十个数据排序(数组实现)

答案[C] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14 #includestdio.h

main ( )

{inti,j,t;

staticinta[10]={5,7,4,2,3,6,1,0,9,8};

for(j=0;j9;j++)

{for(i=0;i9-j;i++)

{if(a[i]a[i+1])

{ t=a[i];a[i]=a[i+1];a[i+1]=t ;

}

}

}

for(i=0;i10;i++)

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

}

5、输入十个数字,逆序输出。(数组实现)

答案[C] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8

9 #includestdio.h

main()

{inta[10],i=0;

for(i=0;i=9;i++)

scanf("%f",a[i]);

printf("\n");

for(i=9;i=0;i--)

printf("%f",a[i]);

}

6输入两个数,交换他们的值并输出。(元素交换)

答案[C] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14 #includestdio.h

intmain ()

{

intm,n,temp;

scanf("%d%d",m,n);

if(mn)

{

temp=m;

m=n;

n=temp;

}

printf("%d",m);

return0;

}

7.输出9*9乘法表。(双层循环)

答案[C] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

1x3

14 #include stdio.h

voidmain()

{

inti=1;

for(i; i=9; i++)

{

intj=1;

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

{

printf("%d*%d=%d ", i, j, i*j);

}

printf("\n");

}

}

8.输入一行字符,将所有的小写字母转换成大写字母,大写字母转换成小写字母,其余字符不变。输出转变后的这行字符。

答案[C] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20 #include "stdio.h"

voidmain()

{

chara[n];

inti;

scanf("%s",a);

printf("大写为:");

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

{

if(a[i]='z'a[i]='a')

a[i]=a[i]-32;

printf("%c",a[i]);

}

printf("\n小写为:");

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

{

a[i]=a[i]+32;

printf("%c",a[i]);

}

}

求计算机二级c语言考试资料,试题等等

去这看看吧,东西非常多而且非常好~上机题,笔试题还有公共基础知识和考试系统~全了~

还可以去这个人的其他文章里找到很多关于C的资料~都可以下载~而且很好用哦~

跪求2010.9计算机二级C语言笔试复习资料

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

1.(1)下列数据结构中,属于非线性结构的是

A)循环队列

B)带链队列

C)二叉树

D)带链栈

A B C D

2.

(2)下列数据结构中,能够按照“先进后出”原则存取数据的是

A)循环队列

B)栈

C)队列

D)二叉树

A B C D

3.

(3)对于循环队列,下列叙述中正确的是

A)队头指针是固定不变的

B)队头指针一定大于队尾指针

C)队头指针一定小于队尾指针

D)队头指针可以大于队尾指针,也可以小于队尾指针

A B C D

4.

(4)算法的空间复杂度是指

A)算法在执行过程中所需要的计算机存储空间

B)算法所处理的数据量

C)算法程序中的语句或指令条数

D)算法在执行过程中所需要的临时工作单元数

A B C D

5.

(5)软件设计中划分模块的一个准则是

A)低内聚低耦合

B)高内聚低耦合

C)低内聚高耦合

D)高内聚高耦合

A B C D

6.

(6)下列选项中不属于结构化程序设计原则的是

A)可封装

B)自顶向下

C)模块化

D)逐步求精

A B C D

7.(7)软件详细设计产生的图如下:

该图是

A)N-S图

B)PAD图

C)程序流程图

D)E-R图

A B C D

8.

(8)数据库管理系统是

A)操作系统的一部分

B)在操作系统支持下的系统软件

C)一种编译系统

D)一种操作系统

A B C D

9.

(9)在E-R图中,用来表示实体联系的图形是

A)椭圆形

B)矩形

C)菱形

D)三角形

A B C D

10.(10)有三个关系R,S,和T如下:

其中关系T由关系R和S通过某种操作得到,该操作为

A)选择

B)投影

C)交

D)并

A B C D

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

A)程序设计的任务就是编写程序代码并上机调试

B)程序设计的任务就是确定所用的数据结构

C)程序设计的任务就是确定所用算法

D)以上三种说法都不完整

A B C D

12.(12)以下选项中,能用作用户标识符的是

A)void

B)8_8

C)_0_

D)unsigned

A B C D

13.(13)阅读以下程序

#include stdio.h

main()

{ int case; float printF;

printf("请输入2个数:");

scanf("%d %f",case,printF);

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

}

该程序在编译时产生错误,其出错原因是

A)定义语句出错,case是关键字,不能用作用户自定义标识符

B)定义语句出错,printF不能用作用户自定义标识符

C)定义语句无错,scanf不能作为输入函数使用

D)定义语句无措,printf不能输出case的值

A B C D

14.(14)表达式:(int)((double)9/2)-(9)%2的值是

A)0

B)3

C)4

D)5

A B C D

15.(15)若有定义语句: int x=10;,则表达式x-=x+x的值为

A)-20

B)-10

C)0

D)10

A B C D

16.(16)有以下程序

#include stdio.h

main()

{ int a=1,b=0;

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

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

}

程序运行后的输出结果是

A)0,0

B)1,0

C)3,2

D)1,2

A B C D

17.(17)设有定义: int a=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是

A)if(ab) c=a,a=b,b=c;

B)if(ab){c=a,a=b,b=c;}

C)if(ab) c=a;a=b;b=c;

D)if(ab){c=a;a=b;b=c;}

A B C D

18.(18)有以下程序

#include stdio.h

main()

{ int c=0,k;

for(k=1;k3;k++)

switch(k)

{ default:c+=k;

case 2:c++;break;

case 4:c+=2;break;

}

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

}

程序运行后的输出结果是

A)3

B)5

C)7

D)9

A B C D

19.(19)以下程序段中,与语句: k=ab?(bc?1:0):0;功能相同的是

A)if((ab)(bc)) k=1;

else k=0;

B)if((ab)||(bc)) k=1;

else k=0;

C)if(a=b)k=0;

else if(b=c) k=1;

D) if(ab) k=1;

else if(bc) k=1;

else k=0;

A B C D

20.(20)有以下程序

#include stdio.h

main()

{ char s[]={"012xy"};int i,n=0;

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

if(s[i]'a's[i]='z') n++;

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

}

程序运行后的输出结果是

A)0

B)2

C)3

D)5

A B C D

21.

(21)有以下程序

#include stdio.h

main()

{ int n=2,k=0;

while(k++n++2);

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

}

程序运行后的输出结果是

A)0 2

B)1 3

C)5 7

D)1 2

A B C D

22.

(22)有以下定义语句,编译时会出现编译错误的是

A) char a='a';

B) char a='\n';

C) char a='aa';

D) char a='\x2d';

A B C D

23.

(23)有以下程序

#include stdio.h

main()

{ char c1,c2;

c1='A'+'8'-'4';

c2='A'+'8'-'5';

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

}

已知字母A的ASCII码为65,程序运行后的输出结果是

A)E,68

B)D,69

C)E,D

D)输出无定值

A B C D

24.

(24)有以下程序

#include stdio.h

void fun(int p)

{ int d=2;

p=d++;

printf("%d",p);

}

main()

{ int a=1;

fun(a);

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

}

程序运行后的输出结果是

A)32

B)12

C)21

D)22

A B C D

25.

(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,

但程序中有错导致不能实现预定功能

#define MIN -2147463647

int findmax(int x[],int n)

{ int i,max;

for(i=0;in;i++)

{ max=MIN;

if(maxx[i]) max=x[i];

}

return max;

}

造成错误的原因是

A)定义语句int i,max中max未赋值

B)赋值语句max=MIN;中,不应该给max赋MIN值

C)语句if(maxx[i]) max=x[i];中判断条件设置错误

D)赋值语句max=MIN;放错了位置

A B C D

26.

(26)有以下程序

#include stdio.h

main()

{ int m=1,n=2,*p=m,*q=n,*r;

r=p;p=q;q=r;

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

}

程序运行后的输出结果是

A)1,2,1,2

B)1,2,2,1

C)2,1,2,1

D)2,1,1,2

A B C D

27.

(27)若有定义语句: int a[4][10],*p,*q[4];且0=i4,则错误的赋值是

A)p=a

B)q[i]=a[i]

C)p=a[i]

D)p=a[2][1]

A B C D

28.

(28)有以下程序

#include stdio.h

#include string.h

main()

{ char str[][20]={"One*World","One*Dream!"},*p=str[1];

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

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

}

程序运行后的输出结果是

A)9,One*World

B)9,One*Dream!

C)10,One*Dream!

D)10,One*World

A B C D

29.

(29)有以下程序

#include stdio.h

main()

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

for(i=0;i4;i++)

switch(i%2)

{ case 0:

switch(a[i]%2)

{ case 0:a[i]++;break;

case 1:a[i]--;

} break;

case 1:a[i]=0;

}

for(i=0;i4;i++)

printf("%d ",a[i]);

printf("\n");

}

程序运行后的输出结果是

A)3 3 4 4

B)2 0 5 0

C)3 0 4 0

D)0 3 0 4

A B C D

30.

(30)有以下程序

#include stdio.h

#include string.h

main()

{ char a[10]="abcd";

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

}

程序运行后的输出结果是

A)7,4

B)4,10

C)8,8

D)10,10

A B C D

31.

(31)下面是有关C语言字符数组的描述,其中错误的是

A)不可以用赋值语句给字符数组名赋字符串

B)可以用输入语句把字符串整体输入给字符数组

C)字符数组中的内容不一定是字符串

D)字符数组只能存放字符串

A B C D

32.

(32)下列函数的功能是

fun(char *a,char *b)

{ while((*b=*a)!='\0'){a++;b++;} }

A)将a所指字符串赋给b所指空间

B)使指针b指向a所指字符串

C)将a所指字符串和b所指字符串进行比较

D)检查a和b所指字符串中是否有'\0'

A B C D

33.

(33)设有以下函数:

void fun(int n,char *s){……}

则下面对函数指针的定义和赋值均正确的是

A)void (*pf)(); pf=fun;

B)void *pf(); pf=fun;

C)void *pf(); *pf=fun;

D)void (*pf)(int,char);pf=fun;

A B C D

34.(34)有以下程序

#include stdio.h

int f(int n);

main()

{ int a=3,s;

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

}

int f(int n)

{ static int a=1;

n+=a++;

return n;

}

程序运行后的输出结果是

A)7

B)8

C)9

D)10

A B C D

35.

(35)有以下程序

#include stdio.h

#define f(x) x*x*x

main()

{ int a=3,s,t;

s=f(a+1);t=f((a+1));

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

}

程序运行后的输出结果是

A)10,64

B)10,10

C)64,10

D)64,64

A B C D

36.

(36)下面结构体的定义语句中,错误的是

A)struct ord {int x;int y;int z;};struct ord a;

B)struct ord {int x;int y;int z;} struct ord a;

C)struct ord {int x;int y;int z;} n;

D)struct {int x;int y;int z;} a;

A B C D

37.(37)设有定义: char *c;以下选项中能够使字符型指针C正确指向一个字符串的是

A) char str[]="string";c=str;

B) scanf("%s",c);

C) c=getchar();

D) *c="string";

A B C D

38.

(38)有以下程序

#include stdio.h

#include string.h

struct A

{ int a;char b[10];double c;};

struct A f(struct A t);

main()

{ struct A a={1001,"ZhangDa",1098.0};

a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);

}

struct A f(struct A t)

{ t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;return t;}

程序运行后的输出结果是

A)1001,ZhangDa,1098.0

B)1002,ZhangDa,1202.0

C)1001,ChangRong,1098.0

D)1002,ChangRong,1202.0

A B C D

39.

(39)有以下程序

int r=8;

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

输出结果是

A)16

B)8

C)4

D)2

A B C D

40.

(40)下列关于C语言文件的叙述中正确的是

A)文件由一系列数据一次排列组成,只能构成二进制文件

B)文件由结构序列组成,可以构成二进制文件或文本文件

C)文件由数据序列组成,可以构成二进制文件或文本文件

D)文件由字符序列组成,只能是文本文件

A B C D

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

1.(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。

输入答案,中间不含空格:

2.

(2)程序流程图中菱形框表示的是【2】

输入答案,中间不含空格:

3.

(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段。其中【3】阶段

产生”软件需求规格说明书“。

输入答案,中间不含空格:

4.

(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么”学生“

和"可选课程"的联系为【4】

输入答案,中间不含空格:

5.

(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的

是【5】

输入答案,中间不含空格:

6.

(6)若有定义语句:int a=5;,则表达式a++的值是【6】。

输入答案,中间不含空格:

7.

(7)若有语句double x=17;int y;,当执行y=(int)(x/5)%2;之后y的值是【7】

输入答案,中间不含空格:

8.

(8)以下程序运行后的输出结果是【8】

#include stdio.h

main()

{ int x=20;

printf("%d ",0x20);

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

}

输入答案,中间不含空格:

9.

(9)以下程序运行后的输出结果是【9】

#include stdio.h

main()

{ int a=1,b=7;

do{

b=b/2;a+=b;

} while (b1);

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

}

输入答案,中间不含空格:

10.

(10)有一下程序

#include stdio.h

main()

{ int f,f1,f2,i;

f1=0;f2=1;

printf("%d %d ",f1,f2);

for(i=3;i=5;i++)

{ f=f1+f2; printf("%d",f);

f1=f2; f2=f;

}

printf("\n");

}

程序运行后的输出结果是【10】

输入答案,中间不含空格:

11.

(11)有以下程序

#include stdio.h

int a=5;

void fun(int b)

{ int a=10;

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

}

main()

{ int c=20;

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

}

程序运行后的输出结果是【11】

输入答案,中间不含空格:

12.

(12)设有定义

struct person

{ int ID;char name[12];} p;

请将scanf("%d",【12】);语句补充完整,使其能够为结构体变量p的

成员ID正确读入数据。

输入答案,中间不含空格:

13.

(13)有以下程序

#include stdio.h

main()

{ char a[20]="How are you?",b[20];

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

}

程序运行时从键盘输入: How are you?回车

则输出结果为【13】

输入答案,中间不含空格:

14.

(14)有以下程序

#include stdio.h

typedef struct

{ int num;double s;} REC;

void fun1(REC x){ x.num=23;x.s=88.5; }

main()

{ REC a={16,90.0};

fun1(a);

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

}

输入答案,中间不含空格:

15.

(15)有以下程序

#include stdio.h

fun(int x)

{ if(x/20) fun(x/2);

printf("%d ",x);

}

main()

{ fun(6);printf("\n");}

程序运行后的输出结果是【15】

输入答案,中间不含空格:

100分!求09年国家计算机二级考试C语言内部资料题库

你说的 国家计算机二级考试C语言内部资料题库 就是有应该也不会公开传播

我建议你直接购买这两本书中的一本, 都不算贵,就20来块钱,

其实说白了,机试题就从里面出,命中率百分百,你咨询下考过的人就知道了,

南开大学出版社出的上机习题集(俗称南开百题)

未来教育出版社的上机100套题 (附光盘)

如果你时间还是不够,不如直接看培训机构的内部资料,他们一般能把题库缩小到50道至30道, 这个只要找认识的人借就可以的。。。

这个已经是极限了。。。

祝取得好成绩!

谁有2级C语言的资料啊?我练习练习...不胜感激

1.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。

2.请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。

3.请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

4.请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。

5.请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中。

6.请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。

7.请编写一个函数int fun(int *s,int t,int *k),用来求除数组的最大元素在数组中的下标并存放在k所指的储存单元中。

8.编写函数fun,功能是:根据以下攻势计算s,计算结果作为函数值返回;n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+.......+1/(1+2+3+4+......+n)

9.编写一个函数fun,它的功能是:根据以下公式求P的值,结果由函数值带回。m与n为两个正整数,且要求mn。 p=m!/n!(m-n)!

10.编写函数fun,它的功能是:利用以下的简单迭代方法求方程cos(x)-x=0的一个实根。

迭代步骤如下:(1)取x1初值为0.0; (2)x0=x1,把x1的值赋各x0;

(3)x1=cos(x0),求出一个新的x1;

(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);

(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。

程序将输出Root=0.739085。

11.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数 fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0。

12.下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能使求出数组周边元素的平均值并作为函数值返回给主函数中的s。

13.请编写一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维函数组,求出二维函数组每列中最小元素,并依次放入pp所指定一维数组中。二维数组中的数已在主函数中赋予。

14.请别写函数fun,函数的功能使求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

15.请编写一个函数unsigned fun(unsigned w),w使一个大于10的无符号整数,若w使n(n≥2)位的整数,则函数求出w后n-1位的数作为函数值返回。

16.请编写一个函数float fun(double h),函数的功能使对变量h中的值保留2位小树,并对第三位进行四舍五入(规定h中的值位正数)。

17.请编写一个函数fun(char *s),该函数的功能使把字符串中的内容拟置。

18.编写程序,实现矩阵(3行3列)的转置(即行列互换)。

19.编写函数fun,该函数的功能是:从字符中删除指定的字符,同一字母的大、小写按不同字符处理。

20.编写函数int fun(int lim,int aa[MAX]),该函数的功能是求出小于或等于lim的所有素数并放在aa数组中,该函数返回所求的素数的个数。

21.请编写函数fun,对长度位7个字符的字符串,除首尾字符外,将其余5个字符按ASCII码降序排列。

22.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。

23.请编写函数fun,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都是一样的字符串。

24.请编写一个函数fun,它的功能是:将一个字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

25.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

26.请编写一个函数fun,它的功能是:根据以下公式求X的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):

X/2=1+1/3+1×2/3×5+1×2×3/3×5×7+1×2×3×4/3×5×7×9+...+1×2×3×...×n/3×5×7×(2n+1)

程序运行后,如果输入精度0.0005,则程序输出为3.14...。

27.请编写一个函数fun,它的功能是:求除1到m之内(含m)能北7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

28.请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n 是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。

29.请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

30.请编写一个函数fun,它的功能是:求除一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。

31.请编写函数fun,其功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的一个数组中。

32.请编写函数fun,其功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的一个数组中。

33.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。

34.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能使:把分数最高的学生数据放在h所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

35.请编写一个函数,用来删除字符串中的所有空格。

36.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。

37.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。请自己定义正确的形参。

38.请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。

39.请编写函数fun,该函数的功能是:移动一维数组中的内容,若数组中由n个整数,要求把下标从0到p(p小于等于n-1)的数组元素平移到数组的最后。

40.请编写函数fun,该函数的功能是移动字符串中内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。

41.请编写函数fun,该函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

42.下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int m),该函数的功能是:将数组右上半三角元素中的值乘以m。

43.编写一个函数,从传入的num个字符串中找出一个最长的一个字符串,并通过形参指针max传回该串地址(用****作为结束输入的标志)。

44.编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

45.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n 给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后的*个数。在编写时不得使用C语言给提供得字符串函数。

46.学生得记录由学号和成绩组称个,N名大学生得数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:按分数的高低排列学生的记录,高分在前。

47.请编写一个函数void fun(char *ss),其功能时:将字符串ss中所有下标为奇数位置上的字母转换为大写(若位置上不是字母,则不转换)。

48.请编写函数fun,其功能是:将两个两位数的正整数a,b合并成一个整数放在c中。合并的方式是:将a数的十位和个位依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。

49.请编写函数fun,其功能是:将s所指字符串中下标位偶数同时ASCII值为奇数的字符删除,s中剩余的字符形成的新串放在t所指的数组中。

50.已知学生的记录是由学号和学习成绩构成,N名学生的数据已存入结构体数组中。请编写函数fun,该函数的功能是:找出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。

51.请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指的数组中,非素数的个数通过k传回。

52.编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

53.请编写函数fun,该函数的功能是:实现B=A+A',即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

54.学生的记录由学号和成绩组称个,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回,平均分通过函数值返回。

55.请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的储存单元中。

56.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字母串中其他*号全部删除。形参p已指向字符串中最后的一个字母。不使用c的字符串函数。

57.学生的记录是由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

58.编写函数藏服那,它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。

59.请别写函数fun,该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。

60.请编写函数fun,该函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。

61.请编写函数fun,该函数的功能使:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中;要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁的人数放在d[2]中,其余以此类推,把100岁(含100以上年龄的人数都放在d[10]中。结果在主函数中输出。

62.请编写函数fun,该函数的功能是:统一一含字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。

63.请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之和。规定n的值不大于1000。

64.请编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

65.请编写函数fun,其功能是:将两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的十位和千位上。

66.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有*号。在编写函数时,不得使用C语言提供的字符串函数。

67.学生的记录时由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回(用于字符串比较的函数时strcmp)。

68.请编写函数fun,其功能时:计算并输出下列多项式的值:

sn=1+1/1!+1/2!+1/3!+1/4!+...+1/n!

69.请编写一个函数fun,它的功能时:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:

F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)

70.编写函数fun,它的功能时:计算并输出下列级数和:

S=1/1*2+1/2*3+...+1/n(n+1)

71.请编写函数fun,其功能时:将两个两位数的正整数a、b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b的十位和个位整数依次放在c数的百位和个位上。

72.请编写函数fun,其功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成新串放在t所指数组中。

73.假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串第一个字符,形参p已指向字符串中最后一个字母。在编写程序时,不得使用C语言提供的字符串函数。

74.学生的记录由学号和成绩组成N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。

75.请编写函数fun ,该函数的功能:将M行N列的二维数组中的数据,按列的顺学依次放到一维数组中。

76.请编写函数fun,其功能时:计算并输出当x0.97时下列多项式的值,直到|Sn-S(n-1)|0.000001为止。

Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+0.5(0.5-1)(0.5-2).....(0.5-n+1)/n!x(n)

77.请编写一个函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。

78.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

79.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。

80.程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun,该函数的功能是:使数组左下半三角元素中的值乘以n。

81.请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。

82.请编写一个函数fun,它的功能使:计算n门课程的平均分,计算结果作为函数值返回。

83.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。

84.请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

85.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回;

86.请编写函数fun,计算并输出给定10个数的方差:

87.请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。

88.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数亚时,不得使用C语言提供的字符串函数。

89.学生的记录是由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

90.请编写函数fun,其功能是:计算并输出下列多项式值:Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n).

91.请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。

92.请编写函数fun,它的功能是计算:s=(ln(1)+ln(2)+ln(3)+...+ln(m))(0.5),s作为函数值返回。

93.请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。

s=1+x+x(2)/2!+x(3)/3!+...x(n)/n!

94.规定输入字符串中只包含字母和*号。请编写函数fun,它的功能是:将函数字符串中的前导*号全部删除,中间和尾部的*号不删除。

95.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做。字符串中间和尾部的*号不删除。

96.请编写函数fun,其功能使:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和

97.请编写函数fun,其功能是:计算并输出下列多项式值:

s=1+1/(1+2)+1/(1+2+3)+..1/(1+2+3...+50)

98.请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

99.请编写函数fun ,其功能是:计算并输出3到n之间所有素数的平方根之和。

100.请编写函数fun,其功能是:计算并输出 s=1+(1+2(0.5))+(1+2(0.5)+3(0.5))+...+(1+2(0.5)+3(0.5)+...+n(0.5))

如果要答案可以加我QQ:357392786

2007二级C上半年群:8914191、7533186

你可以到这个网站看看,有用的