C二级第三套试题

本文包含三个C语言编程实例,涉及数组处理、递归算法及二维数组操作,通过具体代码展示了如何寻找最接近平均值的数组元素、实现递归计算及二维数组的倍增运算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.

题目

代码

#include  <stdlib.h>
#include  <stdio.h>
#define   N   10
double fun(double  x[],double  *av)
{ int  i,j;    double  d,s;
  s=0;
  for(i=0; i<N; i++)  s = s +x[i];
/**********found**********/
  *av=s/N;
  d=32767;
  for(i=0; i<N; i++)
    if(x[i]<*av && *av - x[i]<=d){//小于平均值且最接近平均值的数
/**********found**********/
      d=*av-x[i]; //d为偏移值
	  j=i;//存放最接近平均值的下标
	 }
/**********found**********/
  return x[j];
}
void main()
{ int  i;    double  x[N],av,m;
  for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}
  printf("\n");
  m=fun(x,&av);
  printf("\nThe average is: %f\n",av);
  printf("m=%5.1f ",m);
  printf("\n");
}

结果

2.

题目

代码

#include  <stdlib.h>
#include  <conio.h>
#include  <stdio.h>
/*************found**************/
float fun(int n)
{ float A=1;int i;
/*************found**************/
  for(i=2;i<=n;i++)
     A=1.0/(1+A);
  return A;
}
void main()
{ int n;
  system("CLS");
  printf("\nPlease enter n: ");
  scanf("%d",&n);
  printf("A%d=%lf\n",n,fun(n));
}

结果

3.

题目

代码

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define  N  5
void fun(int a[][N], int m)
{
	int i,j;//定义行标列标
	for(i=0;i<N;i++){
		for(j=0;j<N;j++){
			if(i<=j){
				a[i][j]*=m;
			}
		}
	}
	return;
  
}
void main()
{ 
  int a[N][N],m, i, j;
  FILE *out;
  printf("*****The array*****\n");
  for(i=0;i<N;i++)
        { for(j=0;j<N;j++)
        	{a[i][j]=rand()%20;//二维数组0~19
         	printf("%4d", a[i][j]);
        	}
        printf("\n");
    	}
  m=rand()%4;//倍数m
  printf("m=%4d\n",m);
  fun(a,m);//将a二维数组和倍数传进去
  printf("THE RESULT\n"); //使用for循环将新的数组输出
  for(i=0;i<N;i++)
     { for(j=0;j<N;j++) 
          printf("%4d",a[i][j]);
       printf("\n");
     }
  /******************************/
  out=fopen("out.dat","w");
  for(i=0;i<N;i++)
    	for(j=0;j<N;j++)
		a[i][j]=i*j;
  fun(a,8);//倍数变为8
  for(i=0;i<N;i++)
  { 	for(j=0;j<N;j++)
		fprintf(out,"%4d",a[i][j]);
	fprintf(out,"\n");
  }
  fclose(out);
  /******************************/
}

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值