首页 > 编程语言 >实验4 c语言数组应用编程

实验4 c语言数组应用编程

时间:2024-11-10 17:23:33浏览次数:1  
标签:int void 编程 ++ 实验 数组 printf input ans

task1:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define N 4
 4 #define M 2
 5 
 6 
 7 void test1(){
 8     int x[N]={1,9,8,4};
 9     int i;
10 
11     printf("sizeof(x)=%d\n",sizeof(x));
12 
13     for(i=0;i<N;++i)
14         printf("%p:%d\n",&x[i],x[i]);
15 
16     printf("x=%p\n",x);
17 
18 }
19 
20 void test2(){
21     int x[M][N]={{1,9,8,4},{2.0,4.9}};
22     int i,j;
23 
24     printf("sizeof(x)=%d\n",sizeof(x));
25 
26     for(i=0;i<M;++i)
27         for(j=0;j<N;++j)
28             printf("%p;%d\n",&x[i][j],x[i][j]);
29     printf("\n");
30     printf("x=%p\n",x);
31     printf("x[0]=%p\n",x[0]);
32     printf("x[1]=%p\n",x[1]);
33     printf("\n");
34 
35 }
36 
37 int main(){
38     printf("测试1:int型一维数组\n");
39     test1();
40 
41     printf("测试1:int型二维数组\n");
42     test2();
43 
44     system("pause");
45     return 0;
46 }

问题1:是连续存放的     x对应的是数组中第一个元素的地址,&x[0]是指第一个元素的值

问题2:是按行连续存放的   三者的值并不相同  x[0] x[1]相差一行元素所占的字节数   意义是方便我们找到对应元素的地址

 

task2:

 

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define N 100
 4 
 5 void input(int x[],int n);
 6 double compute(int x[],int n);
 7 
 8 int main(){
 9     int x[N];
10     int n,i;
11     double ans;
12 
13 
14     while(printf("Enter n:"),scanf("%d",&n)!=EOF){
15         input(x,n);
16         ans=compute(x,n);
17         printf("ans=%.2f\n\n",ans);
18 
19 
20     }
21     system("pause");
22     return 0;
23 }
24 
25 
26 void input(int x[],int n){
27     int i;
28     for(i=0;i<n;++i)
29         scanf("%d",&x[i]);
30 
31 }
32 
33 
34 double compute(int x[],int n){
35     int i,high,low;
36     double ans;
37 
38     high=low=x[0];
39     ans=0;
40 
41     for(i=0;i<n;++i){
42         ans+=x[i];
43 
44         if(x[i]>high)
45             high=x[i];
46         else if(x[i]<low)
47             low=x[i];
48     }
49 
50     ans=(ans-high-low)/(n-2);
51 
52     return ans;
53 }

问题1 形参书写形式是数据类型+数组名  实参书写形式是数组名

问题2 input 功能是键盘输入数组元素  compute功能是计算数组中除去最大最小值后的剩余元素的均值

 

task3:

 1 #include <stdio.h>
 2 #define N 100
 3 
 4 void output(int x[][N], int n);
 5 void init(int x[][N], int n, int value);
 6 
 7 int main() {
 8     int x[N][N];
 9     int n, value;
10 
11     while (printf("Enter n and value:"), scanf_s("%d%d", &n, &value) != EOF) {
12         init(x, n, value);
13         output(x, n);
14         printf("\n");
15     
16     }
17     return 0;
18 
19 }
20 
21 void output(int x[][N], int n) {
22     int i, j;
23 
24     for (i = 0;i < n;++i) {
25         for (j = 0;j < n;++j)
26             printf("%d", x[i][j]);
27         printf("\n");
28     }
29 }
30 
31 void init(int x[][N], int n,int value) {
32     int i, j;
33 
34     for (i = 0;i < n;++i)
35         for (j = 0;j < n;++j)
36             x[i][j] = value;
37 
38 }

 

 

 

问题1:形参书写形式:数据类型+数组名  实参书写类型:数组名

问题2:第二维

问题3:output:打印输出n*n的数组  init:为数组的中的每个元素都附上相同的值

 

task4:

 1 #include<stdio.h>
 2 #define N 100
 3 
 4 void input(int x[N], int n);
 5 double median(int x[N], int n);
 6 
 7 
 8 int main(){
 9     int x[N];
10     int n;
11     double ans;
12 
13     while (printf("Enter n:"), scanf_s("%d", &n) != EOF) {
14         input(x, n);
15         ans = median(x, n);
16         printf("ans=%g\n\n", ans);
17 
18     }
19     return 0;
20 }
21 
22 void input(int x[N], int n) {
23     int i;
24     for (i = 0;i < n;++i)
25         scanf_s("%d", &x[i]);
26 
27 }
28 
29 double median(int x[N], int n) {
30     int i, j;
31     int t;
32     double ans;
33     for(i=0;i<n-1;++i)
34         for(j=0;j<n-1-i;++j)
35             if (x[j] > x[j + 1]) {
36                 t = x[j + 1];
37                 x[j + 1] = x[j];
38                 x[j] = t;
39             }
40     if (n % 2 == 0)
41         ans = (x[n / 2 - 1]*1.0 + x[n / 2]*1.0) / 2;
42     else
43         ans = x[n / 2];
44 
45     return ans;
46 }

 task5:

 1 #include<stdio.h>
 2 #define N 100
 3 
 4 void input(int x[][N], int n);
 5 void output(int x[][N], int n);
 6 void rotate_to_right(int x[][N], int n);
 7 
 8 int main() {
 9     int x[N][N];
10     int n;
11 
12     printf("Enter n:");
13     scanf_s("%d", &n);
14     input(x, n);
15 
16     printf("原始矩阵:\n");
17     output(x, n);
18 
19     rotate_to_right(x, n);
20 
21     printf("变换后的矩阵:\n");
22     output(x, n);
23 
24     return 0;
25 }
26 
27 void input(int x[][N], int n) {
28     int i, j;
29 
30     for (i = 0;i < n;++i) {
31         for (j = 0;j < n;++j)
32             scanf_s("%d", &x[i][j]);
33     }
34 
35 }
36 
37 void output(int x[][N], int n) {
38     int i, j;
39 
40     for (i = 0;i < n;++i) {
41         for (j = 0;j < n;++j)
42             printf("%d", x[i][j]);
43 
44         printf("\n");
45     }
46         
47 }
48 
49 void rotate_to_right(int x[][N], int n){
50     int i,j;
51     int t;
52     
53     for (i = 0;i < n;++i) {
54         t = x[i][n - 1];
55         for (j = n - 1;j >= 1;--j) {
56             x[i][j] = x[i][j - 1];
57 
58         }
59         x[i][0] = t;
60     }
61 
62 }

task6:

 

 1 #include<stdio.h>
 2 #define N 100
 3 
 4 void dec_to_n(int x, int n);
 5 
 6 int main() {
 7     int x;
 8 
 9     while (printf("输入十进制整数:"), scanf_s("%d", &x) != EOF) {
10         dec_to_n(x, 2);
11         dec_to_n(x, 8);
12         dec_to_n(x, 16);
13 
14         printf("\n");
15     }  
16     return 0;
17 }
18 
19 void dec_to_n(int x, int n) {
20     char t[N];
21     int i = 0, j;
22     while (x != 0) {
23         if (x % n < 10)
24             t[i] = x % n + '0';
25         else
26             t[i] = x % n - 10 + 'A';
27 
28         x = x / n;
29         i += 1;
30     }
31     for (j = i - 1;j >= 0;--j)
32         printf("%c", t[j]);
33           
34     printf("\n");
35 }

 task7:

 1 #include<stdio.h>
 2 #define N 100
 3 
 4 void input(int x[][N], int n);
 5 void output(int x[][N], int n);
 6 
 7 
 8 int main() {
 9     int x[N][N];
10     int n;
11 
12     while (printf("输入n:"), scanf_s("%d", &n) != EOF) {
13         printf("输入方阵:\n");
14         input(x, n);
15 
16         printf("输出方阵:\n");
17         output(x, n);
18 
19         if (is_magic(x, n))
20             printf("是魔方矩阵\n\n");
21         else
22             printf("不是魔方矩阵\n\n");
23 
24     }
25     return 0;
26 }
27 
28 void input(int x[][N], int n) {
29     int i, j;
30 
31     for (i = 0;i < n;++i) {
32         for (j = 0;j < n;++j)
33             scanf_s("%4d", &x[i][j]);
34 
35     }
36 }
37 
38 void output(int x[][N], int n) {
39     int i, j;
40 
41     for (i = 0;i < n;++i) {
42         for (j = 0;j < n;++j)
43             printf("%4d", x[i][j]);
44 
45         printf("\n");
46     }
47     
48 }
49 
50 int is_magic(int x[][N], int n) {
51     int sum = 0,sum1 = 0, sum2 = 0, sum3 = 0;
52     int m,i,j;
53     for (m = 0;m < n;++m)
54         sum += x[0][m];
55     for (i = 0;i < n;++i)
56         for (j = 0;j < n;++j) {
57             sum1 += x[i][j];
58         }
59     if (sum1 != sum)
60         return 0;
61             
62     for (i = 0;i < n;++i)
63         for (j = 0;j < n;++j) {
64             sum2 += x[j][i];
65         }
66     if (sum2 != sum)
67         return 0;
68     
69     for (i = 0;i < n;++i) {
70         sum3 += x[i][i];
71     }
72     if (sum3 != sum)
73         return 0;
74 
75     return 1;
76 
77 }

 

标签:int,void,编程,++,实验,数组,printf,input,ans
From: https://www.cnblogs.com/sunhope/p/18525028

相关文章

  • 实验四
    实验1#include<stdio.h>#defineN4#defineM2voidtest1(){intx[N]={1,9,8,4};inti;//输出数组x占用的内存字节数printf("sizeof(x)=%d\n",sizeof(x));//输出每个元素的地址、值for(i=0;i<N;++i)......
  • 实验4
    源代码1:1#include<stdio.h>2#defineN43#defineM245voidtest1(){6intx[N]={1,9,8,4};7inti;89printf("sizeof(x)=%d\n",sizeof(x));1011for(i=0;i<N;++i)12printf("%p:%d......
  • 实验3 类和对象_基础编程2
    任务一:源代码:button.hpp1#pragmaonce23#include<iostream>4#include<string>56usingstd::string;7usingstd::cout;89//按钮类10classButton{11public:12Button(conststring&text);13stringget_label()const......
  • # 20222316 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    一、实验内容1.学习总结1)恶意代码基本概念定义使计算机按照攻击者的意图运行以达到恶意目的的指令集合。指令集合:二进制执行文件,脚本语言代码,宏代码,寄生在文件、启动扇区等的指令流恶意代码目的:技术炫耀/恶作剧,远程控制,窃取私密信息,盗用资源,拒绝服务/......
  • cpp实验3
    任务1:#pragmaonce#include<iostream>#include<string>usingstd::string;usingstd::cout;classButton{public:Button(conststring&text);stringget_label()const;voidclick();private:stringlabel;};Button::Butt......
  • Java的Future机制详解(并发编程)
    Future模式的核心思想是能够让主线程将原来需要同步等待的这段时间用来做其他的事情。(因为可以异步获得执行结果,所以不用一直同步等待去获得执行结果)在Java中,Future 是一个接口,用于表示异步计算的结果。它主要用于处理那些需要一段时间才能完成的任务,并且可以在任务完成......
  • 20222418 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容一、恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,......
  • 20222302 2024-2025-1 《网络与系统攻防技术》实验四实验报告
    1.实验内容1.1恶意代码文件类型标识、脱壳与字符串提取对提供的rada恶意代码样本,进行文件类型识别,脱壳与字符串提取,以获得rada恶意代码的编写作者,具体操作如下:(1)使用文件格式和类型识别工具,给出rada恶意代码样本的文件格式、运行平台和加壳工具;(2)使用超级巡警脱壳机等脱壳软件,对......
  • 实验3
    实验一botton.hpp#pragmaonce#include<iostream>#include<string>usingstd::string;usingstd::cout;classButton{public:Button(conststring&text);stringget_label()const;voidclick();priv......
  • 实验4
    任务11#include<stdio.h>2#defineN43#defineM245voidtest1(){6intx[N]={1,9,8,4};7inti;89//输出数组x占用的内存字节数10printf("sizeof(x)=%d\n",sizeof(x));1112//输出每个元素的地址、值......