c语言编程范例6篇

c语言编程

c语言编程范文1

关键词:C语言;编程技巧;应用

中图分类号:TP312.1-4 文献标识码:A 文章编号:1007-9416(2017)01-0099-01

C语言凭借着强大的功能和广泛的应用,一直在编程领域中占着重要地位,目前许多学校也将其作为主要的课程之一,重要性显而易见,C语言是将汇编语言与编程语言融为一体,尽管C语言如此重要,但在实际教学之中往往出现学生的学习能力不强,认为C语言晦涩难懂,在学习过程中相当吃力,达不到理想的教学效果,因而,在实际的C语言学习过程中,更要注重编程技巧。

1 C语言概述

C语言作为全球范围内的计算机软件开发语言具有相当广发的应用领域。发展速度及传播速度也相当快,最早的C语言是开发与20世纪60年代,随着时代的发展到70年代趋于完善,在经过几十年的发展,就到了目前这样较为成熟的阶段,C语言具备着一些其他语言所不能替代的优势及特征。

2 C语言学习过程中存在的问题

(1)C语言作为一种高级编程语言,是有一定难度的,尤其是许多学习者接触过可视化的编程语言,这样就会明显感觉到差异性,学习的压力也会变大,因为在实际的学习过程中,学习者不能直观的去感受去查看所编写的程序,只有在完成所有的编程之后,才能对其编写的程序进行查看,在运行过程中发现问题在回过头进行调试修改,反复的进行操作,因而,许多学习者就会觉得这样的编写会产生很多的偏差,在程序的结果显示出现很多的问题,无法对所进行编写的程序有明显的真实的感知[1]。(2)C语言本身的表意元素体系内存在着大量的算法及数据结构,对于C语言的学习者来说,必须要进行基础知识的学习,只有打下扎实的基础,才能具备应用技巧方面的学习,在学习过程中不断的去学习和理解,如此循环,学生在短时间内是看不到成效的,因而,很难体会到学习的与乐趣,更多体会到的枯燥乏味,从而加深了学习者的厌恶心理,当一个人在学习过程中体会不到乐趣,就会逐渐的失去学习的兴趣,从而,学生的学习效果也会明显的下降,得不到明显的提升。因而,进行C语言学习的学习者心理上的逆反情绪也成为了C语言学习过程存在的重要问题之一。

3 C语言学习中的编程技巧研究

3.1 指针的编程技巧

C语言的特征简单来说就是靠指针来实现的,指针通过一些简单的语句,就可以大大的提高C语言的运行速度,但是当内存不足的时候也存在一定的问题。当进行最基础的对字符串进行赋值操作的时候,既可以写成:#defune LEN 32;char string 1[LEN];memset (string,0,1LEN);ctrcpy(string1,”this is a example”);还可以写成:const char string2 [LEEN]=“this is a example”;char*cp;cp=string2。就这另种代码的编写方式来说,运行效率是无法比拟的,第一种方式需要对两个字符的函数进行调用才可以得以实现,而后一种方式则通过指针就可以完成,大大的提高了运行速度。因而通过指针的方式是C语言中的第一种技巧方式[2]。

3.2 数学方法的编程技巧

对于在C语言的学习过程中,要选择相应的数学方法,因为好的方法在实际的过程中会起到事半功倍的效果,当遇到大量的数据结构形式要进行处理的过程中,要通过计算机来代替人工的操作,因而有许多繁重的任务是人工所不能进行的,计算机则可以大大的省时省力,尤其遇到一些需要用数学方法来解决的,就需要在C语言编程之前,要进行很好的分析,将数学的方法运用其中。

3.3 位操作的编程技巧

使用位的操作可以对于C语言编程效率的提升起到明显的作用,因而位作为存在于数据单元中最小的单位,可以使编程的代码相对更加的简练,这样运行的效率也会得到提高,基本在运算的过程中,位操作都可以进行,在实际的应用中,可以根据具体的情况来进行选择应用。

3.4 单片机的编程技巧

单片机作为产品开发的一种趋势,操作也是越来越复杂,性能需要大大提升,单片机的存储设备也在不断的扩大,通过单片机进行编程是非常重要的一项内容,C语言尽管拥有众多的优势,但是单片机的编程技巧也是不容忽视的,首先对于基于单片机的C语言编程来说要对数据结构的类型进行有效的选择,计算机可以直接的进行读取,对于一些如浮点型、整形或是相应的程序以及函数都要产生许多的代码,必须要将数据的类型进行合理的选取才能很好的实现相应的操作,其次,要对算法进行优化,根据具体的情况进行优化选择。

4 结语

总之,C语言编程的学习是尤为重要的,要想将较为复杂的语言在学习过程中更加容易,就需要掌握一定的编程技巧,要不断的提高对C语言学习的兴趣,具有较明确的目的,从而提高学习的效率。

参考文献

c语言编程范文2

【关键词】 汇编语言 C语言 软件工程 应用

前言:软件工程作为一门工程化方法,是构建及维护有效的、高质量软件学科,广泛应用于工业、银行及航空等多个领域发展中,并发挥着积极的促进作用,而汇编语言与C语言是低级与高级语言,各自存在一定优势及缺陷,如何更好的使用两种语言受到越来越多的关注。至此,加强对汇编语言及C语言在软件工程应用的研究具有现实意义。

一、汇编语言与C语言概念

汇编语言主要是指汇编指令集、伪指令集及使用规则的总称,通过具有特点的符号作为助忆符号,用符号地址等组合成为汇编格式指令。C语言主要是指一种编程语言,实现简便、效率高且要求低的运行的编程目标,两种语言都是软件工程编写的基础。

二、汇编语言在软件工程中的应用

汇编语言是建立在传统机器语言基础之上的,保留了传统语言的优势的同时,突破了传统语言的弊端,能够对关键程序代码进行准确控制,且能够直接访问并控制相应的硬件系统,促使硬件发挥积极作用,从而确保系统稳定运行,不仅如此,汇编语言程序编译后的目标代码空间需求较小,执行效率较高,在系统软件程序和过程控制程序中的应用比较广泛、且普遍,其具有独特的优势,是其他语言难以取代的。但是,事物具有两面性,汇编语言也存在一定不足,由于其基础是机器语言,使得其对象没有发生变化,没有改变其是一种低级语言的地位,且理解难度也较高。在软件开发中应用此语言,效率并不明显,且针对硬件系统而言,且精确度并不高,兼容性较差,即便是类似硬件也不能够通用。在软件工程中,汇编语言凭借自身与硬件系统联系密切,且能够实现直接访问,很多系统软件都采用汇编语言进行编程,还包括一些对处理速度要求较高的程度也是通过汇编语言编写的。不仅如此,在系统核心部分、软件加密、解密及计算机病毒分析等方面也都具有广泛的应用。在一些行业中,汇编语言是不可缺少的,只能够选择它,在熟悉的程序员手中,使用汇编语言能够显著提升效率及性能,但是,其弊端是需要利用更长的时间进行调整和优化。汇编语言在一些工业企业中,制作4位单片机等,以此来实现对工业生产过程的控制和管理,另外,针对需要快速及实时响应的场合,也需要选择汇编语言,例如:仪器仪表及工业控制设备等,一般情况下,汇编语言应用于最底层,驱动程序及嵌入式操作程度等,随着现代软件系统不断发展,汇编语言逐渐成为计算机专业学生必须了解和掌握的一门课程,能够帮助学生认识计算机运行原理,夯实计算机相关知识基础。

三、C语言在软件工程中的应用

c语言编程范文3

C语言是一种计算机程序设计语言,是计算机汇编语言的重要组成部分。其实质就是通过对语言进行编写和翻译,使其产生一种与社会相衔接的语言,让人和计算之间通过这种语言能够进行简单的交流。C语言是在1972年由美国贝尔研究所提出,1978年先后被运用到各种机型中。C语言具有双重性,具备高级语言的特点和汇编语言的优越性,不仅能对系统应用程序进行编写,而且能对不依靠计算机硬件的应用程序进行编写。同时C语言也具有广泛的应用性,能在多个计算机的操作系统中运用,大大提高了计算机软件编程的效率。随着计算机的日益普及,C语言的应用领域越来越宽,成为目前较为流行的高级程序设计语言之一,在许多大型的软件编程中被广泛的应用。C语言具有如下的特点:

1.1模块化思想模块化的基本思想就是运用C语言在进行计算机软件编程设计时,按功能作用的不同将一个较大的程序分割成为许多小的子模块,使每个小的子模块成为一个功能单一、理解简单和结构合理的小程序。

1.2简洁性强C语言具有语言简洁、结构紧凑、使用方便、灵活的优势。C语言包含了32个关键字和9条控制语句,源程序书写方式较自由灵活,因此在计算机软件编程中要选择使用小写字母,压缩掉所有不重要的部分。

1.3运算范围广C语言总共具有34种运算符,其运算符号十分丰富且对运输结果能采用各种各样的表达形式,因此C语言的数据处理能力强,可以为各类数据结构进行复杂的运算,进行一些高级语言较难实现的运算功能。

1.4移植泛用性C语言在进行软件编程中基本上不需要做任何的修改,就能运用于各种不同型号的计算机和操作系统环境上,从而形成很多不同版本的C语言。

1.5应用效率高C语言的应用结构简单清晰,能够对内存中的相应地址进行直接的访问,操作十分方便,被称为高级语言中的低级语言。同时能够直接调用系统功能,直接操作硬件,具备许多高级语言所不具备的高效率。

2.C语言在计算机软件编程中的技巧

C语言具有模块化的特点,因此在计算机软件程序编程中,充分发挥C语言的灵活性和方便性,提高软件编程的技巧性,能够优化软件程序编辑和提高软件开发的效率和质量。

2.1变量数据和运算模式的合理设置设置变量数据时,要在最大限度满足计算机软件编程需要的前提下,尽可能合理的设置变量数据,使用无符号的最小数据类型,这样能减少程序代码,从而促进计算机软件编程的有效运行。同时在设置运算模式时,要尽量运用定点运算,避免运用浮点运算。

2.2变量存贮器类型的合理定义在计算机软件编程中,采用和操作不同类型的变量存贮器时,会造成编译后的代码执行效率各不相同,只有合理定义变量存贮器类型,才能不断提高程序的执行效率。因此在定义变量存贮器类型时,应在满足条件的情况下尽量选用内部直接寻址存贮器。

2.3变量存贮类型的灵活设置在计算机软件编程中,C语言具有模块化思想,正确函数变量的传递在编程中十分重要,因此子程序模块使用的变量常采用局部变量,而整个程序模块使用的变量要采用全局变量。另外在C语言中灵活使用指针、结构和联合,也便于数据的传递,提高软件编程的效率。

2.4设计软件编程与C语言的接口C语言具有程序执行速度快和直接操作硬件的优势,在进行数据采集、中断服务器处理和实时控制时,可以将C语言程序运用到计算机软件编程中,自行控制数据的传递,从而能够精确控制任务,加快实时响应。

2.5编译控制指令的正确选择C语言能为计算机的软件编程提供了20多条控制指令,总体可分为首要控制指令和一般控制指令,首要控制指令的选择只能用一次,要放在源程序的开始处,以防止重复而导致停止编译,而一般控制指令的选择可以多次。因此选择正确的控制指令,能加速程序调试过程。

3.C语言在计算机软件编程中的应用

C语言具有很强的优越性,可以适用于计算机软件编程实验研究,这就需要对C语言在计算机软件编程中的应用有一个全面的认识,避免在以后的程序设计过程中出现基础不足的情况。

3.1指针的应用C语言中的指针代表相关变量、相应函数的地址和地址相对应的存储内容。在进行软件编程时,如果一个相应的变量声明前面,出现“*”号,那就表示这个内存地址相对应的存储内容。通常情况下C语言的一个指针代表着一个相应函数的地址,是一个常量。此外,C语言的指针可以在调用函数时得到几个不同于return(z)的返回值。

3.2字符串在C语言中,字符串是一种以ASCII的UNL作为数组退出的一种chair型的数组,在计算机软件编程中,字符串的使用一般不需要引用库。但在C标准库中包含着一些函数可以操作相应的字符串,在使用这些函数时,需要运用相对应的头文件进行引用。

3.3C语言结构C语言主要包括三种结构模式即顺序结构、选择结构和循环结构。顺序结构在C语言中是按照先后次序进行操作,通过构建一个相对简单和完整的程序,进行相对独立的运用。循环结构是在进行各种数据运算和处理时,需要对其中的一些语句进行反复的执行,这在一定程度上简化了程序的长度,使程序变得简洁。选择结构是根据相关的分支条件选择相应的执行路径,在计算机软件编程中要选择具有较强适应性执行路径。

c语言编程范文4

[关键词]C语言;训练:流程图;优化

一、深刻理解C语言的结构和语法特点

和学习其他任何一种语言一样,学习C语言也应该对C语言的结构和特点有完整的认识和深刻的理解,这是提高学生编程能力的关键。在讲授C语言的基本要领和程序结构时,不是简单地罗列字符、常量、变量、函数、表达式等名词概念,而是通过大量的练习,使学生认识它们在程序中的应用和它们之间的相互关系。在讲授每条语句时,在讲清语句的格式与功能后,通过分析程序使学生加深对语句概念的理解,并使学生了解该语句在程序中所起的作用。

二、加强读程序的训练

读程序与写程序有着密切的联系,要编写C语言程序,不加强读程序的训练,也就很难编好程序。通过读程序,可以加深对C语言语句语法的理解,检验对C语言语句语法的理解程度,通过读程序还可以学习编写程序的方法。在每讲完一条语句后,都用一段时间来进行读程序的训练。这种训练分为两个阶段进行,第一阶段是让学生模拟计算机来分析程序的运行结果,它的作用是通过读程序来加深对语句概念的理解和掌握用这些概念分析程序的方法,这有利于学生以后检查自己编写的程序是否正确和优化。第二阶段是通过读程序,学习和掌握编写程序的基本方法和基本技巧。

三、掌握常用的编程方法和典型程序

将一些常用的编程方法和典型程序进行了归纳总结,将它们分为计数、累加、求最大与最小数、统计选票、数列求和、数字处理、文本图形显示、求素数、求最大公约数和最小公倍数、求面积、求根、精确计算、求极值、辅助教学、排序、检票、文字处理、逻辑判断等几十类,并在教学的各个阶段陆续将它们各自的编程思路、技巧、方法和典型程序教授给学生。要求学生记住典型程序、掌握编程技巧。这对学生编写其它类型的程序和较复杂的程序是很有帮助的。

四、学会利用流程图编写程序

要做一项工作,如果将工作的步骤用流程图表示出来,再按流程图去做,会使工作有条理,不出错误。编写的目的是让计算机按人的要求去工作。要使程序有条理,少出错误,也应该在编写程序以前,先画出程序的流程图。在学生初学编写程序时,要教学生如何将工作的流程图转换为程序的细流程图,以及如何利用细流程图编写程序,这里特别应注意培养学生建立数学模型的能力。在学生掌握了一定的编程方法和典型程序后,应要求学生养成利用粗流程图编写程序的习惯。在编写较复杂的程序以后,应先画出粗流程图,粗流程图中每个方框可表示学生已掌握的一个典型程序所完成的功能。

五、掌握调试程序的方法和程序优化的方法

在编写程序的过程中,常常离不开调试程序,尤其是一些较复杂的程序更需要调试。因此,应将调试程序的方法在适当的时候教给学生。总结了几种调试程序的方法:一种是TRACE命令跟踪程序;另一种是利用STOP语句加设暂停点;再一种是利用PRINT语句进行变量值监视的方法。除了要求学生掌握这些调试方法外,还应该使学生了解如何优化程序,使程序占用的内存尽量少,程序运行的时间尽量少,以及使编写的程序结构性强和容易读懂等。

六、培养学生的学习兴趣,注意教学方法

兴趣是学生学习的一个重要动力,在C语言教学中应特别注意培养学生的学习兴趣,使学生能在整个C语言学习过程中,始终保持旺盛的学习热情和求知欲。为了达到这个目的,应特别注意教学方法。在C语言教学中,采用的是理论教学与上机实验相结合的两阶段教学法。C语言和电子技术等专业课一样,是实践性很强的一门科学,离开了上机实验,单纯地书本、黑板教学是绝对教不好的。上机实验也不是盲目的上机操作,不是单纯地验证理论教学,而是为了将理论教学与上机实验有机地结合在一起,使之相辅相承。所谓两阶段教学,就是将C语言的词法和每条语句的语法分为两个阶段传授给学生。第一阶段使学生对词法和语法有一个粗浅的了解,知道它们的一般特点和一般用法,然后分析和编写一些较简单的程序,并上机操作;第二阶段使学生对词法和语法有完整的认识,并用它们分析和编写较难的程序,同时再上机操作。采用两阶段教学,使学习由浅入深、循序渐进,把难点分散、重点突出。这样,学生学习时就不会感到枯燥无味,从而增强学习兴趣和坚定学习的信心。

c语言编程范文5

关键词:C语言;进制转换

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)29-0124-02

C语言是各类编程语言的基础,江苏省的计算机专业对口单招考试中,也把C语言作为考点,而且理论和技能考试中都占一定的比例。进制转换的编程方法是C语言中的一个重要知识点,在近几年江苏省的职校计算机对口单招考试中也是一个重要考点。如果掌握了其要领,实现起来就会得心应手,本文主要以C语言编程为例,介绍进制转换的编程方法,希望给参加江苏省的职校计算机对口单招考试的学生及编程爱好者带来一定的帮助。

进制也就是进位制,是人们规定的一种进位方法。对于任何一种进制X进制,就表示某一位置上的数运算时是逢X进一位。十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,X进制就是逢X进位。而进制转换则是将一个数在各种进制之间的转换。常见的有:十进制变成R进制(二、八、十六进制),R进制变成十进制,R进制之间的互换等。下面就以C语言编程为例,介绍江苏省计算机专业对口单招考试中常见的进制转换编程方法。鉴于整数和小数的进制转换方法不一样,为了降低编程的难度,本文仅对整数部分实现进制转换作一介绍。

1 十进制变成R进制

通常将十进制变成R进制的方法,用被除数反复除以R,除第一次外,每次除以R均取前一次商的整数部分作被除数并依次记下每次的余数。另外,所得到的最后一位余数是所求二进制数的最高位,依此类推,所得到的第一位余数是所求二进制数的最低位。该法称为“除R逆取余法”。在C语言中,为了便于区分和处理,通常将十进制存放于整型变量中,将R进制存放于一个字符数组中。“除R逆取余法”在C语言中实现通常分为两步:第一步“除R取余”, 即用被除数反复除以R,并将余数按序存放于字符数组中,直到被除数为0为止;第二步“逆置”,即将字符数组的次序颠倒一次。例:编一函数fun(int x,char a[])将十进制x转换成十六进制。十六进制有十六个基数“0123456789ABCDEF”,为了便于处理,将这十六个基数“0123456789ABCDEF”存放于一个数组hex[17]中,这样,被除数x除以十六,所得到的余数为0~15则依次对应着hex[17]中的0~15个元素。函数如下:

void fun(int x,char a[])

{int n=0,i;

char hex[17]=”0123456789ABCDEF”,t;

while(x) /* 第一步除16取余 */

{a[n++]=hex[x%16];

x/=16;}

a[n]=’\0’; /* 字符串加上结束符 */

for(i=0;i

{t=a[i];a[i]=a[n-1-i]; a[n-1-i]=t;}

}

本题中的十六进制是比较难的一种,如果是二进制,则无须引入hex[17]字符数组,余数在10以内,直接可以加上’0’或48变成字符型。只要将a[n++]=hex[x%16]; x/=16;两句改成a[n++]= x%2+48; x/=2即可。八进制则将2改成8。提醒一下:a [n]=0;用于在一个字符串末尾加上结束符,不能遗忘。

2 R进制变成十进制

通常将R进制变成十进制的方法,是将R进制上的每一位数乘以该位上的权后累加即可。该法称为“按权展开求和法”。二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……。用C语言编程的时候,可以这么理解:十进制数每每在最低位加一个数,相当于把原来的数扩大十倍,再加上这个数,如要将12变成123就是将12*10+3即可得到,其他进制亦然。同样将十进制存放于整型变量中,将R进制存放于一个字符数组中。例:编一函数函数int fun(char a[])将二进制转换成十进制,十进制返回。函数如下:

int fun(char a[])

{int s=0,i;

for(i=0;a[i];i++)

s=s*2+a[i]-48;

return s;}

如果是将八进制转换成十进制,将s=s*2+a[i]-48;中的2改成8就行。如果是将十六进制转换成十进制,而十六进制有十六个基数“0123456789ABCDEF”,它们转变成数值,处理方法不一样,‘0’~‘9’变成0~9只要-48即可,‘A’~‘F’变成10~15需要-55,那就需要对基数进行判断,分两种情况进行处理,故要将函数中的s=s*2+a[i]-48;改成双分支语句if(a[i]>’9’)s=s*16+a[i]-55; else s=s*16+a[i]-48;即可。

3 R进制之间的互换

R进制之间的互换,在微机原理中,实现起来相对较为简单。例如将二进制变成八进制,有“三位变一位”的方法,将十六进制变成二进制有“一位变四位”的方法。在C语言编程中实现起来则比较麻烦,为了便于编程,可以将以上两种方法结合起来考虑。比如要将二进制转换成八进制,可以先用“按权展开求和法”将二进制转换成十进制,再用“除R逆取余法”将十进制转换成八进制,用此方法实现起来虽然有点麻烦,但确实行之有效,所以大家不妨一试。例:编一函数fun(char a[],char b[])将二进制转换成八进制。函数如下。

void fun(char a[],char b[])

{int s=0,i,t,n=0;

for(i=0;a[i];i++)

s=s*2+a[i]-48; /* 二进制转换成十进制 */

while(s) /* 除8取余 */

{ b[n++]= s%8+48;

s/=8;}

b[n]=’\0’; /* 字符串加上结束符 */

for(i=0;i

{t=b[i];b[i]=b[n-1-i];b[n-1-i]=t;}

}

其他进制之间转换的编程方法亦可参照此方法进行。

以上进制转换的方法是中职学生常见的方法,也是近几年江苏省计算机专业对口单招考试中主要考点,主要考查学生对循环和分支语句的灵活运用。需要大家平时多注意积累,多动脑筋,记住进制转换的方法,并将方法灵活运用到平时的学习中去。中职学生包括广大编程爱好者要多总结,从而对循环及分支语句的使用能有进一步的了解。当然编程方法不唯一,希望大家八仙过海,各显神通。

参考文献:

c语言编程范文6

关键词:C语言;结构化;计算程序

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)18-31611-03

Compiling two General Computer Programs in C Language

LIU Xiao-mang

(Jiangxi College of Applied Technology,Ganzhou 341000,China)

Abstract:In the middle school's mathematics curriculum,the calculating of the solution of a quadratic equation with two unknowns with its formula and the calculating of the solution of linear equation with Goss's eliminating the major elements solution are two units which involves mechanical formula computation. They are suitable for compiling computer programs in C Language. Here are two examples of compiling C program with the perspective of construction.

Key words:C Language; construction;computing sequence

在中学数学教学内容中,应用一元二次方程求根公式计算一元二次方程的根和应用高斯主元素消去法计算线性方程组的解是一部分具有机械计算性的程式化的单元,这使得很适合用C语言编写其计算程序. 下面即二个实例.

1 用求根公式解一元二次方程的程序

从代数学中知道,应用一元二次方程求根公式计算一般一元二次方程ax2+bx+c=0根的全过程和一元二次方程根的可能情况如下:

观察判断a和b是否为零.

如果a=b=0,那么方程为0x2+0x+0=0,无穷多解,或0x2+0x+c=0(c≠0),无解;

如果a=0,b≠0,那么方程为0x2+bx+c=0,x=-c/b;

如果a≠0,那么方程为

ax2+0x+0=0, ax2+0x+c=0, ax2+bx+0=0, ax2+bx+c=0

之一,可统一为

(1)若d=b2-4ac

(2)若d=b2-4ac=0,则有重根

(3)若d=b2-4ac>0,则有一对相异实根

简要显示题目和有关信息;设置变量h作为解一元二次方程次数的计数器(亦即题号);由键盘输入一元二次方程的二次项系数、一次项系数和常数项;用一组标记值0 0 0控制解题完毕.

C程序

#include"math.h"

main()

{int h;

double a,b,c,d,r,s;

printf("\n");printf("\n");

printf("用求根公式解一元二次方程:");

printf("\n");

h=0;

loop:h=h+1;

printf("\n");printf("\n");

printf("%d.%14ca b c=?%c",h,'','');

scanf("%lf%lf%lf",&a,&b,&c);

printf("\n");

if(a==0.0&&b==0.0&&c==0.0)printf("%16c完毕.",'');

else{printf("%10c解方程%4.2fx*x",'',a);

if(b

else printf ("+%4.2fx",b);

if(c

else printf("+%4.2f=0.00",c);

printf("\n");printf("\n");

if(a==0.0&&b==0.0)printf("%16c无解",'');

else if(a==0.0)printf("%16cx=%f",'',-c/b);

else{d=b*b-4*a*c,r=-b/(2.0*a),s=sqrt(fabs(d))/(2.0*a);

if(d

printf("%16cx1=%4.2f%4.2fi%16cx2=%4.2f+%4.2fi",'',r,s,'',r,fabs(s));

if(d=0.0)

printf("%16cx1=%4.2f+%4.2fi%16cx2=%4.2f-%4.2fi",'',r,s,'',r,s);

if(d==0.0)printf("%16cx1=x2=%4.2f",'',r);

if(d>0.0)printf("%16cx1=%4.2f%16cx2=%4.2f",'',r+s,'',r-s);}goto loop;}}

运行显示

用求根公式解一元二次方程:

(1)a b c=? 1 2 1

解方程1.00x*x+2.00x+1.00=0.00

x1=x2=-1.00

(2)a b c=? 1 1 0

解方程1.00x*x+1.00x+0.00=0.00

x1=0.00x2=-1.00

(3)a b c=? 1 2 -3

解方程1.00x*x+2.00x-3.00=0.00

x1=1.00x2=-3.00

(4)a b c=? 4 -4 2

解方程4.00x*x-4.00x+2.00=0.00

x1=0.50+0.50ix2=0.50-0.50i

(5)a b c=? 0 0 2

解方程0.00x*x+0.00x+2.00=0.00

无解

(6)a b c=? 0 0 0

完毕.

2 用高斯主元素消去法解线性方程组的程序

设线性方程组写成

其中Ai,k为非奇异实矩阵.

解线性方程组的高斯主元素消去法如下:

首先在系数矩阵中找出模最大的元素(主元素),将其所在行与第一行互换,并将其所在列的其它元素消去. 继而对从第二行开始的n-1 行矩阵重复上述变换,直至第n行. 最后, 再将结果次序适当排列即得线性方程组的解.

例如,给出一线性方程组:

这里,选择的主元素必须不等于零,否则方程组系数矩阵对应的行列式D=0,方程组无解或有无穷多解,不予讨论.

上面方法步骤总结归纳成为下面计算算法:

读入方程组系数和常数项.

(1)显示方程组;

(2)设置变量i为消元次数计数器,1=>i;

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文

*找增广矩阵左下角n-i+1行n列矩阵的主元素,主元素=>t,主元素所在行、列序号=>p、q. 交换i行(主行)与p行(主元素所在行),将主元素所在列其它元素化为0. i+1=>i,若i≤n,则转*;

(3)去系数并显示方程组的解.

根据高斯主元素消去法的计算算法,可以在其C程序中划分出显示、消元和求解三个功能函数,按照结构化思路设计编写C程序.

简要显示题目和有关信息;设置变量h 作为解线性方程组次数的计数器(亦即题号);由键盘输入线性方程组的未知数个数、系数和常数项;用一个标记值0控制解题完毕.

C程序

#include"math.h"

main()

{void xs(double b[7][8],int n);

void xy(double b[7][8],int l[7],int n,double u[1]);

void qj(double b[7][8],int l[7],int n);

int h,n,i,j,m[7];

double a[7][8],t[1];

printf("\n");printf("\n");

printf("用高斯主元素消去法解线性方程组:");

printf("\n");printf("\n");

h=0;

loop:h=h+1;

printf("%d.%18c线性方程组的未知数个数 n=?%c",h,'','');

scanf("%d",&n);

printf("\n");

if(n==0)printf("%20c完毕.",'');

else{printf("%20c线性方程组的系数和常数项=?%c",'','');

printf("\n");printf("\n");

for(i=1;i

for(j=1;j

printf("\n");

xs(a,n);

for(i=1;i

t[0]=0.0;

xy(a,m,n,t);

printf("%12c|",'');

printf("\n");printf("\n");

xs(a,n);

if(t[0]==0.0)printf("%20c主元素=0\n\n",'');

else qj(a,m,n);

goto loop;}}

void xs(double b[7][8],int n)

{int i,j;

for(i=1;i

{printf("%4.2fx1",b[i][1]);

for(j=2;j

if(b[i][j]

else printf("+%4.2fx%d",b[i][j],j);

printf("=%4.2f",b[i][j]);

printf("\n");printf("\n");}}

void xy(double b[7][8],int l[7],int n,double u[1])

{int i,j,k,p,q;

double c,r;

for(i=1;i

{p=i,q=1,u[0]=b[i][1];

for(j=i;j

for(k=1;k

if(fabs(b[j][k])>fabs(u[0]))u[0]=b[j][k],p=j,q=k;

if(u[0]!=0.0){for(k=1;k

for(j=1;j

void qj(double b[7][8],int l[7],int n)

{int i,j;

double s[7];

for(i=1;i

for(j=1;j

else printf("%21c%d=+%f\n\n",'x',j,s[j]);}

运行显示

用高斯主元素消去法解线性方程组:

(1)线性方程组的未知数个数 n=? 3

线性方程组的系数和常数项=?

1 2 2 5 2 6 5 22 1 -2 -3 -1

1.00x1+2.00x2+2.00x3=5.00

2.00x1+6.00x2+5.00x3=22.00

1.00x1-2.00x2-3.00x3=-1.00

|

-0.00x1+6.00x2+0.00x3=54.00

1.67x1+0.00x2+0.00x3=-1.67

0.00x1+0.00x2+0.60x3=-3.60

x1=-1.00000

x2=+9.000000

x3=-6.000000

(2)线性方程组的未知数个数 n=? 2

线性方程组的系数和常数项=?

1 2 3 1 2 4

1.00x1+2.00x2=3.00

1.00x1+2.00x2=4.00

|

1.00x1+2.00x2=3.00

0.00x1+0.00x2=1.00

主元素=0

(3)线性方程组的未知数个数 n=? 0

完毕.

除上面用C语言编写的二个通用计算程序外,在中学数学教学内容中还有一些计算算法可以用C语言编写其计算程序,限于篇幅,这里就不赘述了。

参考文献:

[1]谭浩强.C程序设计.第2版.北京:清华大学出版社,1999.