C语言程序设计:线性方程组求解

C语言程序设计:线性方程组求解,第1张

程序能成功运行,用的高斯消元法

不过没有给出菜单

输入提示信息比较清楚

某次的结果如下:

你要解几元线性方程组:

2

请输入第1行相应的系数:

a[0][0]: 2

a[0][1]: -1

请输入第1行相应的常数:

b[0]: 3

请输入第2行相应的系数:

a[1][0]: 1

a[1][1]: 1

请输入第2行相应的常数:

b[1]: 9

方程组:

2000000X1 - X2= 3000000

X1 + X2= 9000000

该方程组的解为:

x1 = 400

x2 = 500

Press any key to continue

程序如下:

#include <stdioh>

#include <stdlibh>

#include <malloch>

#include <mathh>

int GS(int,double,double ,double);

double TwoArrayAlloc(int,int);

void TwoArrayFree(double );

void main()

{

int i,j,n;

double ep,a,b;

ep = 1e-4;

printf("你要解几元线性方程组:\n");

scanf("%d",&n);

a = TwoArrayAlloc(n,n);

b = (double )calloc(n,sizeof(double));

if(b == NULL)

{

printf("内存分配失败\n");

exit(1);

}

for(i=0;i<n;i++)

{

printf("请输入第%d行相应的系数:\n",i+1);

for(j=0;j<n;j++)

{

printf("a[%d][%d]: ",i,j);

scanf("%lf",a[i]+j);

fflush(stdin);

}

printf("请输入第%d行相应的常数:\n",i+1);

printf("b[%d]: ",i);

scanf("%lf",b+i);

fflush(stdin);

}

printf("方程组:\n");

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

{

if(a[i][j]>0)

{

if(j>0)printf(" + ");

if(a[i][j]!=1)

printf("%lfX%d",a[i][j],j+1);

else

printf("X%d",j+1);

}

if(a[i][j]<0)

{

if(j>0)printf(" - ");

if(a[i][j]!=-1)

printf("%lfX%d",fabs(a[i][j]),j+1);

else

printf("X%d",j+1);

}

}

printf("= %lf\n",b[i]);

}

if(!GS(n,a,b,ep))

{

printf("不可以用高斯消去法求解\n");

exit(0);

}

printf("该方程组的解为:\n");

for(i=0;i<n;i++)

printf("x%d = %2f\n",i+1,b[i]);

TwoArrayFree(a);

free(b);

}

int GS(int n,double a,double b,double ep)

{

int i,j,k,l;

double t;

for(k=1;k<=n;k++)

{

for(l=k;l<=n;l++)

if(fabs(a[l-1][k-1])>ep)

break;

else if(l==n)

return(0);

if(l!=k)

{

for(j=k;j<=n;j++)

{

t = a[k-1][j-1];

a[k-1][j-1]=a[l-1][j-1];

a[l-1][j-1]=t;

}

t=b[k-1];

b[k-1]=b[l-1];

b[l-1]=t;

}

t=1/a[k-1][k-1];

for(j=k+1;j<=n;j++)

a[k-1][j-1]=ta[k-1][j-1];

b[k-1]=t;

for(i=k+1;i<=n;i++)

{

for(j=k+1;j<=n;j++)

a[i-1][j-1]-=a[i-1][k-1]a[k-1][j-1];

b[i-1]-=a[i-1][k-1]b[k-1];

}

}

for(i=n-1;i>=1;i--)

for(j=i+1;j<=n;j++)

b[i-1]-=a[i-1][j-1]b[j-1];

return(1);

}

double TwoArrayAlloc(int r,int c)

{

double x,y;

int n;

x=(double )calloc(rc,sizeof(double));

y=(double )calloc(r,sizeof(double));

if(!x||!y)

{

printf("内存分配失败\n");

exit(1);

}

for(n=0;n<=r-1;++n)

y[n]=&x[cn];

return (y);

}

void TwoArrayFree(double x)

{

free(x[0]);

free(x);

}

算法是为一个问题或一类问题给出的解决方法与具体步骤,是对问题求解过程的一种准确而完整的逻辑描述。程序则是为了用计算机解题或控制某一过程而编排的一系列指令的集合。程序不等于算法。但是,通过程序设计可以在计算机上实现算法。

你可能解答过一个有趣的问题——“人、狼、羊过河”问题。有个人带着三只狼、三只羊,要过河去。有一条小船。船上除了运载一个人外,至多再载狼或羊中的任意两只。但难点是:当人不在场时,如果狼的数量大于等于羊的数量,那么羊会被狼吃掉。为了安全过河,你有什么办法呢?

解决它的算法有多个,其中一个解决方案是这样的:

开始,运一只狼过河,空船回来;

接着,运一只狼和一只羊再过河,到对岸后,再运两只狼回来;

然后,运两只羊过河,空船回来;

最后,分两次将狼全部运过河;

由此,过河问题就得以解决了。

可见,算法是为一个问题或一类问题给出的解决方法与具体步骤,是对问题求解过程的一种准确而完整的逻辑描述。它由有限步骤的 *** 作序列组成,代表着用系统的方法描述解决问题的策略机制。

算法是一组严谨定义运算顺序的规则,每一个规则都是有效的、明确的,此顺序必须在有限的次数下终止。在上面的过河问题中,如果第一步中改为:“运一只狼过河,再运这只狼回来”,那么,说明人没找到好办法,在反复进行无用 *** 作。此类算法,是失败的,永远也实现不了既定目标。

算法描述,一般可以使用汉、英等自然语言,比较通俗易懂。也可以使用流程图、伪代码表格等其他工具。

在古代,算法通常用于数值计算。中国古代的筹算口诀、珠算口诀及其执行规则就是算法的雏形。它所解决的是数值计算问题。现代算法,已超出数值计算范围。

程序则是为了用计算机解题或控制某一过程而编排的一系列指令的集合。这些指令,可以是计算机的机器指令,也可以是汇编语言和高级程序设计语言。

程序不等于算法。但是,通过程序设计可以在计算机上实现算法。在实际应用中,也许只需一条(组)程序设计语句,就可以完成算法的基本要素处理,包括数据对象的运算和 *** 作,以及顺序、选择、循环结构的控制。通过程序模块设计,可以实现算法中的递推、递归、迭代等一系列基本算法,也包括形式演绎、数据结构、数论图论、加密解密、科学决策等复杂算法。

因此,运用计算机解决问题的过程,通常可以分成三个阶段:分析问题、设计算法和编制程序实现算法。由于计算机运算速度快,存储数据量大,大大提高了算法实现效率。

计算机基础及程序设计概述

“计算机程序设计基础”是大学计算机基础教学系列中的核心课程,主要介绍程序设计语言的基本知识和程序设计的方法与技术。下面是我整理的关于计算机基础及程序设计概述,欢迎参考!

1计算机基础及程序设计概述

计算机基础其内容以程序设计语言的语法知识和程序设计的基本方法为主,同时包括程序设计方法学、数据结构与算法基础等方面的初步内容。本书旨在,使学生掌握计算机程序设计的基本思想和方法,初步具备在各领域应用计算机的能力,并为后续课程的学习创造条件。

本套教材分为《计算机程序设计基础》和《程序设计基础实验指导与习题》,力求详细介绍C语言结构化程序设计,并涵盖了计算机等级考试的要求。《计算机程序设计基础》教材是以程序设计的基础理论为主,重点介绍程序设计的基本理论和方法及C语言的语法知识。《程序设计基础实验指导与习题》教材与《计算机程序设计基础》配套,包括实验上机指导、实验思考题、练习题、二级考试等内容。

本书是以计算机基础课程教学指导分委员会制定的“计算机程序设计基础课程教学基本要求”为依据,结合近年来C语言程序设计基础的教学实践经验编写而成。其内容涵盖了C语言结构化程序设计的基本理论、基本概念、方法和规范。以培养学生掌握程序设计的基本理论和方法及计算机应用编程能力为目标。

本书以一个小型的学生成绩管理系统为主线,将C语言程序设计的各个知识点分配到各个章节中详细介绍,并逐步实现该系统的全部功能。通过该案例,使学生对C语言程序设计的过程和所涉及知识有一个清晰的理解,力求理论与实践相结合,从而培养学生分析问题和解决问题的能力。

本书共分8章,内容包括:

第1章——程序设计概述,介绍程序、程序设计、算法等基本概念,程序设计的过程和程序设计的方法,以及C语言字符集、词法符号和C语言程序的基本结构。

第2章——数据类型、运算符与表达式,介绍C语言的数据类型、各种类型的常量、变量的声明和使用方法,各种类型运算符及表达式求值的运算规则。

第3章——程序控制结构,介绍结构化程序设计的基本概念和结构化程序设计的方法,C语言的顺序控制语言、选择控制语句、循环控制语句及应用问题的求解方法。

第4章——函数与预处理,介绍用函数实现模块化程序设计的思想,函数定义、函数声明、函数调用的基本概念和方法,函数的返回值及其类型,函数参数传递机制,递归函数,变量的作用域和存储类型及预处理等。

第5章——数组,介绍数组的概念,一维数组的定义、初始化及应用,二维数组的定义、初始化及应用,字符串与字符数组的概念及应用。

第6章——指针,介绍指针的基本概念,指针变量的定义及其相关运算,指针与函数,指针与数组,动态内存分配。

第7章——结构体与共用体,介绍结构体、共用体等自定义数据类型的机制,结构体类型与结构体变量,结构体数组,结构体与函数,链表的概念和常用 *** 作,共用体的概念及应用。

第8章——文件,介绍文件的基本概念及对文件的常用 *** 作。

第9章——面向对象程序设计,介绍面向对象程序设计的基本概念及类的基本 *** 作。

附录包括ASCII码表、C语言运算符、常用C标准库函数。

本书第1章、第2章由田红梅编写,第3章由郭炜编写,第4章由刘菲编写,第5章由姬涛编写,第6章由江红编写,第7章、第8章由周启生编写,第9章由陈青编写。全书由周启生和姬涛统稿与审定。特别感谢刘宝忠教授对本书的指导与审阅。在编写本书的过程中,还得到了王海晖教授、庄鹏老师的大力支持,在此也表示衷心感谢!

本书的编者都是长期从事程序设计教学的`教师,本书凝集了各位教师多年的教学实践经验。由于计算机科学技术发展迅速,程序设计的教学内容、方法和手段日新月异,加之编者水平有限,书中不足之处在所难免,敬请读者批评指正,以便今后进一步完善。

2计算机基础及程序设计概述

软件是为了完成某些特定功能而编制的一到多个程序文件的集合。指令就是命令,可以被连续执行的指令集合,称为计算机程序。计算机语言是人们发明的一种,可以和计算机交流沟通的一种工具。

总而言之程序语言是软件工程师用来编写程序、制作软件的工具,是规则与符号的集合,是与计算机交流的工具。

程序语言的产生和发展,直接推动了计算机的普及和应用。总的来说程序分为4大类:

1、机械语言:机械语言全部都是由0和1构成的,但是不利于理解和记忆,也不方便我们 *** 作计算机。

2、汇编语言:汇编语言仅是机器语言的一种助记符,它们之间没有本质的区别,很多时候我们把二者等同视之。

3、中级语言:C语言即是中级语言也是高级语言,C语言是由B语言发展而来的,有C又有B当然还有A语言,而B语言就是由A语言发展来的。

4、高级语言:高级语言总是无限接近我们的自然语言和思维方式。程序语言的发展趁势就是:从最底层的机器语言逐步跨越计算机与客观事物(即问题域)之间存在的语言鸿沟。

如何进行程序设计呢一个简单的程序设计一般包含了4个步骤,他们分别是:1、分析问题;2、确定数据结构和算法;3、编制程序;4、调试程序。

有了步骤下面我们要考虑的就是算法了,而算法的基本特征包括了以下5项:

1、有穷性:一个算法必须在执行有限个 *** 作步骤后终止。

2、确定性:算法中每一步的含义必须是确切的,不可以出现任何二议性。

3、有效性:算法中的每一步 *** 作都应该能有效执行,一个不可执行的 *** 作是无效的。

4、有零个或多个输入:这里的输入是指在算法开始之前所需要的初始数据。这些输入的多少取决于特定的问题。

5、有一个或多个输出:所谓输出是指与输入有某种特定关系的量,在一个完整的算法中至少会有一个输出。

其中第4和第5项是一起的。

有了算法就该编码实现了:

首选是编写源代码;然后是将源代码编译成为目标代码;之后是连接目标代码成为可执行程序;最后是运行程序。

程序编好了之后,我们需要调制程序中的错误:

首先是语法中的错误;其次是逻辑上的错误;然后是开发中的错误;最后是运行是的错误。

今日打油诗:

程序基础

程序基础刚开学

九九乘法太困难

几个小时终算出

结果还是有错误

等待明日老师教

速吃晚饭写微博

微博笔记刚完成

时间已过十一点

明日课程快预习

预习完后好疲惫

赶快洗洗睡觉啦

;

计算机解决问题的过程是:分析问题、设计算法、编写程序、调试运行、检测结果。

计算机解决问题的过程也是程序设计的过程。程序设计是运用计算机解决问题的一种方式,有些问题,如:数值、逻辑等问题适合于通过程序的方式解决。通过实例问题的分析、设计算法、把所要解决的问题转化成的程序输入到计算机、经调试后让计算机执行这个程序,最终达到利用计算机解决问题的过程。

编写程序是以下步骤的一个往复过程:编写新的源代码,测试、分析和提高编写的代码以找出语法和语义错误。从事这种工作的人叫做程序设计员,由此产生了不同种类的程序设计员,每一种都有更细致的分工和任务。软件工程师和系统分析员就是两个例子。编程的长时间过程被称之为“软件开发”或者软件工程。后者也由于这一学科的日益成熟而逐渐流行。

扩展资料:

计算机程序数据可以被定义为被程序处理的信息。当我们考虑到整个计算机系统时,有时程序和数据的区别就不是那么明显了。中央处理器有时有一组微指令控制硬件,数据可以是一个有待执行的程序,程序可以编写成去编写其它的程序;所有这些例子都使程序和数据的比较成为一种视角的选择。有人甚至断言程序和数据没有区别。

编写一个程序去生成另外一个程序的过程被称之为原编程(Metaprogramming)。它可以被应用于让程序根据给定数据生成代码。单一一个程序可能不足以表示给定数据的所有方面。让一个程序去分析这个数据并生成新的程序去处理数据所有的方面可能会容易一些。Lisp就是一例支持这种编程模式的程序语言。

在神经网络里储存的权重是一种数据。正是这些权重数据,跟网路的拓扑结构一起,定义了网络的行为。人们通常很难界定这些数据到底表示什么或者它们是否可以由程序来代替。这个例子以及跟人工智能相关的其它一些问题进一步考验程序和数据的区别。

参考资料:

百度百科-计算机程序

以上就是关于C语言程序设计:线性方程组求解全部的内容,包括:C语言程序设计:线性方程组求解、算法与程序有什么区别、计算机基础及程序设计概述等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9276530.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存