计算机二级-C语言-对二维数组数据进行处理。对文件进行数据输入。形参与实参。

//函数fun的功能为:计算x所指数组中N个数的平均值(规定所有数都为正数),平均值通过形参返回给主函数,将小于平均值且最接近平均值的数作为函数值返回,并输出。

//重难点:形参与实参之间,是否进行了值传递。

 1 #include  <stdlib.h>
 2 #include  <stdio.h>
 3 #define   N   10
 4 double fun(double  x[],double  *av)
 5 { int  i,j;    double  d,s;
 6   s=0;
 7   for(i=0; i<N; i++)  s = s +x[i];
 8 /**********found**********/
 9   *av=s/N;//把平均值赋给形参
10   d=32767;
11   for(i=0; i<N; i++)
12     if(x[i]<*av && *av - x[i]<=d){
13 /**********found**********/
14       d=*av-x[i];
15       j=x[i];
16      }
17 /**********found**********/
18   return  j;
19 }
20 void main()
21 { int  i;    double  x[N],av,m;
22   for(i=0; i<N; i++){ x[i]=rand()%50; printf("%4.0f ",x[i]);}
23   printf("\n");
24   m=fun(x,&av);//加取地址符之后就可以实现,形参实参值互传。
25   printf("\nThe average is: %f\n",av);
26   printf("m=%5.1f ",m);
27   printf("\n");
28 }

//函数fun函数的功能是:根据整型形参n,计算如下公式的值。A1=1,A2=1/(1+A1),An=1/(1+A(n-1))。

//重难点:注意函数返回值类型。

 1 #include  <stdlib.h>
 2 #include  <conio.h>
 3 #include  <stdio.h>
 4 /*************found**************/
 5 double fun(int *n)//注意这里函数返回值类型
 6 { double A=1;int i;
 7 /*************found**************/
 8   for(i=2;i<n+1;i++)
 9      A=1.0/(1+A);
10   return A;
11 }
12 void main()
13 { int n;
14   system("CLS");//清屏
15   printf("\nPlease enter n: ");
16   scanf("%d",&n);
17   printf("A%d=%lf\n",n,fun(n));
18 }

//在程序中,定义了N*N的二维数组,并在主函数中自动赋值,编写函数fun功能是使数组右上半角元素中的值乘以m。

//重难点:对二维数组数据进行操作。对文件进行操作。

 1 #include <conio.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <string.h>
 5 #define  N  5
 6 void fun(int a[][N], int m)
 7 {
 8     int i,j;
 9     for (i = 0; i < N; i++)
10     {
11         for (j = i; j < N; j++)
12         {
13             a[i][j] = a[i][j] * m;
14         }
15     }
16 }
17 void main()
18 {
19   int a[N][N],m, i, j;
20   FILE *out;
21   printf("*****The array*****\n");
22   for(i=0;i<N;i++)
23         { for(j=0;j<N;j++)
24             {a[i][j]=rand()%20;
25              printf("%4d", a[i][j]);
26             }
27         printf("\n");
28         }
29   m=rand()%4;
30   printf("m=%4d\n",m);
31   fun(a,m);//这里传递的是a(为数组首地址,所以形参值会同步到实参中。)
32   printf("THE RESULT\n");
33   for(i=0;i<N;i++)
34      { for(j=0;j<N;j++)
35           printf("%4d",a[i][j]);
36        printf("\n");
37      }
38   /******************************/
39   out=fopen("out.dat","w");
40   for(i=0;i<N;i++)
41         for(j=0;j<N;j++)
42             a[i][j]=i*j;
43   fun(a,8);
44   for(i=0;i<N;i++)
45   {     for(j=0;j<N;j++)
46             fprintf(out,"%4d",a[i][j]);
47         fprintf(out,"\n");
48   }
49   fclose(out);
50   /******************************/
51 }

原文地址:https://www.cnblogs.com/ming-4/p/10279610.html

时间: 2024-08-10 17:08:39

计算机二级-C语言-对二维数组数据进行处理。对文件进行数据输入。形参与实参。的相关文章

c语言中如何通过二级指针来操作二维数组

通过二级指针去访问二维数组需要先给二级指针分配等同于二维数组行数的一维数组指针,然后把二维数组的每行首地址赋值给对应位置的一维指针上.之后就可以通过二维指针直接访问了. 参考代码如下,可以看具体注释辅助理解. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include <stdio.h>//输入输出头文件. #include <stdlib.h>//本程序需要用到malloc/free函数,引

C语言动态分配二维数组内存

C语言内存管理主要包括malloc().remalloc().free()三个函数. malloc原型 extern void *malloc(unsigned int num_bytes); m行n列的 二维数组的分配,主要有三种方法: 一.分配一个长度为m的二级指针,指针的指向的内容分别指向一个长度为n的一位数组 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<math.h>

C语言之二维数组

二维数组及其指针 1 ) 在了解二维数组之前,我们先来了解一维数组及其指针 我们知道,一维数组中:数组名代表-->数组首元素的首地址    (千万不要认为是数组的首地址(&a),绝对不是) 在内存中,该代码的表现形式如下图:</span> #include<stdio.h>   {         int a[4];         int *p  = a;  //表明该指针指向了数组的首元素地址,当然也可以写为 int *p = &a[0];        

C语言 memcpy二维数组的复制

今天在实现二维数组的复制功能时,竟然出现了好多问题,还是太不小心了. 我们知道,平时进行矩阵复制,无非是二重循环进行赋值操作,所以今天想改用利用memcpy进行复制操作,当然一维数组的复制在上一篇文章已经练习过了 需要注意的问题是: 复制的本质是利用:行+变量字节数*列  这种表达,所以目标数组的行数一定是固定的 刚开始想到项目中行数是未知的,默认为空,结果程序逻辑问题,不停的溢出,所以要小心 #include <stdio.h> void print(int *data,size_t m,s

【学习笔记】【C语言】二维数组

1. 什么是二维数组 一个数组能表示一个班人的年龄,如果想表示很多班呢? 什么是二维数组?int ages[3][10]; 三个班,每个班10个人 相当于3行10列 相当于装着3个一维数组 二维数组是一个特殊的一维数组:它的元素是一维数组.例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素 2.二维数组的定义 二维数组定义的一般形式是:     类型说明符 数组名[常量表达式1][常量表达式2] 其中常量表达式1表示第一维下标的

【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if

【C语言】二维数组做形参

二维数组有两种形式: ①在栈上: int a[4][4] = {...}; ②在堆堆上: int ** a = new int *[4]; for(int i = 0; i < 4; i++) a[i] = new int[4]; 这两种情况下,二维数组做形参的传参方式是不一样的. ①在栈上时 void fun(int * a, int rownum, int colmunnum)   //形参传递按照一维指针 { ... a[r * colmunnum + c] = ...;     //根据

C#语言之二维数组

内容: 二维数组:一维数组----豆角二维数组----表格 定义:一维数组:数据类型[] 数组变量名 = new 数据类型[数组长度];数据类型[] 数组变量名 = new 数据类型[数组长度]{1,2,3....}; 二维数组:数据类型[,] 数组变量名 = new 数据类型[行数,列数];int[,] a = new int[3,4]; 赋值: a[行下标,列下标] = 值 下标都是从0开始的取值: a[行下标,列下标] 锯齿数据,数组的数组.定义:第一步:定义大数组数据类型[][] a =

C语言+二维数组实现扫雷游戏(贴过来后无缩进尽请谅解,工程完成度:70%)

#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 10 #define L 10 //打印随机雷的位置,测试代码方便看雷 void sl_print(constint a[L]) { int i=0; printf("地雷的随机位置为:"); for(i=0;i<L;i++) { printf("%02d ",a[i]); } printf(