C语言函数习题及答案(20200506225202) 下载本文

内容发布更新时间 : 2024/11/19 1:47:03星期一 下面是文章的全部内容请认真阅读。

1 2 5

5 4 1

2 7 3

3 8 2

The value is 15. 程序:

#include func( 【1 】 ) {

int 【 2 】 ,j; for (j=0;j<4;j++ ) {

b[3][j]=2*b[0][j]; printf(\ b[3][j]=0; }

printf(\ for(j=0;j<4;j++)

if(b[i][j]<5&&b[i][2]>5)

k+=b[i][j];

return k; } main() {

static int a[4][4]={ int i,j,k; k=func(a,9); for(i=0;i<4;i++) {

【3】};

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

if(a[i][j]!=0)

printf(\

if(a[i][4]!=0)

printf(\

}

printf(\

}

【 1】 A) int b[4][],k 【 2】 A) i=0

B) int b[][4],k B) i=1

C) int b[4,4],int k D )int b[][4],int k

D) i=3

C) i=2

【 3】 A) {1,5,2,3},{2,4,7,8},{5,1,3,2}

C) {1,5,2,3},{2,4,7,8},{5,1,2,3}

B) {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,3,2} D) {2,10,4,6},{1,5,2,3},{2,4,7,8},{5,1,2,3}

37. 以下程序的功能是用二分法求方程

根,并要求绝对误差不超过

f(x)=x41+x3+1=0 在区间( -1.0 , -0.5 )中的一个实

a,b )中 f(a)

0.001 。二分法的基本思想是:假设在区间(

与 f(b) 异号,先取区间的中点 m,如果 f(m) 与 f(a) 异号,则取新的解区间为( a,m ),否则

取新的解区间为 (m,b) 。不断对解区间对分,直到解区间已经小于给定的误差时,取该区间的中点作为解的近似值。请将程序补充完整。

#include #include float f(float x) {

return (pow(x,41)+pow(x,3)+1); }

float solv(float a,float b) {

float m; m=(a+b)/2;

while(f(m)*f(b)!=0) {

if( 【 1】 )

a=m; b=m;

else

if( 【 2】 ) break;

m=(a+b)/2; }

return m;

} main() {

float r;

r=solv(-1.0,-0.5);

printf(\ }

【3】);

【 1】 A) f(m)*f(b)<0 【 2】 A) b-a<0.001 【 3】 A) f(r)

B) f(m)*f(b)>=0

C) f(m)*f(b)<=0

D )f(m)*f(b)>0

B) fabs(a-b)<0.001 C) ABS(a-b)<0.001 D )a-b<0.001 D )m

B) f(m) C) r

38. 以下程序是选出能被 3 整除且至少有一位是

#include sub(int m,int n) {

int a0,a1,a2; a2= 【1 】 ; a1= 【2 】 ; a0=m;

5 的所有三位正整数 k(个位为 a0, 十位为 a1,

百位为 a2), 打印出所有这样的数及其个数。请将程序补充完整。

if(m%3==0 && (a2==5||a1==5||a0==5)) {

printf( “%d”,m);

n++; } return n; } main() {

int m=0,k;

for(k=105;k<=995;k++)

m=sub( 【 3 】 ); printf(\ }

【1】 A) 【2】 A) 【3】 A)

m/10

(m-a2*10)/10 k,m

B) B) B)

m m/10-a2*10 m,k

C) m/100

C) m-a2*10 C) k,n

D) D) D)

m0

m0-m n,k

39. 以下程序可计算 10 名学生 1 门课成绩的平均分,要求使用无返回值函数实现。请将程序

补充完整。

#include

void average(float array[10]) {

int i=0;

while( 【 1 】 )

array[0]+= 【 2】 ; array[i-1]=array[0]/10; } main() {

float score[10]; int i;

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

scanf(\ average(score);

printf(\

}

【 1】 A) i<=10 【 2】 A) array[i-1] 【 3】 A) score[8]

B )i++<10 B )array[i] B )score[0]

【 3】 );

C) ++i<10 C) array[i--] C) array[8]

D )i<10 D )array[i++] D )score[9]

40. 以下程序用于输入不超过N 个数的整数序列(用 -1 作为输入结束标志),然后统计出

从 M1 至 M2 各数在序列中出现的次数并显示输出。请将程序补充完整。

#include #define N 100 #define M1 3 #define M2 7 main() {

int a[N],c[M2-M1+1]={0},i,n=0,x=0;

printf(\ input a sequence of number(%d-%d) which is ended with -1:\\n\ while(x!=-1) {

scanf(\ a[n]=x; n++; }

f(a,c,n);

printf(\for(i=0;i<=M2-M1;i++)

printf( “%d:%d\\n ”, 【 1】 ); printf(\ }

f( 【 2】 ) {

int i;

for(i=0;i

if(a[i]>=M1 && a[i]<=M2)

【 3】;

}

【 1】 A) M1+i:c[M1+i]

C) M1+i:c[i]

【 2】 A) f(a[],c[],n)

B )M1+i+1:c[i]

D) i:c[M1+i]

B )f(int a[],int c[],int n)

D )f(int a[N],c[M2-M1+1],n)

C) f(a,c,n)

【 3】 A) c[a[i]]++

C) a[c[i]]++

B )c[a[i]-M2]++ D )c[a[i]-M1]++

二.读程序写结果

1.

fun(int x,int y,int z) {

z =x*x+y*y; }

main ( ) {

int a=31; fun (6,3,a); printf (\ }

2.

int f( ) {

static int i=0; int s=1; s+=i; i++; return s; } main() {

int i,a=0;

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

a+=f();

printf(\ }

3. 运行程序时 ,若从键盘输入 asd af aa z67 (回车)#include int fun(char *str) {

int i,j=0;

for(i=0;str[i]!= ??;i++) if(str[i]!= ??) str[j++]=str[i];

str[j]= ??;

} main() {

char str[81]; int n;

printf(\ gets(str); fun(str);

printf(\

}

4.

void swap(int *p1,int *p2) {

int *t;

t=p1,p1=p2,p2=t;

printf(\ } main() {

int x=10,y=20; swap(&x,&y);

printf(\ }

分析以下程序的输出结果。

,