首页 > 其他分享 >实验4

实验4

时间:2024-11-10 17:22:08浏览次数:1  
标签:10 int void printf 实验 output input

源代码1:

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

截图1:

 

问题1:

一维数组中x是连续存放的;x对应的值和&x[0]是一样的

问题2:在内存中是按行连续存放的;x与x[0]是一样的,但x[0][0]不同;相差的值是一行元素占用的字节数

源代码2:

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

 

截图2:

 

问题:形参和实参都是整型

input的作用是输入一维数组;compute的作用是计算去掉最大值和最小值后一组数的平均数

 

 

源代码3:

 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 vlue:"),scanf("%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 void output(int x[][N],int n){
21     int i,j;
22     
23     for(i=0;i<n;++i){
24         for(j=0;j<n;++j)
25             printf("%d",x[i][j]);
26         printf("\n");
27     }
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 }

截图3:

 

问题:形参和实参都是整型

二维的不能省略;init的作用是确定数组的大小;output的作用是让数组的每个元素都赋值成value

源代码4:

 1 #include <stdio.h>
 2 #define N 100
 3 
 4 
 5 double median(int x[],int n);
 6 void input(int x[],int n);
 7 
 8 int main() {
 9     int x[N];
10     int n;
11     double ans;
12 
13     while(printf("Enter n: "), scanf("%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 
23 void input(int x[],int n){
24     int i;
25     for ( i=0;i<n;i++){
26         scanf("%d",&x[i]);
27     }
28 }
29 
30 double median(int x[],int n){
31     int i,j;
32     for( i=0;i<n-1;i++){
33         for( j =0;j<n-i-1;j++){
34             if(x[j]>x[j+1]){
35                 int temp=x[j];
36                 x[j]=x[j+1];
37                 x[j+1]=temp;
38                 
39             }
40         }
41     }
42     if(n%2==1){
43         double a=x[n/2];
44         return a;
45     }
46     else{
47         double b=(x[n/2-1]+x[n/2])/2.0;
48         return b;
49     }
50 }

截图4:

 

源代码5:

 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("%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 //功能: 输入一个n*n的矩阵x
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("%d",&x[i][j]);
34     }
35 }
36 
37 //函数定义
38 //功能:输出一个n*n的矩阵x 
39 void output(int x[][N],int n){
40     int i,j;
41     
42     for(i=0;i<n;++i){
43         for (j=0;j<n;++j)
44             printf("%4d",x[i][j]);
45             
46         printf("\n");
47     }
48 }
49 
50 //函数定义
51 //功能:把一个n*n的矩阵x,每一列向右移,最右边被移出去的一列绕回左边
52 
53 void rotate_to_right(int x[][N],int n){
54     int i,j,temp;
55     for(j=0;j<n;j++){
56         temp =x[j][n-1];
57         for (i=n-1;i>0;i--){
58             x[j][i]=x[j][i-1];
59         }
60         x[j][0]=temp;
61     }
62     
63 }

截图5:

 

源代码6:

 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("%d",&x)!=EOF){
10         dec_to_n(x,2);  //函数调用:把x转换成二进制输出 
11         dec_to_n(x,8);  //函数调用:把x转换成八进制输出 
12         dec_to_n(x,16);  //函数调用:把x转换成十六进制输出 
13         
14         printf("\n");
15     }
16     
17     return 0;
18     
19 } 
20 //函数定义
21 //功能:把十进制数x转换成n进制,打印输出
22  
23 void dec_to_n(int x,int n){
24     int remainder[50];
25     int t=0;
26     while(x!=0){
27         remainder[t]=x%n;
28         x/=n;
29         t++;
30     }
31     int i;
32     for(i=t-1;i>=0;i--){
33         if(remainder[i]>=10&&n==16){
34             printf("%c",remainder[i]-10+'A');
35         }
36         else{
37             printf("%d",remainder[i]);
38         }
39     }
40     printf("\n");
41     
42 }

 

截图6:

 

源代码7:

 1 #include <stdio.h>
 2 #define N 100
 3 
 4 //函数声明 
 5 void input(int x[][N],int n);
 6 void output(int x[][N],int n);
 7 int is_magic(int x[][N],int n);
 8 
 9 
10 int main(){
11     int x[N][N];
12     int n;
13     while(printf("输入n: "),scanf("%d",&n)!=EOF){
14         printf("输入方阵:\n");
15         input(x,n);
16         printf("输出方阵:\n");
17         output(x,n);
18         if(is_magic(x,n))
19            printf("是魔方矩阵\n\n");
20         else
21           printf("不是魔方矩阵\n\n");
22     }
23     return 0;
24 }
25 
26 //函数定义
27 //功能:输入一个n*n的矩阵x 
28 void input(int x[][N],int n){
29     int i,j;
30     for(i=0;i<n;i++){
31         for(j=0;j<n;j++)
32            scanf("%d",&x[i][j]);
33     }
34 }
35 
36 //功能:输出一个n*n的矩阵x 
37 void output(int x[][N],int n){
38     int i,j;
39     for(i=0;i<n;i++){
40         for(j=0;j<n;j++)
41           printf("%4d",x[i][j]);
42         printf("\n");
43     }
44 }
45 
46 //功能:判断一个n阶方阵是否为魔方矩阵,如果是,返回1,否则返回0 
47 int is_magic(int x[][N],int n){
48     int i,j,sum_magic=0,sum_hang=0,sum_lie=0,sum_dui1=0,sum_dui2=0;
49         for(j=0;j<n;j++){
50         sum_magic+=x[0][j];
51         }
52         for(i=1;i<n;i++){
53             for(j=0;j<n;j++){
54                  sum_hang+=x[i][j];
55             }
56                   if(sum_hang!=sum_magic){
57                        return 0;
58                   }
59                 sum_hang=0  ;
60         }
61         for(j=0;j<n;j++){
62             for(i=0;i<n;i++){
63                 sum_lie+=x[i][j];
64             }
65             if(sum_lie!=sum_magic){
66                   return 0;
67             }
68              sum_lie=0;
69         }
70         for(i=0;i<n;i++){
71             sum_dui1+=x[i][i];
72         }
73         if(sum_dui1!=sum_magic){
74               return 0;
75         }
76 
77         for(i=0;i<n;i++){
78             sum_dui2+=x[i][n-1-i];
79         }
80         if(sum_dui2!=sum_magic){
81              return 0;
82         }
83        else{
84                return 1;
85        }
86 
87     }

 

 

截图7:

 

标签:10,int,void,printf,实验,output,input
From: https://www.cnblogs.com/yql2024/p/18524483

相关文章

  • 实验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......
  • 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//输出每个元素的地址、值......
  • 实验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//输出每个元素的地址、......
  • 实验4
    任务11#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)12prin......
  • Mit6.S081-实验环境搭建
    Mit6.S081-实验环境搭建注:大家每次做一些操作的时候觉得不太保险就先把虚拟机克隆一份前言qemu(quickemulator):这是一个模拟硬件环境的软件,利用它可以运行我们编译好的操作系统。准备一个Linux系统,安装qemu以及其他依赖,通过git克隆下github的xv6源码,利用gcc编译源码得到......