四川C语言二级考试真题含答案

Python09

四川C语言二级考试真题含答案,第1张

四川省普通高等学校计算机应用知识和能力

第二十九次等级考试

二级(C与C++语言) 笔 试 试 卷

时间: 2008年10月 18 日

上午 9:00—11:00

第一部分

软件技术基础

(共15分)

一、是非判断题(每小题1分,共10分)

( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )

1. 在设备管理中通道是处理输入、输出的软件。 ( 1 )

2. 从逻辑上可以把数据结构分为线性结构和非线性结构。 ( 2 )

3. 若无进程处于运行状态,则就绪队列为空。 ( 3 )

4. 在单处理器系统中,程序的并发执行,实质上是程序的交替执行。( 4 )

5. 分页存储管理中,页面不能映射到不连续的内存块中。 ( 5 )

6. 瀑布模型的突出缺点是不适应用户需求的变化。( 6 )

7. 栈和队列的共同特点是允许在端点之外处插入和删除元素。 ( 7 )

8. 为了便于对照检查,测试用例应由输入数据和预期的输出结果两部分组成。 ( 8 )

9. 在软件生存期内,能确定软件系统必须做什么和必须具备的功能阶段是编码。 ( 9 )

10.在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。( 10 )

二、选择题(每小题1分,共5分)

1. 软件开发中,模块设计的原则是( 11 ) 。

11 (A) 低偶合、高内聚 (B) 高偶合、高内聚

(C) 高偶合、低内聚 (D) 低偶合、低内聚

2. 进程从运行状态进入就绪状态的原因可能是( 12 )。

12 (A) 时间片用完 (B) 等待某一事件

(C) 等待的事件已发生 (D) 被选中占有处理机

3. 队列的操作原则是( 13 )。

13 (A) 先进后出 (B) 先进先出

(C) 只进不出 (D) 只出不进

4. 以下( 14 )不是实时操作系统的特点。

14 (A) 高可靠性 (B) 及时响应

(C) 高效性(D) 通用性

5. 程序流程图是用于描述结构化方法中 ( 15 )工作阶段的工具。

15 (A) 可行性分析(B) 程序编码

(C) 详细设计 (D) 需求分析

第二部分

C与C++语言程序设计

(共85分)

一、单项选择题 ( 每小题1分,共10分 )

1. 下列关于C++语言类的描述中错误的是( 16 ) 。

16 (A) 类用于描述事物的属性和对事物的操作

(B) 类与类之间通过封装而具有明确的独立性

(C) 类与类之间必须是平等的关系,而不能组成层次结构

(D) 类与类之间可以通过一些方法进行通信和联络

2. C++中,已知有如下定义:

const int D=5

int i=1

long int f=0

char c=15

则下列选项错误的是( 17 )。

17 (A) ++i (B) D-- (C) c++ (D) --f

3. 下面关于类和对象的描述中,错误的是 ( 18 )。

18 (A) 类就是C语言中的结构体类型,对象就是C语言中的结构体变量

(B) 类和对象之间的关系是抽象和具体的关系

(C) 对象是类的实例,一个对象必须属于一个已知的类

(D) 类是具有共同行为的若干对象的统一描述体

4. 设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是( 19 )。

19 (A) p=5 (B) *q=5 (C) q=p (D) *p=5

5. 设有定义:char s[20]= "ab\101\ncd"则sizeof(s)和strlen(s)的值为( 20 )。

20 (A) 6,6 (B) 20,6 (C) 20,7 (D) 20,10

6. 在C语言的函数中( 21 )。

21 (A) 必须有形参 (B) 形参必须是变量名

(C) 可以有也可以没有形参 (D) 数组名不能作为形参

7. 下列程序输出结果是( 22 )。

# include "stdio.h"

# define SQR(x) x*x

void main()

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

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

printf("%d\n",a)

}

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

8. 已知学生记录描述如下

struct student

{ int no

char name[20]

char sex

struct

{ int year

int month

int day

}birth

}

struct student s

设变量s中“生日”是“1982年5月29日”,对“生日”的正确赋值方式是( 23 )。

23 (A) year=1982month=5day=29

(B) birth.year=1982birth.month=5birth.day=29

(C) s.year=1982s.month=5s.day=29

(D) s.birth.year=1982s.birth.month=5s.birth.day=29

9. 有下列程序输出结果是 ( 24 )。

# include <stdio.h>

void dig(char *s)

{

char *p=s

while(*s)

*s>='0' &&*s<='9'?s++:(*p++=*s++)

*p='\0'

}

void main()

{

char *str="A1B2C3"

dig(str)

puts(str)

}

24 (A) ABC (B) A1B2C3 (C) A1B2C (D) ABC3

10. 在下面的选项中,赋值语句错误的是 ( 25 ) 。

25 (A) i++ (B) a=(b=(c=2,d=3))

(C) a=a<a (D) a=a*b=2

二、读程序回答问题 ( 每个选择3分,共45分 )

1. 读下面程序并回答问题:

# include <stdio.h>

void fun1(int x,int y)

{

int t

t=xx=yy=t

}

void fun2(int x[])

{

int t

t=x[0]x[0]=x[1]x[1]=t

}

void main()

{

int a[2]={1,2},b[2]={1,2}

fun1(b[0],b[1])fun2(a)

printf("%d,%d,%d,%d\n",a[0],a[1],b[0],b[1])

}

(1) 下列说法错误的是( 26 )。

26 (A) 数组名作为函数参数进行传递,传递的是数组的首地址

(B) 数组名作为函数参数时,形参数组与实参数组共用内存空间

(C) 普通变量作为函数参数进行传递,实参与形参之间发生的是单向值传递

(D) 数组名作为函数参数时,传递的是数组元素的值

(2) 程序的运行结果是( 27 )。

27 (A)1,2,1,2 (B) 1,2,2,1 (C) 2,1,1,2 (D) 2,1,2,1

2. 读程序并回答问题。

# include <stdio.h>

int fun()

{

static int c=0

c++

return c

}

void main(int argc,char *argv[])

{

int x,i,j

for(i=1i<argci++)

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

x=fun()

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

}

(1)若程序经编译连接后生成可执行文件2_3.exe,若键入以下命令行:

2_3 abcd 123

则程序的运行结果为( 28 )。

28 (A) 3(B) 21 (C) 9 (D) 0

(2)若将函数fun中的static去掉,变为int c=0程序经编译后连接生成可执行文件2_3.exe,若键入以下命令行:

2_3 abcd 123

则程序的运行结果为( 29 )。

29 (A) 3(B) 30 (C) 22 (D) 10

3. 读程序并回答问题

# include <stdio.h>

# include <string.h>

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

{

char t

while(p1<p2)

{

t=*(s+p1)*(s+p1)=*(s+p2)*(s+p2)=t

p1++p2--

}

}

void main()

{

char str[10]

int i

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

str[i]='A'+i

str[i]='\0'

puts(str)

fun(str,0,strlen(str)-1)

puts(str)

}

(1)第一个puts(str)的输出结果为( 30 )。

30 (A) AHCFEDGBI (B) IBGDEFCHA

(C) ABCDEFGHI (D) IHGFEDCBA

(2)第二个puts(str)的输出结果为( 31 )。

31 (A) AHCFEDGBI (B) IBGDEFCHA

(C) ABCDEFGHI (D) IHGFEDCBA

4. 阅读下面程序,回答问题。

void main()

{

int n,m,s=0,t=1

scanf("%d",&m)

for(n=1n<=mn++)

{

t*=n

s+=t

}

printf("%d\n",s)

}

程序的功能是( 32 )

32 (A) 实现1的阶乘至m的阶乘的求和

(B) 求m的阶乘

(C) 1到m的求和

(D) 实现1至m-1的阶乘的求和

5. 读程序,回答问题。

# include <stdio.h>

void main()

{

char s[80]

int i,j

gets(s)

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

if(s[i]!='c') s[j++]=s[i]

s[j]='\0'

puts(s)

}

程序运行时输入cctv10,其输出结果为( 33 )。

33 (A) cc(B) tv10 (C) ctv10 (D) tv10cc

6. 有下列程序:

# include <stdio.h>

char func(char *s)

{

char *p=s

while(*p!='\0')

p++

return p-s

}

void main()

{

printf("\n%d\n",func("Hello!"))

getch()

}

(1)程序的运行结果是( 34 )。

34 (A) 3(B) Hello!6 (C) 无输出 (D) 6

(2)指针变量的运算不可以( 35 )。

35 (A) 指针变量加整形变量(B) 指针变量减整形变量

(C) 指针变量加指针变量(D) 指针变量减指针变量

7. 以下是一个C++程序,读程序写出程序运行结果。

# include <iostream.h>

void main()

{

int num=0,i=8

do

{ i--

num++

}while(--i)

cout<<num<<endl

}

程序的运行结果是( 36 )。

36 (A) 2(B) 0 (C) 4(D) 5

8. 有下列程序:

# include <stdio.h>

void main()

{ char c='A'

int k=0

do

{ switch(c++)

{ case 'A': k++break

case 'B': k--

case 'C': k+=2break

case 'D': k%=2continue

case 'E': k*=10break

default: k/=3

}

k++

}while(c<'G')

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

getch()

}

(1)程序输出结果是( 37 )。

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

(2)本程序中continue的作用( 38 )。

38 (A) 与break一样 (B) 不起任何作用

(C) 开始下一次循环 (D) 出现语法错误

9. 有下列程序

int w=3

int fun(int k)

{

if(k==0) return w

return(fun(k-1)*k)

}

void main()

{

int w=10

printf("%d\n",fun(5)*w)

}

输出结果是( 39 )。

39 (A) 360 (B) 3600(C) 1080(D) 1200

10. 有下列程序

void main()

{

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

int i,j,s=0

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

p[i]=ch[i]

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

for(j=0p[i][j]>'\0'&&p[i][j]<='9'j+=2)

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

printf("%d\n",s)

}

输出结果是( 40 )。

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

注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上

② 每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空 ( 每空2分,共30分 )

1. 函数fun的功能是:找出N行M列二维数组元素中的最大值,并作为函数值返回,最大值的行列下标通过形参指针带回main函数中。请填空。

# include <stdio.h>

# define N 3

# define M 4

int fun(int a[N][M],int *row,int *col)

{

int i,j,r,c

r=c=0

for(i=0i<Ni++)

for(j=0j<Mj++)

if(a[i][j]>① ) { r=ic=j}

*col=c

}

void main()

{

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

int row,col,max

max=fun(a,&row,&col)

printf("max=%d,row=%d,col=%d\n",max,row,col)

}

2. 程序的功能是:求出分数序列2/1,3/2,5/3,8/5,13/8……前20项之和,请填空。

# include <stdio.h>

void main()

{ double x=2,y=1,t,s=0

int i

for(i=1i<=20i++)

{

s=①

t=②

x=③

y=t

}

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

}

3. 有5个学生的成绩需要保存在文件score.dat文件中,保存格式如下:

姓名,年龄,成绩<CR> 请填空。

# include <stdio.h>

void main()

{ FILE *fp

int i

char name[80]

int age

float score

fp=fopen(①,"w")

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

{ printf("请输入第%d个学生的信息\n",i)

printf("姓名:")

scanf("%s",name)

printf("年龄:")

scanf("%d",&age)

printf("成绩:")

fprintf(fp,"%s,%d,%f\n",name,age,score)

}

}

4. 下列程序的功能是:从5个字符串中找出最长的那个字符串。请填空。

# include <stdio.h>

# include <string.h>

# define N 5

# define M 81

char *fun(char (*sq)[M])

{ int i

sp=sq[0]

for(i=1i<Ni++)

if(② ) sp=sq[i]

return sp

}

void main()

{ char str[N][M],*longest

int i

printf("please enter 5 string:")

for(i=0i<Ni++)

gets(str[i])

for(i=0i<Ni++)

puts(str[i])

longest=③

printf("\nThe longest string:")

puts(longest)

}

5. 下面程序的功能是:由25人坐成圆圈,先从任一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1,2,3,4,…),数到5的倍数的出圈,剩下的继续报数,求最后出圈的编号。

# include <stdio.h>

void main()

{

int a[26],j,n,count

for(j=1j<=25j++) a[j]=j

j=1

count=0

do

{ if(a[j]!=0)

{ n++

if(n%5==0)

{ ②

if(count==24) printf("%d\n",j)

count++

}

}

j++

if(j>25) j=1

}

while(③ )

}

四川省普通高等学校计算机应用知识和能力

第二十八次等级考试

二级(C与C++语言) 笔 试 试 卷

时间: 2008年4月 19 日

上午 9:00—11:00

第一部分

软件技术基础

(共15分)

一、是非判断题(每小题1分,共10分)

( 判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )

1. 在程序设计中,常用一维数组来表示线性表的顺序存储空间。 ( 1 )

2. 数据在计算机内存中的表示是指数据的存储结构。( 2 )

3. Windows是多用户多任务操作系统。 ( 3 )

4. 能影响中断响应次序的技术是中断优先级和中断屏蔽。 ( 4 )

5. 链表可以随机访问任意一个结点,而顺序表则不能。 ( 5 )

6. 作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。 ( 6 )

7. 数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。( 7 )

8. 中断控制方式适用于外存同CPU之间进行大量数据交换。 ( 8 )

9. 提供没有错误的程序是提高软件的可维护性的基本措施。 ( 9 )

10.软件结构是以指令为基础而组成的一种控制层次结构。 ( 10 )

二、选择题(每小题1分,共5分)

1. 数据流图是用于描述结构化方法中( 11 ) 工作阶段的工具。

11 (A) 可行性分析 (B) 程序编码

(C) 详细设计 (D) 需要分析

2. 若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能的出栈序列是( 12 )。

12 (A) 1,4,3,2 (B) 3,1,4,2

(C) 2,3,4,1 (D) 3,4,2,1

3. 任何两个并发进程之间( 13 )。

13 (A) 可能存在同步或互斥关系 (B) 一定存在同步关系

(C) 一定彼此独立无关 (D) 一定存在互斥关系

4. 以下的哪个特征不是分时操作系统的主要特征( 14 )。

14 (A) 分时性 (B) 独占性

(C) 交互性(D) 多路性

5. 需求分析中开发人员主要从用户那里了解 ( 15 )。

15 (A) 软件的维护(B) 软件的结构

(C) 软件做什么 (D) 软件的测试

第二部分

C与C++语言程序设计

(共85分)

一、单项选择题 ( 每小题1分,共10分 )

1. C++语言对C语言做了很多改进,C++语言相对于C语言的最根本的变化是( D) 。

16 (A) 增加了一些新的运算符 (B) 允许函数设置缺省参数

(C) 规定函数说明符必须用原型 (D) 引进了类和对象的概念

2. 决定C++语言中函数的返回值类型的是( B )。

17 (A) return语句中的表达式类型

(B) 在定义该函数时所指定的数据类型

(C) 调用该函数时的主调函数类型

(D) 调用该函数时系统随机产生的类型

3. C语言中运算对象必须是整型的运算符是 ( A )。

18 (A) %(B) /(C) = (D) 《=

4. 若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是( C )。

19 (A) EOF (B) -1 (C) 1 (D) NULL

5. 已知:int a=15,b=16则表达式(a&b)&&br的结果是( A )。

20 (A) 1(B) 0 (C) 16 (D) 31

6. 已知:int arr[10]则对arr数组元素的正确引用是( D )。

21 (A) arr[10] (B) arr[3.5] (C) arr(5) (D) arr[10-10]

7. 下列程序中,循环结束后b的值是( C )。

vpod main()

{

int a=1,b=10

do

{

b-=a

a++

}while(b-->10)

}

22 (A) -1(B) -2 (C) 8 (D) 9

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

# define M(x,y,z) x*y+z

main()

{

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

printf("%d\n",M(a+b,b+c,c+a))

}

23 (A) 12 (B) 15 (C) 17 (D) 19

9. 下面程序把数组元素中的最大值放入a[0]中,则在if语句下划线的条件表达式应填入的是 ( 24 )。

main()

{

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

for(i=0i<10i++,p++)

if ( ) *a=*p

printf("%d",*a)

}

24 (A) p>a (B) *p>a[0] (C) *p>*a[0] (D) *p[0]>a[0]

10. 若在下面程序段中使指针变量p指向一个存储整型数据的动态存储单元,则在下划线处应填入 ( 25 ) 。

int *p

p=malloc(sizeof(int))

25 (A) int (B) int * (C) (* int) (D) (int *)

二、读程序回答问题 ( 每个选择3分,共45分 )

1. 读程序写出程序运行结果。

# include <stdio.h>

void fun(char *s,char t)

{

while(*s)

{ if(*s==t) *s=t-'a'+'A'

s++

}

}

void main()

{

char s[100]="abcddfefdbd",c='d'

fun(s,c)

printf("%s\n",s)

}

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

26 (A) ABCDDFEFDBD (B) abcDDfefDbD (C) abcAAfefAbA (D) Abcddfefdbd

2. 读程序并回答问题。

# include <stdio.h>

void fun(int a[],int n)

{

int i,t

for(i=0i<n/2i++)

{

t=a[i]a[i]=a[n-1-i]a[n-1-i]=t

}

}

void main()

{

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

int i,s=0

fun(b,8)

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

printf("%d\n",s)

}

(1)函数fun的功能是(A )。

27 (A) 将数组a的前n个元素逆置(B) 对数组元素进行升序排列

(C) 交换数组第一个元素和最后一个元素 (D) 对数组元素进行降序排列

(2)程序的运行结果是(A )

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

3. 读程序,回答问题

# include <iostream.h>

void main()

{

int a=0,x=0

for(!x&&a<10a++)

{ a++

x++

}

cout<<a<<endl

}

程序的运行结果为:( D )。

29 (A) 10 (B) 4 (C) 3 (D) 2

4. 读程序回答问题。

# include <stdio.h>

void fun(char *str)

{

int i,j=0

for(i=0str[i]!='\0'i++)

if(str[i]!=' ') str[j++]=str[i]

s[j]='\0'

}

void main()

{

char str[80]

int n

printf("Input a string:")

gets(str)

fun(str)

printf("%s\n",str)

}

程序运行时输入字符串asd_ab_123(注:用“_”表示空格),则程序的运行结果为( A 30 )

30 (A) asdab123 (B) asd_ab123 (C) asdab_123 (D) asd

5. 读程序,回答问题。

# include <stdio.h>

# include <conio.h>

struct mod

{int a,b,c}

void main()

{ struct mod st[3]={{1,2,3},{4,5,6},{7,8,9}}

int total

total=st[0].a+st[1].b

printf("total=%d\n",total)

getch()

}

程序运行输出total=( B )。

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

6. 有下列程序:

# include <stdio.h>

void main()

{

int x=10,y=5

switch(x)

{ case 1: x++

default: x+=y

case 2: y--

case 3: x--

}

printf("x=%d,y=%d",x,y)

}

程序输出结果为( A )。

(A) x=14,y=4 (B) x=15,y=4

(C) x=10,y=5 (D) x=15,y=5

7. 读程序,回答问题。

# include <stdio.h>

int f(int m)

{

static int n=1

m/=2

m=m*2

if(m)

{ n*=m

return(f(m-2))

}

else return(n)

}

void main()

{

int a,i,j

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

{

a=f(4+i)

printf("%d\n",a)

}

}

(1)程序第一次的输出结果是( A )。

33 (A) 8(B) 0 (C) 64(D) 4

(2)程序第二次的输出结果是( C )。

34 (A) 8(B) 0 (C) 64(D) 4

8. 有下列程序,若程序编译连接后生成可执行文件CAD.EXE,则输入以下命令行:

cad FILE1 FILE2<CR> (<CR>表示回车)

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

# include <stdio.h>

void main(int argc,char *argv[])

{

int i

printf("%d\n",argc)

for(i=0i<=argc-1i++)

printf("%s",argv[i])

printf("\n")

}

35 (A) 2 (B) 3

Cadfile1file2 file1file2

(C) 2 (D)3

CAD.EXE FILE1 FILE2 CAD.EXEFILE1FILE2

9. 下面程序的功能是把316表示为两个数的和,且这两具加数分别能被13和11整除。程序while语句下划线处应填入( D )。

# include <stdio.h>

void main()

{ int i=0,j,k

do{

i++

k=316-13*i

}while ( )

j=k/11

printf("316=13*%d+11*%d",i,j)

}

36 (A) k/11 (B)k%11(C) k(D) k%11==0

10. 读程序并回答问题。

# include <stdio.h>

void main()

{

int a=1,b=3,c=5,d=4,x

if(a<b)

if(c<d) x=1

else

if(a<c)

if(b<d) x=2

else x=3

else x=6

else x=7

printf("%d",x)

}

(1)程序执行完后x的值是( B )。

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

(1)当d的值改为2时,程序执行完后x的值是( C )。

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

11. 以下程序的运行结果为( C )。

# include <stdio.h>

void sub(int x,int y,int *z)

{ *z=y-x}

void main()

{

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

sub(a,b,&a)

sub(b,a,&b)

sub(a,b,&c)

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

}

39 (A) 1,1,0 (B) 1,2,3 (C) 1,-1,-2 (D) 1,2,1

12. 下面程序的输出结果是( D )。

# include <stdio.h>

# include <string.h>

void main()

{ char *p1="abc",*p2="ABC",str[50]="xyz"

strcpy(str+3,p2)

strcat(str+2,p1)

printf("%s\n",str)

}

40 (A) xyzabcABC (B) xyzABabc (C) yzabcABC (D) xyzABCabc

注意:① 请把下面“程序填空”中各小题答案写在主观题答题纸上

② 每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空 ( 每空2分,共30分 )

1. 函数fun的功能是:求出s所指字符串中指定字符的个数,并返回个数。例如,在main函数中,若输入字符串abcdabacaa ,输入指定字符a,则输出结果为5,即字符串abcdabacaa中有5个字符a。请填空。

# include <stdio.h>

# define M 81

int fun(char *s,char c)

{

int i,cnt=0

for(i=0① i++)

if(*(s+i)==c)

cnt++

}

void main()

{

char str[M],ch

printf("\nPlease enter a string:")

gets(str)

printf("\nPlease enter a char:")

ch=getchar()

printf("\nThe number of the char is : %d\n", ③ )

}

2. 函数fun的功能是根据公式 计算级数前n项的和s,计算结果通过形参指针s传回;n值大于等于0。请填空。

# include <stdio.h>

void fun(float *s,int n)

{

float t=0.0

int i,k=-1

for(i=0i<=ni++)

{

k=①*k

t=t+k*1.0/②

}

}

void main()

{

int n

float s

printf("Input n:")

scanf("%d",&n)

fun(&s,n)

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

}

3. 下列程序的功能是:求一个M*N二维数组每行元素的和,并将和依次放入一个一维数组中传回主函数。例如,若有以下二维数组:

6 10 2 10 15

17 14 15 8 6

4 18 10 19 12

0 12 1 2 7

则输出为:43 60 63 22。请填空。

# define M 4

# define N 5

# include <stdio.h>

fsum(int a[][N]),int b[])

{ int i,j

for(i=0i<M,i++)

for(i=0i<Mi++)

for(j=0j<Nj++)

② =a[i][j]

}

void main()

{

int x[M][N],y[M],i,j

printf("The %d x %d Array :\n",M,N)

for(i=0i<Mi++)

{ for(j=0j<Nj++)

{ ③ =rand()%20

printf("%6d",x[i][j])

}

printf("\n")

}

fsum(x,y)

printf("The sum of each line:\n")

for(i=0i<Mi++)

printf("%6d",y[i])

printf("\n")

}

4. 下面的程序求ab.c文件中最长的行的字符数len及其行号line。请填空。

# include <stdio.h>

void main()

{

int line,i,j=0,len=0

char c

FILE *fp

fp=fopen("ab.c","r")

rewind(fp)

while(fgetc(fp)!EOF)

{ i=1

while(fgetc(fp)!='\n') ①

j++

if(i>len) { len=i②}

}

printf("\n%d\t%d\n",len,line)

}

5. 下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数按位放在一维数组中返回,二进制数的最低位放在下标为0的元素中,其他依此类推。请填空。

# include <stdio.h>

int fun(int x,int b[])

{ int k=0,r

do

{ r=x%2

b[ ① ]=r

x/= ②

}while(x)

return ③

}

void main()

{

int k,n,a[20]

printf("\nEnter n:")

scanf("%d",&n)

k=fun(n,a)

while(k>=0)

printf("%d",a[k--])

}