C语言程序设计实验报告-函数

时间:2024.4.21

C语言程序设计实验报告

1       实验目的

  掌握    C函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法。

  掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法。

  在编程过程中加深理解函数调用的程序设计思想。

2       实验内容

 1、  编写一个函数primeNum(int num),它的功能是判别一个数是否为素数。如果num是素数,返回该数;否则返回0值。

要求:(1)在主函数输入一个整数num,调用该函数后,输出num是否是素数的信息。输出格式为:num is prime或num is not prime。

     (2)分别输入以下数据:0,1,2,5,9,13,59,121,运行程序并检查结果是否正确。

2、编写函数computNum(int num),它的功能是计算任意输入的一个正整数的各位数字之和,结果由函数返回(例如:输入数据是123,返回值为6)。

要求:num由主函数输入,调用该函数后,在主函数内输出结果。

3、   编写函数,mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。

要求:(1)在主函数中输入一对数据a和b,调用该函数后,输出结果并加以相应的说明。例如:在主函数中输入:10,5,则输出:10 is multiple of 5.

     (2)分别输入下面几组数据进行函数的正确性测试:1与5、5与5、6与2、6与4、20与4、37与9等,并对测试信息加以说明。

4、编写一个计算组合数的函数combinNum(int m,int n)。计算结果由函数返回。

       计算组合数的公式是:

        c(m,n)=m!/(n!*(m-n)!)

要求:(1)从主函数输入m和n的值。对m>n,m<n和m=n的情况作分别理后调用函数combinNum(m,n),在主函数内输出结果值。

 (2)对m>n,m<n和m=n的情况各取一组数据进行测试,并检查程序的正确性。

 (3)(*)修改程序,把两个函数分别放在两个程序文件中,作为两个文件进行编译、链接和运行。

3       算法描述流程图

 

4       源程序

1

(2)

(3)

(4)

5       测试数据

(1)0,1,2,5,9,13,59,121

(2)123

(3)    1,5,5  5,6  2,6  4,20  4,37  9

(4)10,20  20,10   15,15

6       运行结果

(1)

(3)

(4)

7       出现问题及解决方法

 误将结束符“;”输为“,”误将头文件名输错,导致程序无法链接。

8       实验心得

这次试验我学会了C语言函数的定义方法、函数的调用方法、参数说明以及返回值。掌握实参与形参的对应关系以及参数之间的“值传递”的方式;掌握函数的嵌套调用及递归调用的设计方法。掌握全局变量和局部变量、动态变量与静态变量的概念和使用方法。


第二篇:C语言程序设计实验报告


C语言程序设计A 实验报告

实验名称 火车票订票系统

信息与通信学院 院(系)电子信息工程 专业

         班 第2实验小组

作者

学号

实验日期 20111229

.实验目的和要求

1.列车原始信息可以从文件导入或者控制台录入,包括车次、票数等;

2.客户可以按车次进行列车信息查询;

3.客户对某一天订票,订票成功后当日的票数能被更改;

4.客户能够退票;

5. 程序能够输出菜单,用户按照提示操作并最终能够得到相应操作结果;

6.熟练掌握并运用结构体。

.实验内容

   #include<stdio.h>

#include<string.h>

struct Piao

{

char b[4];

 int shu;

}abc[30]={{"t1",55},{"t2",68},{"t3",15},

{"t1",55},{"t2",68},{"t3",15},

{"t1",5},{"t2",28},{"t3",35},

{"t1",51},{"t2",48},{"t3",35},

{"t1",55},{"t2",68},{"t3",15},

{"t1",5},{"t2",28},{"t3",35},

{"t1",55},{"t2",68},{"t3",15},

{"t1",5},{"t2",28},{"t3",35},

{"t1",51},{"t2",48},{"t3",35},

{"t1",45},{"t2",28},{"t3",11}};

/* 定义数组结构体,并输入原始班次和票数*/

void banci()//定义查询班次的函数

{

   int j,c;

   char s[32];

   printf("请输入日期,1月");

   scanf("%d",&c);

   printf("请输入班次");

   scanf("%s",s);

   if(c>11)

          j=-1;

     else

        if(strcmp(s,"t1")==0)

             j=0;

            else

               if(strcmp(s,"t2")==0)

                 j=1;

            else

         if(strcmp(s,"t3")==0)

            j=2;

         else

                  j=-2;

                switch(j)

                {

                case -2:printf("很抱歉,没有你所要查询的班次\n");break;

                case -1:printf("很抱歉,还不能查询1月%d号的车票\n",c);break;

                default:printf("1月%d日班次%s的车票还有%d\n",c,s,abc[(c-1)*3+j].shu);

                }

}

 void dingpiao()//定义订票函数

{

    int j,c,f,i;

     char s[54];

     printf("请输入日期,1月");

     scanf("%d",&c);

     printf("请输入班次");

    scanf("%s",s);

 printf("请输入数量");

   scanf("%d",&i);

     if(c>11)

     printf("很抱歉,还不能购买1月%d号的车票\n",c);

      else

         if(strcmp(s,"t1")==0)

          j=0;

            else

               if(strcmp(s,"t2")==0)

                   j=1;

            else

         if(strcmp(s,"t3")==0)

            j=2;

      else

        printf("很抱歉,没有你所要查询的班次\n");

   if(i<abc[(c-1)*3+j].shu)

   f=abc[(c-1)*3+j].shu-i;

     else

          f=0;

     abc[(c-1)*3+j].shu=f;

   switch(f)

   {

   case 0:printf("很抱歉,票数不够\n");break;

   default:printf("以订票成功,1月%d号班次%s所剩票数%d\n",c,s, abc[(c-1)*3+j].shu);

   }

}

void tuipiao()//退票函数

{

  int j,c,i;

  char s[24];

   printf("请输入日期,1月");

   scanf("%d",&c);

   printf("请输入您所要退票的班次");

   scanf("%s",s);

   printf("请输入票数");

   scanf("%d",&i);

       if(c>11)

          printf("很抱歉,系统无法识别\n");

           else

           if(strcmp(s,"t1")==0)

              j=0;

             else

               if(strcmp(s,"t2")==0)

                 j=1;

             else

          if(strcmp(s,"t3")==0)

            j=2;

        else

          printf("很抱歉,系统中无该班次\n");

       abc[(c-1)*3+j].shu=abc[(c-1)*3+j].shu+i;

    printf("以退票成功,1月%d号班次%s所剩票数%d\n",c,s,abc[(c-1)*3+j].shu);

 }

void guanyu()

{

       printf("   制作小组         \n ");

    printf("        \n ");

       printf("               \n");

    printf("             \n");

    printf("            \n");

}

void tuichu()

       printf("您已经退出系统\n");

}

void ab()

{

      printf("系统无该选项\n");

}

void main()

{  int i;

  printf("                              火车订票系统               \n");

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

  printf("                              1,查看班次(t1,t2,t3)          \n");

  printf("                              2,火车订票                 \n");

  printf("                              3,退票                     \n");

  printf("                              4,制作小组                 \n");

  printf("                              5,退出系统                 \n");

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

  do

  {

  printf("                           请输入你要选择的功能");

  scanf("%d",&i);

  switch(i)

  {

   case 1: banci();break;

   case 2: dingpiao();break;

   case 3: tuipiao();break;

   case 4: guanyu();break;

   case 5: tuichu();break;

   default:ab();break;

  }

 }while(i!=5);

}

实验结果:

.分析与总结

分析:火车订票系统是利用了一下几种语法:

1:利用了函数的调用。我们先是把每个功能分开了编译,如void banci()//定义查询班次的函数,void dingpiao()//定义订票函数等等,然后用函数调用把整个函数调来使用,这样使得程序更加简单易懂,增加了可读性。

2:程序模块化。因为是使用函数调用,所以每个功能都是单独的一个程序。这样做出错的机会更小。如果出错,也便于检查是哪里出错。

3:使用数组结构体。在程序的开头我们用结构体,把字符串char b[4]和int shu合成一体。并用数组abc[30]作为结构体的参数名。把原始的班次和票数输入进去。这样以便调用。

4:在编写各个程序时多次用了if判断语句,for循环语句,switch条件判断语句。使得函数简单易懂。

5:程序在编写时把定义的函数放在开头处,而把主函数放在末尾,这样就可以免去在函数调用时区声明函数。使程序更加简洁。

总结:从拿到题目到整个编程的过程中,遇到或多或少的错误,我们发现了我们的不足之处,对以前学过的知识理解不够深,掌握得不够牢固,比如正如本题要求的结构体……通过了本小组成员的共同探讨,终于把问题一一克服,编出了该程序。回顾本次课程设计,我们从中学到了很多的东西,不仅可以巩固了以前所学到的知识,而且还可以提升自己的编程能力。通过了本次实验,我们明白了一个系统菜单和提示信息非常重要,如没有它们,用户根本不知道怎么运用你所设计的系统。同时也明白了理论和实际相结合时很重要的,只有理论知识是远远不够的,只有把所学的理论知识和实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考能力。学会了设计一个简单的系统要注意哪些方面,也使我们知道了自己哪些方面做得还不够。

我们总结出了一点点的经验如下:

1.       要对系统的功能和要求做出详细的分析,并合理分解成几个模块;

2.       对分解出来的模块进行独立设计;

3.       设计之前要构想分析运行界面显示情况;

4.       针对构想出来的界面进行程序的编写。

心得体会:通过这次程序设计,增加了我们对软件技术的了解,在学习C语言的过程中也学到和巩固了许多计算机应用基本知识。在具体操作中对所学过的C语言理论知识得到巩固加强,达到实训目的,也发现了自己的不足之处,为以后我们学习C语言奠定基础,同时体会到C语言具有的语句简洁、使用灵活、执行效率高等特点。通过实际操作,学会C语言程序编程的基本步骤、基本方法,开发了自己逻辑思维能力,培养了分析问题、解决问题的能力。

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告 --学生成绩管理系统

内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计论文题目学生成绩管理系统学生姓名胡书培学号1067111106专业计算机科学与技术班级10级计算机1班指导教师周李涌20xx年12月30日1内蒙古科技大学课...

C语言课程设计报告 学生学籍管理系统

信息学院课程设计报告课程名称C语言程序设计题目名称学生学籍管理系统学生学院信息学院专业班级计科12学号学生姓名指导教师20xx年12月26日1目录一设计目的与要求311题目与设计要求312本程序设计的知识点4二...

《C语言程序设计实践》课程报告

课程报告课程名称程序设计实践专业班级计算机科学与技术1205班学生姓名雷原康学号20xx16010522任课教师陈卫东学期20xx20xx学年第二学期1课程报告任务书成绩评定教师21需求分析经过大一上学期的理论...

C语言课程设计报告 学生选课系统加源代码

实践教学兰州理工大学计算机与通信学院20##年春季学期C程序设计课程设计题目:学生选课系统专业班级:通信工程1班姓名:学号:指导教师:成绩:摘要学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的…

c语言课程设计报告

青岛农业大学课程设计报告题目:使用菜单选择趣味程序姓名:学院:理学与信息科学学院专业:通信工程班级:2班学号:指导教师:年月日一设计目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系…

c语言程序设计课程设计报告(34篇)