新手试炼:C语言实现加密版2-4阶行列式运算!

新手试炼:C语言实现2-4阶行列式运算!**

本小程序用来实现线性代数中的2-4阶行列式计算,根据掌握的数学知识,充分利用C语言数组运算的方式来进行新手试炼。注意:只适用于新手试炼!!
一、运用DEV C++软件平台进行工程创建
新手试炼:C语言实现加密版2-4阶行列式运算!_第1张图片新手试炼:C语言实现加密版2-4阶行列式运算!_第2张图片
二、算法的构思
利用行列式全部展开可进行计算的规则,我们知道,对于二阶行列式D = a11a22 - a12a21,三阶、四阶行列式,以此类推,不再赘述,首先,要知道的是:实现该功能的算法不是唯一的,另可以通过每行代数余子式之和等等方法来计算,这里说明一个比较好理解的方法,即全部展开。要想实现本程序的功能,不但必须得定义有分别存放2、3、4阶行列式的数组,而且得有对应于2阶、3阶、4阶行列式的计算模块,那我们就可以定义三个函数来实现,很明显对应于三种计算方式我们得运用3种选择,那么我们可以丢给if语句来实现。
对于加密模块,定义一个存放密码变量+计算错误次数变量+goto语句实现,另这个程序只给出用户3次破密的机会,错误大于等于三次,强制退出,通过引用中的exit(0)函数来实现。
*三、整体代码

 #include 
#include 
int i,j,k,flag = 0;
int list[3][3];
int s=0,p=0,q=0,sum1=0,sum2=0,sum3=0,s1=0,m=0,w=0;
int a[4][4];
int b[2][2];
int x = 0;
int jisuan2(void);
int jisuan4(void);
int jisuan(void);
int main(void)
{
     
	alable:
	printf("********初始化应用,请输入4位数字安全密钥,你只有三次机会!********\n");
	scanf("%d",&x);
	if((int)x== 5453)
	{
     
		printf("密钥正确,软件激活成功!\n\n");
	} 
	else
	{
     
		printf("密钥错误,软件无法激活!\n\n");
		w++;
		if(w==3)
		{
     
			printf("超出3次限制,再见!\n"); 
			 for (i = 1; i < 1000; i++)
    {
     
        for (j = 1; j < 1000; j++)
        {
     
            for (k = 1; k < 1000; k++)
            {
     
            }
        }
    }
			exit(0);
		}
		printf("请重新输入!!!\n");
		goto alable; 
	}
	while(1)
{
     
	slable:
		printf("计算2阶行列式为模式0,3阶行列式为模式1,4阶行列式为模式2,默认模式为0,一定要从0、1、2中选择!!!\n");
		scanf("%d",&flag);
		if(flag == 1)
		{
     
		    sum1 = jisuan();
			printf("计算结果为:%d\n\n\n\n",sum1);
		}
		 if(flag == 2)
		{
     
			sum2 =jisuan4();
			printf("计算结果为:%d\n\n\n\n",sum2);
		}
		if(flag == 0)
		{
     
			sum3 =jisuan2();
			printf("计算结果为:%d\n\n\n\n",sum3);
		}
		else
		{
     
			goto slable;
		}
		flag = 5; 
	}
	system("pause");
	return 0;
}
int jisuan(void)
{
     
	printf("*****您已进入3阶行列式运算!******\n");
	for(i=0;i<3;i++)
	{
     
		for(j=0;j<3;j++)
		{
     
			scanf("%d",&list[i][j]);
		}
	}
			s = list[0][0]*list[1][1]*list[2][2]+list[0][1]*list[1][2]*list[2][0]+list[0][2]*list[1][0]*list[2][1];
			p = list[0][2]*list[1][1]*list[2][0]+list[0][1]*list[1][0]*list[2][2]+list[0][0]*list[1][2]*list[2][1];
		m = s-p;
		return m;
		}
int jisuan4(void)
{
     
		printf("*****您已进入4阶行列式运算!******\n");
		for(i=0;i<4;i++)
	{
     
		for(j=0;j<4;j++)
		{
     
			scanf("%d",&a[i][j]);
		}
	}
q =	a[0][0]*a[1][1]*a[2][2]*a[3][3]-a[0][1]*a[1][2]*a[2][3]*a[3][0]+a[0][2]*a[1][3]*a[2][0]*a[3][1]-a[0][3]*a[1][0]*a[2][1]*a[3][2]+a[3][0]*a[2][1]*a[1][2]*a[0][3]-a[3][1]*a[2][2]*a[1][3]*a[0][0]+a[3][2]*a[2][3]*a[1][0]*a[0][1]-a[3][3]*a[2][0]*a[1][1]*a[0][2]+a[0][0]*a[1][2]*a[2][3]*a[3][1]-a[0][2]*a[1][3]*a[2][1]*a[3][0]+a[0][3]*a[1][1]*a[2][0]*a[3][2]-a[0][1]*a[1][0]*a[2][2]*a[3][3]+a[3][0]*a[2][2]*a[1][3]*a[0][1]-a[3][2]*a[2][3]*a[1][1]*a[0][0]+a[0][3]*a[2][1]*a[1][0]*a[0][2]-a[3][1]*a[2][0]*a[1][2]*a[0][3]+a[0][0]*a[1][3]*a[2][1]*a[3][2]-a[0][3]*a[1][1]*a[2][2]*a[3][0]+a[0][1]*a[1][2]*a[2][0]*a[3][3]-a[0][2]*a[1][0]*a[2][3]*a[3][1]+a[3][0]*a[2][3]*a[1][1]*a[0][2]-a[3][3]*a[2][1]*a[1][2]*a[0][0]+a[3][1]*a[2][2]*a[1][0]*a[0][3]-a[3][2]*a[2][0]*a[1][3]*a[0][1];
	return q;
		}
	int jisuan2(void)
{
     
	printf("*****您已进入2阶行列式运算!******\n");
	for(i=0;i<2;i++)
	{
     
		for(j=0;j<2;j++)
		{
     
			scanf("%d",&b[i][j]);
		}
	}
			s1 = b[0][0]*b[1][1]-b[0][1]*b[1][0];
		
		return s1;
		}`*

四、关于部分函数

  1. 引用exit(0)函数需要引用头文件 #include ,当程序运行到此时会强制退出。
  2. C语言的延时函数,我通过定义i,j,k三个变量来做数次空循环以实现延时:
 for (i = 1; i < 1000; i++)
    {
     
        for (j = 1; j < 1000; j++)
        {
     
            for (k = 1; k < 1000; k++)
            {
     
            }
        }

3.goto语句:无条件跳转,但是对于工程量大的程序并不推荐,要限制使用goto语句,因为不利于C的模块化编程。
运用格式:
lable:


goto lable;
4.关于函数定义
当函数模块在main函数之下时,一定要在main函数之前进行声明,而在main函数之上时可省略声明。
五、给程序添加一个漂亮的图标
我们知道,当C编译完成之后就会有一个默认的图标,很难看,如图:默认图标
那么我们如何可以给它换一个漂亮的图标呢?
1.首先,要去网上搜集几个你中意的ico图片文件来当他的图标。
2.在DEV C++左侧项目管理功能栏中找到项目,单击右键,弹出一个选择框,选择项目属性,弹出如下:
新手试炼:C语言实现加密版2-4阶行列式运算!_第3张图片
我们可以看到左下角有图标选项,点击浏览把从网上找来的ico文件选择进去再进行编译一次就可以了。
六、程序运行效果展示
新手试炼:C语言实现加密版2-4阶行列式运算!_第4张图片
谢谢浏览,欢迎指正!

你可能感兴趣的:(c语言,算法,线性代数)