南京邮电大学C语言实验报告四

article/2025/3/18 13:06:28

实验四:一维与二维数组实验

实验题目1【见实验教材实验五的题目1】编写程序exp5_1.c,在主函数中定义一维数组int array[10],自定义以下函数:输入数组元素,输出数组元素、求数组元素平均值、输出数组元素最大值、输出数组元素最小值、查找某数值元素是否存在(若存在,请输出下标)、给数组元素排序,要求在主函数中对各子函数进行调用和测试。

实验解答: 

  • 写出完整的源程序代码并做适当注释:
#include<stdio.h>
#define N 10
/*数组输出函数*/
void print(int a[], int n)
{int i;for(i=0;i<n;i++)printf("%5d",a[i]);printf("\n");
}/*数组输入函数*/
void input(int a[], int n)
{int i;for(i=0;i<n;i++)scanf("%d",&a[i]);
}//求数组的平均数
double aveage(int a[],int n)
{int i;double aveage,sum=0;for (i=0;i<n;i++)sum+=a[i];aveage=sum/n;printf("aveage=%f",aveage);return 0;
}//输出数组元素最大值
int max(int a[],int n)
{int i,max;max=a[0];for(i=1;i<n;i++){if(a[i]>max)max=a[i];}return max;
}//输出数组元素最小值
int min(int a[],int n)
{int i,min;min=a[0];for(i=1;i<n;i++)if(a[i]<min)min=a[i];return min;
}
//查找指定下标元素
int find_farr(int a[], int n, int x, int farr[])
{int i;int b=0;for(i=b;i<n;i++)if(x==a[i])farr[b++]=i;return b;
} //数组排序
void BubbleSort(int a[],int n)
{int i,j,temp;for (i=0;i<n-1;i++)for(j=n-1;j>i;j--)if(a[j]<a[j-1]){temp=a[j-1];a[j-1]=a[j];a[j]=temp;}
}
int main()
{int array[N],farr[N],i=0,n,x,c,choice,M,m,idx=0;do{printf("输入元素个数(1<=n<=%d):",N);scanf("%d",&n);}while(n<1||n>N);printf("please input %d elements:",n);input (array,n);printf("The array is :\n");print(array,n);printf("1 求数组平均数\n");printf("2 求数组最大值\n");printf("3 求数组最小值\n");printf("4 数组查找\n");printf("5 数组排序\n");printf("Please input your choice:");scanf("%d",&choice);switch(choice){case 1:aveage( array,n);break;case 2:M=max(array,n);printf("max element:%d\n",M);break;case 3:m=min(array,n);printf("min element:%d\n",m);break;case 4:printf("Please input x be searched:");scanf("%d",&x);c=find_farr(array, n, x, farr);if(c==0){	printf("Not found %d\n", idx);}else{	printf("Found %d in arr at the following indexs:\n",c);print(farr, c);}break;case 5:BubbleSort(array,n);print(array,n);break;default:printf("Input error!");}return 0;
}

实验题目(2)【见实验教材实验五的题目2】编写程序exp5_2.c,定义一个3*3的矩阵,要求实现读入矩阵、输出矩阵、矩阵转置、输出矩阵主对角线元素之和,所有功能均采用子函数实现。

实验解答:

①源程序exp5_2.c的源代码如下:

#include <stdio.h>
#define N 10
int input (int a[][N],int n)
{int i,j;for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&a[i][j]);return (a[i][j]);
}
int print(int a[] [N],int n)
{int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%5d",a[i][j]);printf("\n");}return 0;
}
int transposition(int b[][N],int n)
{int i,j,array_b[N][N],array_a[N][N];for(i=0;i<n;i++){for(j=0;j<n;j++)array_b[i][j]=array_a[j][i];printf("\n");}return array_b[i][j];
}
int sum_diag(int a[][N],int n)
{int s=0,i;for(i=0;i<n;i++)s+=a[i][i];return s;
}
int main()
{int n,choice,s,i,j;int array_a[N][N],array_b[N][N];printf("Please input n(1<=n<=10):");scanf("%d",&n);printf("The array is:\n");input(array_a,n);print(array_a,n);printf(" 1 transposition\n");printf("2  sum_diag\n");scanf("%d",&choice);switch(choice){case 1:transposition(array_b,n);for(i=0;i<n;i++){for(j=0;j<n;j++)array_b[i][j]=array_a[j][i];printf("\n");}print(array_b,n);break;case 2:s=sum_diag(array_a,n);printf("%d",s);break;default:printf("Input error!");}return 0;
}

实验题目(3)【见实验教材实验五的题目4】:编写程序exp5_4.c,输出一个N阶螺旋方阵。如图1所示:

#include <stdio.h>
# define N 100
int main(){int n,r,c,i,x=1;int a[100][100];printf("请输入一个整数\n");scanf("%d",&n);r=0;c=n-1;do{for(i=(n-1-c);i<=c;i++)a[r][i]=x++;for(i=r+1;i<=(n-1-r);i++)a[i][c]=x++;for(i=c-1;i>=(n-1-c);i--)a[n-1-r][i]=x++;r++;for(i=(n-1-r);i>=r;i--)            
a[i][n-1-c]=x++;c--;} while(x<=(n*n));for(i=0;i<n;i++){for(r=0;r<n;r++)printf("%5d",a[i][r]);printf("\n");}return 0;}

实验题目(4)【见实验教材实验五的题目6】编写程序exp5_6.c,请判断花瓶是谁打碎的。教师花瓶碎了,班级只有四个小同学,老师询问小同学,已知是其中1人打碎的,还知道4人中每个人要么是诚实的,要么总是说谎的。

小同学回答老师的问题是:

甲说:“乙没有打碎,是丁打碎的。”

乙说:“我没有打碎,是丙打碎的。”

丙说:“甲没有打碎,是乙打碎的。”

丁说:“我没有打碎。”

根据四人回答判断谁打碎了花瓶。

实验解答:

①源程序exp5_6.c的源代码如下:

#include <stdio.h>
int main()
{int a[4];int i,j;for (i=0;i<4;i++){for (j=0;j<4;j++)if(j==i)a[j]=1;elsea[j]=0;if(a[3]+a[1]==1&& a[2]+a[1]==1&&a[0]+a[1]==1){printf("打碎花瓶的是:");for(j=0;j<4;j++)if(a[j])printf("%d\n",j);printf("0是甲\n 1是乙\n 2是丙\n 3是丁\n");}}return 0;
}

 

②运行结果是:

打碎花瓶的是:1

0是甲

 1是乙

 2是丙

 3是丁


http://chatgpt.dhexx.cn/article/Whjat6l0.shtml

相关文章

(C语言)实验2 用C语言编写程序

【实验目的】 1、熟悉顺序、分支和循环三种基本的控制结构。 2、使用C语言编制简单的顺序、分支和循环三种基本的控制结构的程序。 3、尝试用C 语言编写程序解决实际问题。 【实验要求】 1、实验共4题&#xff0c;每题25分&#xff0c;共100分&#xff1b; 2、实验需在截至日…

【C语言趣味实验】

C语言趣味实验--电脑关机&&猜数字 前言一、如何实现强制关机&#xff1f;shutdown用法 二、优化改进1&#xff1a;通过输入的字符串来判断是否关机改进2&#xff1a;通过猜数字是否正确来判断是否关机 总结 前言 亲爱的朋友们大家好&#xff0c;正如题目所见&#xff…

南京邮电大学C语言实验报告二

实验二&#xff1a;选择与循环结构编程 实验题目&#xff08;1&#xff09;【见实验教材实验二的题目6】&#xff1a;编程序exp2_6.c&#xff0c;读入3个double型变量a,b,c的值&#xff0c;用if语句判断它们能否构成三角形&#xff0c;如果能构成三角形又是构成的何种三角形&a…

C语言实验四

目录 1.国王的麦子 2. 求完数。 3.打印九九乘法表 4&#xff0e;求1!2!3!…20!&#xff1b; 5.&#xff08;1&#xff09;输入一行字符&#xff0c;分别统计出其中的英文字母、空格、数字和其它字符的个数。 &#xff08;2&#xff09;在得到正确结果后&#xff0c;请修…

c语言的实验,c语言 实验1

实验结论 Part 1 首次运行Part 1的几个实验内容时会产生错误&#xff0c;原因如下 有时忘记在主函数中的每行末尾加分号 return 0 时空格错误导致程序运行失败 # include int product (int,int); int main (void) { int x,y,s; scanf("%d%d",&x,&y); sprodu…

大一 C语言 实验1

《程序设计基础》上机实验报告 学号&#xff1a;201420224912 姓名&#xff1a;许培鑫 班级&#xff1a;计算机149 日期&#xff1a;2015-5-7 指导教师&#xff1a;成筠 成绩&#xff1a; ----------------------------------------------------------------- 实验六…

C语言 实验五

复制之前给个赞&#xff0c;好吗(〃▽〃) 题目一 7-1 参考书 (100 分) 某次考试是开卷考试。老师规定&#xff0c;纸质的资料&#xff08;以下统一称为参考书&#xff09;可以随便带&#xff0c;或者说只要你背得动想带多少本参考书都行。于是同学们就开始准备参考书了。就在…

C语言程序设计实验报告——实验一

C语言程序设计实验报告——实验一 实验一 简单C程序调试&#xff08;一&#xff09;第一个C程序1、实验题目&#xff1a;2、实验环境&#xff1a;3、实验步骤及过程&#xff1a;4、实验结果&#xff08;~~猜都猜得出来~~ &#xff09; &#xff08;二&#xff09;第二个C程序1、…

C语言实验报告(通用)

​​​​​​ 设计目的 公交线路基本信息的录入。1、线路信息的录入、修改等操作。2、要求系统要以菜单方式进行工作。3、公交线路包括&#xff1a;公交车号、起始发出车时间与末班车时间、票价等信息。 1.2 对知识点的基本介绍或者代码举例 正文&#xff0c;中文&#xff1a;宋…

RSA加密算法的数学原理

文章目录 RSA数学原理获取两个不相等的质数pq把p和q相乘&#xff0c;得到n计算出小于n的自然数中&#xff0c;有多少数与n互质&#xff08;欧拉函数&#xff09;在1和φ(n)之间&#xff0c;选取一个随机质数e求e和φ(n)的模反元素d&#xff08;裴蜀定理、扩展欧几里得算法&…

常见的加密算法原理与实现:RSA加密

系列四&#xff1a;RSA加密 一、基本背景二、算法原理2.1、生成公钥和私钥2.2、加密消息2.3、解密消息 三、Python实现RSA算法3.1、基于pycryptodome库实现RSA加解密3.2、基于rsa库实现RSA加解密 四、参考文献 一、基本背景 RSA算法是是由罗纳德李维斯特&#xff08;Ron Rives…

RSA加密和解密原理及过程(非对称加密)

非对称加密 用公钥来加密数据发送出去&#xff0c;接收方收到数据后用私钥解密数据。公钥是所有人都知道的&#xff0c;私钥只有接收方才知道。 加密解密基本流程 注意&#xff1a;公钥私钥中的33是同一个数字&#xff0c;是公开的&#xff0c;只有私钥的3是只有接收方才知道…

关于RSA加密解密原理

前言&#xff1a; 随着我们的学习的不断深入&#xff0c;信息的安全也愈加重要&#xff0c;我们发布的代码中可能含有我们的私密信息&#xff0c;比如对接支付宝沙箱api&#xff0c;下载一些专业软件时就需要我们输入公钥和私钥以此来验证我们的身份信息&#xff0c;就相当于用…

RSA加密解密原理及工具类

1. 什么是RSA RSA算法是现今使用最广泛的公钥密码算法&#xff0c;也是号称地球上最安全的加密算法。 RSA是被研究得最广泛的公钥算法&#xff0c;从提出到现在已近三十年&#xff0c;经历了各种攻击的考验&#xff0c;逐渐为人们接受&#xff0c;普遍认为是目前最优秀的公钥…

RSA 非对称加密原理(小白也能看懂哦~)

RSA 加密原理 步骤说明描述备注1找出质数P 、Q-2计算公共模数N P * Q-3欧拉函数φ(N) (P-1)(Q-1)-4计算公钥E1 < E < φ(N)E的取值必须是整数 E 和 φ(N) 必须是互质数5计算私钥DE * D % φ(N) 1-6加密C &#xff1d; M E mod NC&#xff1a;密文 M&#xff1a;明文7…

RSA加密的原理——为什么被公钥加密的可以被私钥解密?

RSA加密的原理——为什么被公钥加密的可以被私钥解密&#xff1f; 目录 一&#xff0c;RSA 数学理论基础 二&#xff0c;RSA实现原理 三&#xff0c;RSA加密的过程 四&#xff0c;参考文献 引言 在密码学最开始&#xff0c;都是使用的普通加密模式 A 用加密规则加密了字符串m…

关于RSA加密原理

什么是RSA RSA算法是现今使用最广泛的公钥密码算法&#xff0c;也是号称地球上最安全的加密算法。在了解RSA算法之前&#xff0c;先熟悉下几个术语 根据密钥的使用方法&#xff0c;可以将密码分为对称密码和公钥密码 对称密码&#xff1a;加密和解密使用同一种密钥的方式 公钥密…

RSA加密原理与RSA公钥加密系统、数字签名

通过公钥加密系统&#xff0c;可以对传输于两个通信单位之间的消息进行加密&#xff0c;即使窃听者窃听到加密之后的消息&#xff0c;也不能对其破译。 1、RSA公钥加密原理 1.1 几个核心概念 公钥P与公钥函数P()密钥S与密钥函数S() 可以简单理解&#xff0c;一个公钥对应一个…

RSA加密解密原理

引言&#xff1a; CTF密码学类题目中&#xff0c;RSA加密可谓是很重要且常见的加密类型&#xff0c;今天就总结下 RSA加密的原理及解密方法。 文章目录 RSA算法简介:1、什么是非对称加密算法&#xff1a;2、RSA 加密原理&#xff1a;3、RSA加密算法过程详解&#xff1a…

# RSA加密原理和一些知识笔记

RSA加密原理和一些知识笔记 原文地址&#xff1a; 01&#xff1a;RSA 加密和原理 .pem .csr .crt .der .p12文件的区别 base64 (https://www.cnblogs.com/zyzmlc/p/12875277.html) 写得不错&#xff0c;这应该是他的学习笔记&#xff0c;我做了一些错误修正 复习&#xff1a;…