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

时间:2024.4.21

C语言程序设计》

课程设计报告

(2011 2012学年  第 1 学期)

题    目:              

专    业:            

班    级:             

姓名学号:             

             

指导教师:             

成    绩:              

计算机科学与技术系

 2011 年12月31


       

一、课程设计的目的与要求………………………………………1

二、方案实现与调试 ……………………………………………2

2.1 骰子游戏…………………………………………………2

2.2射击游戏 …………………………………………………3

2.3汽车加油 …………………………………………………4

2.4大优惠………………………………………………………5

2.5金币…………………………………………………………6

2.6小型图书馆系统 …………………………………………7

三、课程设计分析与总结…………………………………………9

附录 程序清单…………………………………………………10



二、设计要求

根据实验内容的要求自由选定题目。编写程序要求遵循如下基本要求:

l  模块化程序设计

l  锯齿型书写格式

l  必须上机调试通过

二、方案实现与调试

2.1.1骰子游戏

?2.1.1 题目内容的描述

两人玩骰子,游戏规则如下:

1)  两人轮流掷骰子,每次掷两个,每人最多掷10次。

2)  第一个人投出的数,第二个人投出的数将每人每次的分值累加计分

3)  当两个骰子点数都为6时,计8分;当两个点数相等且不为两个6时,计7分;当两个点数不一样时,计其中点数较小的骰子的点数。

4)  结束条件:当双方都掷10次或经过5次后一方累计分数为另一方的两倍。最后显示双方分数并判定优胜者。

?2.1.2输入数据类型、格式和内容限制和输出数据的说明

数据类型:整型;内容限制:随机数的产生;输入数据结果:胜利的一方

?2.1.3主要模块的算法描述

思路过程:

1.  随机产生随机数

2.  进行算法输出数值

3.  执行条件判断输入结果

4.  比较结果,判断胜利的一方

2.1.4调试过程及实验结果

编辑过程中遇到的困难有:

1.       编程思路不正确,导致只有部分结果满足要求。

2.       编程过程缺乏改错耐心。

实验结果图示如下:

2.2射击游戏

?2.2.1题目内容的描述

在程序运行时屏幕上方第一行随机出现一个    符号,要求游戏者输入一个1-80之间的整数,当用户输入一个整数后,一个*立即从屏幕底端的该整数列向上移动,若移动到屏幕的顶端能撞上    符号,则游戏者获胜;若没有撞上,则要求再输入一个整数,共允许输入5次,如果一直没有撞上,则认为游戏者输。

?2.2.2输入数据类型、格式和内容限制和输出数据的说明

System(“cls”);清楚屏幕,

?2.2.3主要模块的算法描述

清楚屏幕

然后循环每行输出*

依次循环,判断是否击中目标

5次输入结束,或者击中目标结束

?2.2.4调试过程及实验结果

该题中大体循环是以次数,还是循环的结果作为判断,弄不清楚

记录程序执行的结果。

2.3汽车加油

?2.3.1题目内容的描述

一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。输入:第一行有2 个正整数N和K(1 <= N <= 100,1 <= K< = 100),表示汽车加满油后可行驶N公里,且旅途中有K个加油站。接下来的1 行中,有K+1 个整数,表示第K个加油站与第K-1 个加油站之间的距离。第0 个加油站表示出发地,汽车已加满油。第K+1 个整数表示第K个加油站与目的地的距离。输出:将编程计算出的最少加油次数输出。如果无法到达目的地,则输出 No Solution。(注意:No和Solution之间有一个空格)。

?2.3.2输入数据类型、格式和内容限制和输出数据的说明

   数组类型,循环条件判断

?2.3.3主要模块的算法描述

 按题目格式输入数据;

 首先进行判断可行驶的路程是否足够汽车到达加油站;

如果不能到达,则需要加油,此处记录一次并循环;

   得出结果;

?2.3.4调试过程及实验结果

2.4大优惠

?2.4.1题目内容的描述

中国移动推出最新的手机资费优惠方案,按照这个方案Tom的手机每天消费1元,每消费K元就可以获赠1元,一开始Tom有M元,问最多可以用多少天?

?2.4.2输入数据类型、格式和内容限制和输出数据的说明

  整型,算法的应用,内容数字的限定;

?2.4.3主要模块的算法描述

思考数据间的关系;

分析K与天数的关系;

按M值递减的方式运算;

?2.4.4调试过程及实验结果

实验中所遇到的困难是:

没有注意到题目中给定的限制范围。

实验结果图示:

 

2.5大优惠

?2.5.1题目内容的描述

国王用金币奖励他忠诚的侍从。第一天侍从工作结束后,国王奖励了他一个金币;接着的两天侍从工作中(第二天,第三天)的每一天,国王奖励了他两个金币;接着的三天侍从工作中(第四天,第五天,第六天)的每一天,国王奖励了他三个金币;接着的四天侍从工作中(第七天,第八天,第九天,第十天)的每一天,国王奖励了他四个金币。这种奖励的模式将是固定不变的,即在N天侍从工作中的每一天,国王将奖励他N个金币;接着的N+1天的侍从工作中的每一天,国王将奖励他N+1个金币。

要求在给定的天数时,你的程序能够统计国王总共奖励了侍从多少金币。

?2.5.2输入数据类型、格式和内容限制和输出数据的说明

  整型,算法的应用,内容数字的限定;

?2.5.3主要模块的算法描述

思考数据间的关系;

分析天数与获得金币的关系(类金字塔);

进行总求和;

?2.5.4调试过程及实验结果

循环条件的出口判断不明确;

求和处理不简约;

实验结果图示:

2.6小型图书管理系统设计

?2.6.1题目内容的描述

功能:实现某班级的图书信息管理,图书的基本信息包括书号、书名、作者、单价、数量和简介(50字内)等。

?2.6.2系统功能说明

1设计简单的菜单,能够进行系统功能选择。

2实现信息的录入功能。

3在已有信息的基础上添加新的记录。

4删除指定书号的记录。

5修改指定书号的记录

6实现信息的浏览功能

7按书号查询功能

?2.6.3输入数据类型、格式和内容限制和输出数据的说明

   结构体:分割成几块

   分别对其定义,并实现功能;

   最后实现菜单,执行选择;

?2.6.4系统主要模块的算法描述

–结构体:分割成几块

   分别对其定义,并实现功能;

   最后实现菜单,执行选择;

?2.6.5调试过程及实验结果

详细记录程序在调试过程中出现的问题及解决方法。

记录程序执行的结果。

三、课程设计分析与总结

学习C语言的过程中,深刻认识到实践是最好的老师,对于一个初学者来说,编程经验好比身边携带的熟悉事物,必须掌握熟悉之后才能有所发挥,有所作为。从实践中的点滴积累起来的,就是所谓的经验,通过不断的上机编程,不但能够几下那些常用的函数和代码,熟悉程序的结构,从而使我们暂时脱离课本的本来编程可能够积累更多的敬仰。

提高程序设计能力的一个重要的途径就是学习书上别人编写的程序,从中掌握解决问题的核心方法和关键步骤。只有知道语言的特点和构造后,才能达到自己编写的程度,并在不断的编程过程中学习,提高。

附录:源程序清单

第一题:

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void main()

{

    int i,j,k,b,n,m,add1=0,add2=0;

    srand( (unsigned)time( NULL ) );  //生成随机数发生器

    for(i=1; i<11; i++)

    { 

       for(b=1;b<60000000;b++);

       printf("第一个人第%d次投出的数\n",i);

       j=rand()%6+1;

       printf("%d\n",j);

       k=rand()%6+1;

       printf("%d\n",k);

       if(k==j==6) add1=add1+8;

        if(k==j==5||k==j==4||k==j==3||k==j==2||k==j==1)

           add1=add1+7;

       else

           if(k>j)

              add1=add1+j;

           else

              add1=add1+k;

       printf("第二个人第%d次投出的数\n",i);

       m=rand()%6+1;

       printf("%d\n",m);  //rand()产生随机数

       n=rand()%6+1;

       printf("%d\n",n);

       if(n==6||m==6) add2=add2+8;

        if(n==m==5||n==m==4||n==m==3||n==m==2||n==m==1)

           add2=add2+7;

       else

           if(n>m)

              add2=add2+m;

           else

              add2=add2+n;

if(i==6)

          if(add1==2*add2||add2==2*add1)

             i=10;

}

        printf("第一个人分值累加计分%d\n",add1);

        printf("第二个人分值累加计数%d\n",add2);

        if(add1>add2)

            printf("第一个人胜利");

        if(add2>add1)

           printf("第二个人胜利");

 第二题:

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

void main()

{

    int i,j,n,t,m;

    long int k;

    printf("*****************Welcome*****************");

    printf("\nGame Begin:\n");

    srand((unsigned)time(NULL));

   n=rand()%80+1;

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

   printf(" ");

   printf("%c\n",'\1');

        for(m=0;m<5;m++)

    {

       scanf("%d",&t);

       for(j=10;j>0;j--)

      {

           system("cls");

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

         {

           if(i==n) printf("%c",'\1');

           else printf(" ");

         }

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

             printf("\n");

          for(k=0;k<80;k++)

        {

          if(k==t) printf("*");

          else printf(" ");

        }

       for(k=0;k<100000;k++);

      }

      if(t==n)

     {

      printf("Your Winner\n");

      break;

     }

      if(m==4)

      printf("You Lose\n");

   }

}

第三题:

#include <stdio.h>

void main()

{

   int k,i,n,a,x[999],m=0,o=0;

   printf("输入:");

   scanf("%d%d",&n,&k);

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

   {

      scanf("%d",&a);

      x[i]=a;

   }

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

   {

      if(n<x[i])

      {

          printf("No Solution.\n");

         break;

      }

        else

         m=m+x[i];

          if(n<m)

         {

            o++;

             m=x[i];

         }

         if(i==k)

         printf("输出:%d\n",o);

   }

}

第四题:

#include<stdio.h>

void main()

{

   int K,M,i=0;

   printf("Please input K and M\n");

   scanf("%d%d",&K,&M);

    if(2<=K&&K<=M&&M<=1000)

   { 

      while(M>0)

      {  i++;

          M=M-1;

         if(i%K==0) M=M+1;

      }

      printf("可用天数%d\n",i);

   }

   else

      printf("Input is error");

}

第五题:

#include<stdio.h>

void main()

{

   int i,j;

   int sum=0;

   printf("Please input days\n");

   scanf("%d",&j);

   for(i=1;j!=0;i++)

   {

      if(j>=i)

         sum=sum+i*i,j=j-i;

      else

         sum=sum+j*i,j=0;

   }

printf("得到的金币%d\n",sum);

}

   第六题  :

#include<stdio.h>

#include<stdlib.h>

int sum=0;

struct book

{

    int num;

    char name[100];

    char person[100];

    char about[100];

    int p;

    int n;

}book[1000];

void newbook()

{

    int a;

    system("cls");

    printf("\n请输入书号:");

    scanf("%d",&a);

   if(book[a-1].num!=0)

    {

        printf("\n该书号已有书\n");

        getchar();

        return;

    }

    else

    {

        printf("\n请输入图书内容:\n");

        printf("书号:");

scanf("%d",&book[a-1].num);

        printf("书名:");

scanf("%s",&book[a-1].name);

        printf("作者:");

scanf("%s",&book[a-1].person);

        printf("简介:");

scanf("%s",&book[a-1].about);

        printf("单价:");

scanf("%s", &book[a-1].p) ;

printf("数量:");

scanf("%s",&book[a-1].n);

        ++sum;

        return;

    }

}

void find()

{

   

    int a;

    system("cls");

    printf("\n请输入您要查找的书号:");

    scanf("%d",&a);

    if(book[a-1].num==0)

    {

        printf("无书号信息");

        getchar();

        return;

    }

        printf("书号:");

printf ("%d",&book[a-1].num);

        printf("书名:");

printf ("%s",book[a-1].name);

        printf("作者:");

printf ("%s",book[a-1].person);

        printf("简介:");

printf ("%s",book[a-1].about);

        printf("单价:");

printf ("%s", &book[a-1].p) ;

printf("数量:");

printf ("%s",&book[a-1].n);

  

    getchar();

    return;

}

void change()

{

    int a;

    system("cls");

    printf("\n请输入您要查找的书号:");

    scanf("%d",&a);

    if(book[a-1].num==0)

    {

        printf("无书号信息");

        getchar();

        return;

    }

        printf("书号:");

printf ("%d",book[a-1].num);

        printf("书名:");

printf ("%s",book[a-1].name);

        printf("作者:");

printf ("%s",book[a-1].person);

        printf("简介:");

printf ("%s",book[a-1].about);

        printf("单价:");

printf ("%s", &book[a-1].p) ;

printf("数量:");

printf ("%s",&book[a-1].n);

  

        printf("输入要修改的内容:\n");

        printf("书号:");

scanf("%d",&book[a-1].num);

        printf("书名:");

scanf("%s",&book[a-1].name);

        printf("作者:");

scanf("%s",&book[a-1].person);

        printf("简介:");

scanf("%s",&book[a-1].about);

        printf("单价:");

scanf("%s", &book[a-1].p) ;

printf("数量:");

scanf("%s",&book[a-1].n);

    return;

}

void dele()

{

    int a;

    system("cls");

    printf("\n请输入您要删除的书号:");

    scanf("%d",&a);

    if(book[a-1].num==0)

    {

        printf("无书号信息");

        getchar();

        return;

    }

        printf("书号:");

printf ("%d",book[a-1].num);

        printf("书名:");

printf ("%s",book[a-1].name);

        printf("作者:");

printf ("%s",book[a-1].person);

        printf("简介:");

printf ("%s",book[a-1].about);

        printf("单价:");

printf ("%s", &book[a-1].p) ;

printf("数量:");

printf ("%s",&book[a-1].n);

  

  

    printf("\n\n按回车删除此书信息\n");

    getchar();

    book[a-1].num=0;

    return;

}

void look()

{

    int a;

    system("cls");

        for(a=0;a<1000;a++)

        {

            if(book[a-1].num!=0)

            {

        printf("书号:");

printf ("%d",book[a-1].num);

        printf("书名:");

printf ("%s",book[a-1].name);

        printf("作者:");

printf ("%s",book[a-1].person);

        printf("简介:");

printf ("%s",book[a-1].about);

        printf("单价:");

printf ("%s", &book[a-1].p) ;

printf("数量:");

printf ("%s",&book[a-1].n);

  

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

            }

        }

    getchar();

    return;

}

 void main()

{

        m:int n;

        system("cls");

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

      printf("图书管理系统\n\n操作选单\n\n");

       

      printf("\t\t1 输入图书\t2 查找图书\n");

       

      printf("\t\t3 修改图书\t4 删除旧书\n");

       

      printf("\t\t5 浏览图书\t0 退出程序\n");

      

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

       

      printf("\n请输入选项:");

        scanf("%d",&n);

        switch(n)

        {

        case 1:newbook();break;

        case 2:find();break;

        case 3:change();break;

        case 4:dele();break;

        case 5:look();break;

        case 0:exit(0);break;

        }

    getchar();

    goto m;

}

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

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

c语言课程设计报告

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

C语言课程设计报告

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

C语言课程设计报告范例

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

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

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

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

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

C语言课程信息管理系统课程设计报告

《C语言程序设计》课程设计报告专业:班级:姓名:指导教师:二零##年十二月二十六日目录一、设计题目2二、设计目的2三、设计内容23.1需求分析23.2概要设计33.3详细设计63.5编写过程中遇到的问题及解决办…

C语言课程设计报告(约瑟夫环)胡存夫

沈阳航空航天大学课程设计报告课程设计名称C语言课程设计课程设计题目约瑟夫环院系计算机学院专业计算机科学与技术班级3410301学号20xx040103023姓名胡存夫指导教师丁一军沈阳航空航天大学课程设计报告目...

c语言程序设计报告

课程设计报告课程名称C语言程序设计课题名称运动会分数统计系统专业机械设计及其自动化班级1185班学号***姓名**指导教师**20XX年6月22日湖南工程学院课程设计任务书课程名称C语言程序设计课题运动会分数统…

C语言程序设计报告—学生选修课程系统

C语言程序设计学校:中国地址大学学院:工程学院班级序号:学号:姓名:指导老师:C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。其目的…

C语言课程设计报告书样本

海南大学三亚学院C语言程序设计课程设计贪吃蛇算法专业计算机科学与技术班级计科1001姓名杨凯文题目学号指导老师李春林目录C语言程序设计课程设计11程序要求32程序分析与设计33流程图44源程序清单45调试过程1...

C语言程序设计报告

二一一年九月设计要求题目三通讯录管理系统任务自学C语言中相关知识设计出通讯录管理系统要求如下所述建立通讯录信息信息至少包含编号姓名年龄电话通讯地址电子邮箱等能够提供添加删除和修改通讯录信息的功能并给出确认是否保...

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