C语言程序设计心得体会

C语言程序设计心得体会

                      

在设计打字游戏的过程中,通过我们小组各成员之间的相互讨论和合作,我们完成了打字练习的程序设计。在这个学期中,我们已经学习了《C 语言程序设计》这门课,但是我所学的知识最多也就是在做作业的时候才会用到,平时没有什么练习的机会,这次的设计是我第一次通过自己构思,和同学讨论并且不断查阅资料来设计一项程序。这次设计,不仅巩固了我以前所学的知识,还让我对c语言有了更深一步的了解,掌握了更多的技巧和技能。

C语言是计算机程序设计的重要理论基础,在我们以后的学习和工作中都有着十分重要的地位。要学好这种语言,仅仅学习课本上的知识是不够的,还要经常自己动手,有较强的实践能力。只有多动手,经常编写程序,才能发现我们学习上的漏洞和自己的不足,并在实践中解决这些问题,不断提高自己转化知识的能力。

在这次课程设计中,我们首先对系统的整体功能进行了构思,然后用结构化分析方法进行分析,将整个系统清楚的划分为几个模块,再根据每个模块的功能编写代码。而且尽可能的将模块细分,最后在进行函数的调用。我们在函数的编写过程中,我们不仅用到了for循环、while循环和switch语句,还用到了函数之间的调用。由于我们是分工编写代码,最后需要将每个人的代码放到一起进行调试。因为我们每个人写的函数的思想不都一样,所以在调试的过程中也遇到了困难,但经过我们耐心的修改,终于功夫不负有心人,我们成功了!

一学期的学习成果,都体现在了这次打字游戏的设计过程中。这个学期,我学得不算认真,一开始做感觉力不从心,但在几个同学的帮助和努力下,我翻阅课本,询问ACM大神,绞尽脑汁的情况下做完这个程序设计,我的自信一下子提高了。尽管对于有些人这种程序会很简单,可对我这个C语言初学者来说,已经很不容易了。这次体验为以后的学习计算机的我们增强了信心。享受劳动成果的滋味实在很美妙啊!

 

第二篇:c语言程序设计

第二章  程序设计报告

班级:12自动化2

编制人:  ads

2015.4

一、         程序要求:

编写程序实现基于塞尔维斯特准则的二次型标量函数的正定性判断。

二、任务需求分析:

二次型标量函数对应的矩阵,一般为实对称矩阵,可以根据赛尔维思特准则进行判断其正定性。因此首先需要判断其对应的矩阵是否为实对称矩阵,而实对称矩阵的定义是在该矩阵中对于任意元素a[i][j]=a[j][i]总成立。其次,根据赛尔维思特准则,先算出其各主子行列式即,△1,△2,△3,.....△n。

(1)若该实对称矩阵的各主子行列式均为正△1>0,△2>0,△3>0,.....△n>;则该矩阵对应的二次标量函数为正定。

(2)若对于该实对称矩阵的任一主子行列式△i,当i为偶数时△i>0且当i为奇数时△i<0,则该矩阵对应的二次标量函数为负定。

三、程序设计流程图:

 


四、程序设计实现:

输入:系数矩阵的介数n、和矩阵A;

输出:判断是否为实对称矩阵的结果;若为实对称矩阵,并將输出其各主子行列式的值,以及判断其对应的二次型标量函数是否为正定的结果。

五、程序验证与测试:

1.      当输入矩阵不是是对称矩阵时

2.当输入的矩阵为实对称矩阵时:

六、程序源代码:

#include <stdio.h>

#include <stdlib.h>

#define N 10                       /*定义最大为10阶行列式*/

int Fun(int m, int a[N][N] );            /*函数声明*/

int judge(int n, int a[N][N] );      //判断是否为实对称的函数

int main()

{

    int n = 0, m = 0;                       /*初始化阶数n*/

    int i = 0, j = 0;

     int d,h=0,l=0;

    int a[N][N] = {{0}};             /*定义行列式*/

     printf("请输入矩阵介数:\n");

    scanf("%d",&n);                   /*读入阶数*/

    printf("输入矩阵的各元素为:\n");

     while(1)

     {

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

         {

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

              scanf("%d", &a[i][j]);

         }

         if (judge(n,a))

         {

              printf("矩阵的各主子行列式为:");

              while(1)                 

              {  

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

                   {  

                       printf("\n △%d  =  %d\n",m,Fun( m, a ) );

                       if (Fun(m,a)>0) h++;else h--;

                       if (m%2==0) {if(Fun(m,a)>0)l++;else l--;}

                       else {if(Fun(m,a)<0)l++;else l--;}

                   }

                   if (h==n)

              printf("此矩阵对应的二次型标量函数为正定\n");

                   else if(l==n)

                   printf("此矩阵对应的二次型标量函数为负定\n");

                   else printf("此矩阵对应的二次型标量函数既不是正定也不是负定\n");

                   return 0;

              }

        

         }

         else printf ("此矩阵不是实对称矩阵\n请重新输入:\n");

     }

     return 0;

}

int Fun( int m, int a[N][N] )

{

    int b[N][N] = {{0}};            /*定义数组b并初始化*/

    int i = 0, j = 0, sum = 0;             int x = 0, c = 0, p=0;               

    if(m == 1)

    return a[0][0];

    for(i = 0;i < m; i++)                   {

        for(c = 0;c < m-1; c++)

        {

            for(j = 0;j < m-1;j++)

            {

                if (c < i)

                   {                      

                    p = 0;                 

           }

                else{  p = 1; } b[c][j] = a[c+p][j+1];}

        }

        if(i % 2 == 0)  x = 1;       

        else  x = (-1);            /*i+j为奇数,减法运算*/

          

       

         sum += a[i][0] * Fun(m - 1, b ) * x;            }

    return sum;                                   }

int judge(int n, int a[N][N] )     //判断是否为实对称矩阵

{  

     int i,j,k=0;

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

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

     {

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

         k++;

         else k--;

        

     }

     if(k==n*n)

     {

         printf("该矩阵为实对称矩阵\n");

         return 1;

     }

     else  return 0;

}

相关推荐