C语言日常练习 Day16

server/2024/10/19 2:59:09/

目录

一、求一个3*3的整型矩阵对角线元素之和

二、有一个已经排序好了的数组,要求输入一个数后,按原来排序的规律将它插入数组中

三、输出“魔方阵”,所谓魔方阵是指它的每一行、每一列和对角线之和均相等


一、求一个3*3的整型矩阵对角线元素之和

通过观察上图,我们不难发现,主对角线的数组都是arr[i][i]

代码如下:

#include <stdio.h>int main()
{int arr[3][3]={0};int i,j,sum=0;for(i=0;i<3;i++){for(j=0;j<3;j++){scanf("%d",&arr[i][j]);}} for(i=0;i<3;i++){sum+=arr[i][i];}printf("%d",sum);return 0;
}

 运行结果如下:

二、有一个已经排序好了的数组,要求输入一个数后,按原来排序的规律将它插入数组中

代码如下:

#include<stdio.h>int main()
{int arr[6] = { 1,3,5,7,9};int i,j;for (i = 0;i < 5;i++)printf("%d ", arr[i]);printf("\n");int num,tep1=0,tep2=0;printf("请输入一个数:\n");scanf_s("%d", &num);if (num >= arr[4])//首先判断此数是否大于最后一个数{arr[5] = num;}else {for (i = 0;i < 5;i++){if (arr[i] >= num){tep1 = arr[i];arr[i] = num;for (j = i + 1;j < 6;j++)//插入后此元素之后的数,依次后移一个位置。{tep2 = arr[j];arr[j] = tep1;tep1 = tep2;}break;}}}printf("插入后的序列:\n");for (i = 0;i < 6;i++)printf("%d ", arr[i]);printf("\n\n\n");
}

运行结果如下:

三、输出“魔方阵”,所谓魔方阵是指它的每一行、每一列和对角线之和均相等

解魔方阵问题的方法很多,这里采用如下规则生成魔方阵。

  • 由1开始填数,将1放在第0行的中间位置。

  • 将魔方阵想象成上下、左右相接,每次往左上角走一步,会有下列情况:

    • 左上角超出上方边界,则在最下边相对应的位置填入下一个数字;

    • 左上角超出左边边界,则在最右边相应的位置填入下一个数字;

    • 如果按上述方法找到的位置已填入数据,则在同一列下一行填入下一个数字。

代码如下:

#include<stdio.h>
#include<stdlib.h>void array(int n){int i,j,max,no,num;int *mtrx;if(n%2==0)	//如果n是偶数,则加1变奇数 n+=1;max=n*n;mtrx=(int *)malloc(max);	//为魔方阵分配内存 mtrx[n/2]=1;  //将1存入数组i=0;	//1所在行j=n/2;	//1所在***定从1之后每下一个数的位置,由当前数确定下一个数 for(num=2;num<=max;num++){i=i-1;j=j+1;	//下一个数在当前数的上一行,右一列 if((num-1)%n==0){	//当前数是n的整倍数 i+=2;j-=1;}if(i<0)	//当前数在第0行时i=n-1; if(j>n-1)	//当前数在最后一列j=0;no=i*n+j;	//下一个数在数组中的最终位置 mtrx[no]=num;} //打印 printf("生成的%d魔方阵为:",n);no=0;for(i=0;i<n;i++){printf("\n");for(j=0;j<n;j++){printf("%3d",mtrx[no]);no++;}}free(mtrx);
} 
int main(){int n;printf("请输入n值:"); scanf("%d",&n);array(n);return 0;
}

 运行结果如下:


http://www.ppmy.cn/server/101849.html

相关文章

Linux:Linux环境基础开发工具使用

✨✨✨学习的道路很枯燥&#xff0c;希望我们能并肩走下来! 文章目录 目录 文章目录 前言 一. Linux 软件包管理器 yum 1.1 什么是软件包 1.2 查看软件包 1.3 如何安装软件 1.4 如何卸载软件 二 Linux编辑器-vim使用 ​编辑 2.1 vim的基本概念 2.2 vim正常模式命令集…

串列翼无人机技术详解

串列翼无人机作为一种特殊布局的飞行器&#xff0c;其概念可追溯至早期航空探索时期。随着航空技术的不断进步&#xff0c;尤其是复合材料、先进控制算法及动力系统的革新&#xff0c;串列翼无人机逐渐从理论走向实践。这一设计初衷在于通过前后两组机翼的巧妙布局&#xff0c;…

Apache-JMeter压测工具教程

下载安装 《JMeter官网下载》 下载完成后&#xff0c;找个文件夹进行解压 配置环境变量 JAVA_HOME&#xff08;如果是JAVA8还需要配置CLASSPATH&#xff09;、JMETER_HOME JMETER_HOME修改bin目录下的jmeter.properties文件编码为UTF-8 5.6.3这个版本encoding已经默认为UT…

深入解析三路快排:一种高效的排序算法

在数据结构和算法的世界中&#xff0c;快排&#xff08;Quick Sort&#xff09;无疑是最受欢迎的排序算法之一。今天&#xff0c;探讨一种优化的快排变体——三路快排&#xff08;3-Way Quick Sort&#xff09;&#xff0c;它在处理具有重复元素的数组时展现出了令人惊叹的效率…

web技术1——jdk目录结构(重要),tomcat服务器

jdk文件夹结构(重要) bin目录&#xff1a; 里面都是.exe可执行文件。java&#xff0c;javac&#xff0c;javadoc&#xff0c;java编译工具&#xff0c;java监测工具等.exe文件都在这里。 include目录: 底层有用c写的东西&#xff0c;这里面包含很多c语言的文件&#xff0c…

qt一个控件放在另外一个控件或窗体的前面或者后面

1.通过stackOver和stackUnder去控制。 // QWidget window; // window.setGeometry(100, 100, 300, 200);// QLabel *label new QLabel("在前的控件", &window); // label->setGeometry(60, 40, 180, 60);// QPushButton *button new QPushB…

C#的前沿技术有哪些?

C#作为.NET平台的核心语言&#xff0c;其前沿技术主要围绕.NET生态系统的扩展和更新展开。了解C#的前沿技术对于开发者来说至关重要&#xff0c;因为它们代表了该语言和平台的最新发展方向和趋势。目前&#xff0c;C#的前沿技术主要集中在以下几个方面&#xff1a; 1. NET 6: …

监控设备上云的方式有哪些?

监控设备上云主要有以下几种方式&#xff0c;各方式的区别如下&#xff1a; - 直接写入云存储&#xff1a; - 方式&#xff1a;监控设备将视频流等数据直接写入云服务提供商的云存储中&#xff0c;如腾讯云的对象存储&#xff08;COS&#xff09;、阿里云的对象存储&#xff08…