求一份C语言课程设计报告要求包括:系统需求分析,总体设计,详细设计,程序调试分析。 题目:2003

2024-05-05 12:09

1. 求一份C语言课程设计报告要求包括:系统需求分析,总体设计,详细设计,程序调试分析。 题目:2003

C语言课程设计报告我有很多,都是原创作品,

求一份C语言课程设计报告要求包括:系统需求分析,总体设计,详细设计,程序调试分析。 题目:2003

2. 我是大一生,求一份c语言课程设计报告书,模板如下 1.设计题目与要求 2.设计分析 3.源程序及重

求一份c语言课程设计报告书 
觉得可以考虑更多,具体分析

3. C语言课程设计报告要求

  一 、 设计题目


  万年历的设计


  二 、设计要求


  1、能够显示星期;

  2、能够显示年月日;

  3、能够修改;

  4、当系统时间变动时,能自动跳到相应的时间。


  三 、 设计目的


  1.      通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固《C语言程序设计》课程学习的内容,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!更加了解了c语言的好处和其可用性!同时增加了同学之间的团队合作精神!更加也体会到以后在工作中团队合作的重要性和必要性!


  2.      通过C语言课程设计,使学生了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。


  四 、设计思想及过程


  【一】由于万年历具有以下特点:


  1。平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。

  由于公元1月1日设为星期六,故3月1日为星期三。         ——注意这个“三”

  为使算法达到最简,故本算法以“星期”为计算单位。且选3月1日为基月。


  2。每400年整一闰,或每4年且不为百年的一闰。(原因:地球绕太阳一周的时间是365天5小时46秒,为了使一年的天数为整数,将一年的天数定为365天,余下的时间积累起来,四年就是23小时15分4秒,将近一天,把这一天加在某年的二月而成29天,该年称为闰年,其它年称为平年。但四年加一天又多用了44分56秒,这个数积满400年为三天。因此400年中只能有97个闰年,所以凡能被400整除,或不能被100整除但能被4整除的年份为闰年。)

  所以百年%4=0闰或(年%4=0并且年0)闰。


  3。每 4年(3个平年+1个闰年)共208周+5天                  ——注意这个“5天”

  每百年共100*(208周+5天)-1天=5217周+5天              ——注意这个“5天”(整百年暂设为平年)

  每400年共4*(5217周+5天)+1天(整400年闰)=20871周+0天——注意这个“0天”和

  “1天”(4个整百年只有一个闰年)

  即400年一轮回!(原来万年历400年前是一家)


  【二】根据万年历以上特点进行编写:


  首先对万年历年、月、日进行编写,编写程序先定义每月的天数为28天,如月份为1、3、5、7、8、10、12就定义天数为31天反之如果月份为4、6、9、11就输出天数为30天,由上可见2月份为28天但是如果为闰年就有29天就要定义另一个函数#define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0当为闰年时可得1加上该程序便可得到每月的天数。 具体程序见(五、万年历程序)


  再对其中的星期进行编写:由于公元1月1日设为星期六,故3月1日为星期三,可以用万年3月1日星期算法(特别是那个三)

  由于其公式为:

  某年3月1日星期几=(3天+百年%4*5天+年/4*5天+年%4+月星期表+日-1天)%7

  某年3月1日星期几=(百年%4*5天+年/4*5天+年%4+月星期表+日+2天)%7

  或    某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7


  闰4百年3月1日星期算法(百年%4=0)

  其公式为:

  某年3月1日星期几=(年+年/4+月星期表+日+2天)%7


  例:0000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

  1600年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

  2000年3月1日星期几=(0+0/4+0+1+2)%7=3%7=星期三

  2001年3月1日星期几=(1+1/4+0+1+2)%7=4%7=星期四

  2004年3月1日星期几=(4+4/4+0+1+2)%7=8%7=星期一

  2008年3月1日星期几=(8+8/4+0+1+2)%7=13%7=星期六

  2042年3月1日星期几=(42+42/4+0+1+2)%7=55%7=星期六


  平4百年3月1日星期算法(百年%40)

  其公式为:

  某年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7


  例:1700年3月1日星期几=(17%4*5+0+0/4+0+1+2)%7=8%7=星期一(注意:1700年是平年)

  1800年3月1日星期几=(18%4*5+0+0/4+0+1+2)%7=13%7=星期六(注意:1800年是平年)

  1900年3月1日星期几=(19%4*5+0+0/4+0+1+2)%7=18%7=星期四(注意:1900年是平年)

  1901年3月1日星期几=(19%4*5+1+1/3+0+1+2)%7=19%7=星期五

  1918年3月1日星期几=(19%4*5+18+18/4+0+1+2)%7=(15+22+3)%7=40%7=星期五

  1958年3月1日星期几=(19%4*5+58/4*5+58%4+3)%7=(15+70+2+3)%7=90%7=星期六

  1988年3月1日星期几=(19%4*5+88/4*5+88%4+3)%7=(15+110+0+3)%7=128%7=星期二

  1999年3月1日星期几=(19%4*5+99/4*5+99%4+3)%7=(15+120+3+3)%7=141%7=星期一

  2100年3月1日星期几=(21%4*5+0/4*5+0%4+3)%7=(5+0+0+3)%7=8%7=星期一(注意:2100年是平年)

  2101年3月1日星期几=(21%4*5+1/4*5+1%4+3)%7=(5+0+1+3)%7=9%7=星期二

  2102年3月1日星期几=(21%4*5+2/4*5+2%4+3)%7=(5+0+2+3)%7=10%7=星期三

  2103年3月1日星期几=(21%4*5+3/4*5+3%4+3)%7=(5+0+3+3)%7=11%7=星期四

  2104年3月1日星期几=(21%4*5+4/4*5+4%4+3)%7=(5+1+0+3)%7=9%7=星期二(注意:2104年是闰年)

  9999年3月1日星期几=(99%4*5+99/4*5+99%4+3)%7=(120+15+3+3)%7=141%7=星期一


  注:按400年一轮回!(400年前是一家)的说法

  1600年,2000年是一样的;

  1700年,2100年是一样的;

  1800年,2200年是一样的;

  1900年,2300年是一样的。


  其中万年某日星期算法

  其公式为:

  某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7

  通同星期偏差表

  闰年  1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

  天数   31  29  31  30  31  30  31  31  30  31   30   31

  星期   3   6   0   3   5   1   3   6   2   4    0    2

  平年  1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月

  天数   31  28  31  30  31  30  31  31  30  31   30   31

  星期   4   0   0   3   5   1   3   6   2   4    0    2


  为对以上的万年历星期的算法是正确的对其进行了以下的计算:


  ⒈对于二十世纪任意日期可以用公式某日星期几=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根据上面对其进行的计算:


  1900年元旦       1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4

  1月表=4(平年)    故 4+4=1 即1900年元旦是星期一

  1949年国庆      1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2

  10月表=4(平年)    故 4+2=6 即1949年国庆是星期六

  1999年12月31日 31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3

  12月表=2(平年)    故 2+3=5 即1999年12月31日是星期五


  ⒉对于二十一世纪新前年虫算法(20%4*5=0)可以用公式:某日星期几=(百年%4*5天+年+年/4+闰年月星期表+日+2天)%7 =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7以下就是根据上面对其进行的计算:


  2000年元旦      1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3

  1月表=3(闰年)    故 3+3->6 即2027年元旦是星期六

  2018年春节     16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5

  2月表=0(平年)    故 0+5=5 即2018年春节是星期五

  2099年12月31日 31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2

  12月表=2(平年)    故 2+2=4 即2099年12月31日是星期四


  对于上面的分析以及公式的推论和计算证明可以对万年历中的星期进行了编写具体编写程序见(五 、万年历程序)中。


  五 、万年历源程序


  #include"stdio.h"

  #include"dos.h"

  #include"conio.h"

  #include"stdlib.h"

  #define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0 /*判断闰年*/


  int numofMonth(int y,int m){

  int day,t=28;

  if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)

  day=31; /*定义以上月份为31天*/

  else if(m==4||m==6||m==9||m==11)

  day=30; /*定义以上月份为30天*/

  else{t+=Year(y);

  day=t;} /*闰年二月29天,平年28天*/

  return day;}

  int numofYear(int y){

  int t=365; /*平年365天*/

  t+=Year(y);/*闰年366天*/

  return t;}

  int numofbeforeDays(int y,int m,int d){

  int sum=d,i;

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

  sum+=numofMonth(y,i);

  return sum;}

  int numofafterDays(int y,int m,int d){

  int sum=0,i;

  for(i=m;i<=12;i++)

  sum+=numofMonth(y,i);

  sum-=d;

  return sum;}

  int isDay(int y,int m,int d){

  int year=1900,month=1,week=1,i; /*定义万年历是从1900年开始*/

  long sum=0;

  for(i=year;i<y;i++)

  sum+=numofYear(i);

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

  sum+=numofMonth(y,i);

  /* ++sum;*/

  i=sum%7;

  week=(week+i)%7;

  return week;}

  void empty(int n){

  int i;

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

  printf("%*c",6,' ');}

  void OutPutCalender(int y,int m,int d)/*计算x年x月x是星期几*/{

  int week,i,num,t;

  week=isDay(y,m,1);

  printf("%6d/%02d/%02d\n",y,m,d);

  printf("%6s%6s%6s%6s%6s%6s%6s\n","Sun","Mon","Tue","Wed","Thu","Fri","Sat");

  empty(week);

  num=numofMonth(y,m);

  for(i=1;i<=num;i++){

  printf("%6d",i);

  t=(week+i)%7;

  if(t==0)

  printf("\n");} /*光标移到下一行*/

  printf("\n");}

  long numBTDays(int y1,int m1,int d1,int y2,int m2,int d2)/*定义两个不同日期*/{

  int i;

  long sum=0;

  for(i=y1+1;i<y2;i++)

  sum+=numofYear(i);

  if(y1==y2){ sum-=d1;

  for(i=m1;i<m2;i++)

  sum+=numofMonth(y1,i);

  sum+=d2;}

  else{sum+=numofafterDays(y1,m1,d1);

  sum+=numofbeforeDays(y2,m2,d2);}

  return sum;}

  int Select_mean(){

  int sm;

  printf("1. OutPut Calender\n"); /*输出当前月份的日历*/

  printf("2. Help\n"); /*帮助*/

  printf("0. Quit\n"); /*退出*/

  printf("Please enter choose(0--2):"); /*从0-2中选择*/

  do

  scanf("%d",&sm); /*输入sm*/

  while(sm3);

  return sm;}

  void Help()/*输出帮助栏的内容*/{

  printf(" 1. OutPut Calender\n");

  printf(" 2. System Help\n");

  printf(" 0. Quit\n");

  printf("Page Up: Up year\n"); /*上一年*/

  printf("Page Down: next year\n"); /*下一年*/

  printf(" --> : next month\n"); /*上一月*/

  printf(" <-- : Up month\n");/*下一月*/}


  main(){

  int year=2006,year1=2006,month,day,y1,m1,d1,y2,m2,d2,c,t; /*定义运行后的日期是2006年*/

  int inkeySCAN,inkey; /*输入键盘操作信息*/

  union REGS inregs,outregs;

  inregs.h.ah=0x2a;

  intdos(&inregs,&outregs);

  /* year=outregs.xcx; */

  month=outregs.h.dh;

  day=outregs.h.dl;

  year1=year;

  printf("%d/%02d/%02d\n",year,month,day);

  while(1)/*当选择为1时,执行以下语句*/{

  switch(Select_mean()){

  case 1:

  OutPutCalender(year,month,day);

  while(1){

  inkey=bioskey(0);

  inkeySCAN=(inkey&0xFF00)>>8;

  if(inkeySCAN==77){

  if(month==12){month=1;year1++;

  OutPutCalender(year1,month,day);/*输出日历*/}

  else{month++;

  OutPutCalender(year1,month,day);

  }}

  if(inkeySCAN==75){

  if(month==1){month=12;year1--;

  OutPutCalender(year1,month,day);}

  else{month--;OutPutCalender(year1,month,day);}}

  if(inkeySCAN==73){

  if(year1==1900) year1=year;

  else{year1--;OutPutCalender(year1,month,day);}}

  if(inkeySCAN==81){

  year1++;OutPutCalender(year1,month,day);}

  if(inkeySCAN==28)break;}

  break; /*终止循环*/

  case 2:

  Help();

  break;

  case 0:

  exit(0);

  default:

  printf("Enter ERROR!\n");

  break;} }

  }


  六 运行过程

  1.双击TC


  1.    当对上面的程序进行了调试后运行会出现下面所示:


  第一行所显示的就是系统时间!满足了第一条要求“显示年、月、日”。

  而当改变系统时间后!再运行该程序上面的日期也随系统时间改变,所以满足第四条“当系统时间变动时,能自动跳到相应的时间。”


  2.    在光标处按下“1”后回车,将会显示:


  以上的显示也证明了条件的第2条可以“显示星期!”


  3.    在光标处按下“2”后回车,将会显示:


  按着帮助所讲进行了运行可知:按“ Page Up ”键其下面接着会显示上一年该月的万年历,按“ Page Down ”键其下面会接着显示下一年该月的万年历;按“ ← ”键下面将会接着显示当年上一个月的万年历,按“ → ”键将会接着在下面显示去下一个月的万年历。


  4.


  由上所显示键入“0”后将会退去该程序。

  由以上运行的结果可知该c语言所设计的万年历满足设计要求!


  七、在C语言编程中常见错误


  C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么严格,这就给我们留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对我们这些初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起,我通过这次编程,也积累了一些C编程时常犯的错误:


  1.      书写标识符时,忽略了大小写字母的区别。
  编译程序把a和A认为是两个不同的变量名,而显示出错信息。C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。


  2.忽略了变量的类型,进行了不合法的运算。
  %是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。


  3.将字符常量与字符串常量混淆。
  混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a'和‘\',而把它赋给一个字符变量是不行的。


  4.忽略了“=”与“==”的区别。
  在C语言中,“=”是赋值运算符,“==”是关系运算符。如:
  if (a==3) a=b;
  前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。


  5.忘记加分号。
  分号是C语句中不可缺少的一部分,语句末尾必须有分号。
  a=1 b=2
  编译时,编译程序在“a=1”后面没发现分号,就把下一行“b=2”也作为上一行语句的一部分,这就会出现语法错误。改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。
  { z=x+y;
  t=z/100;
  printf("%f",t);
  }
  对于复合语句来说,最后一个语句中最后的分号不能忽略不写(这是和PASCAL不同的)。


  6.多加分号。
  对于一个复合语句,如:
  { z=x+y;
  t=z/100;
  printf("%f",t);
  };
  复合语句的花括号后不应再加分号,否则将会画蛇添足。
  又如:
  if (a%3==0);
  I++;
  本是如果3整除a,则I加1。但由于if (a%3==0)后多加了分号,则if语句到此结束,程序将执行I++语句,不论3是否整除a,I都将自动加1。
  再如:
  for (I=0;I<5;I++);
  {scanf("%d",&x);
  printf("%d",x);}
  本意是先后输入5个数,每输入一个数后再将它输出。由于for()后多加了一个分号,使循环体变为空语句,此时只能输入一个数并输出它。


  7.输入变量时忘记加地址运算符“&”。
  int a,b;
  scanf("%d%d",a,b);
  这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“&a”指a在内存中的地址。


  8.输入数据的方式与要求不符。scanf("%d%d",&a,&b);输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法:
  3,4
  输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab。
  scanf("%d,%d",&a,&b);C规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时应输入与这些字符相同的字符。下面输入是合法的:
  3,4
  此时不用逗号而用空格或其它字符是不对的。
  3 4 3:4
  又如:
  scanf("a=%d,b=%d",&a,&b);
  输入应如以下形式:
  a=3,b=4


  9.输入字符的格式与要求不一致。
  在用“%c”格式输入字符时,“空格字符”和“转义字符”都作为有效字符输入。
  scanf("%c%c%c",&c1,&c2,&c3);
  如输入a b c
  字符“a”送给c1,字符“ ”送给c2,字符“b”送给c3,因为%c只要求读入一个字符,后面不需要用空格作为两个字符的间隔。


  10.输入输出的数据类型与所用格式说明符不一致。
  例如,a已定义为整型,b定义为实型
  a=3;b=4.5;
  printf("%f%d\n",a,b);

  语法错
  逻辑错 运行错
  0.忘记定义变量:
  main()
  {x=3;y=6;
  printf(“%d\n”,x+y);


  11.C语言的变量一定要先定义才能使用;


  12.输入输出的数据的类型与所用格式说明符不一致
  int a=3;float b=4.5;printf(“%f%d\n”,a,b);
  它们并不是按照赋值的规则进行转换(如把4.5转换为4),而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后两个字节的数据按%d,作为整数输出)


  13.未注意int型数据的数值范围
  int型数据的数值范围(-32768~32768)
  int num=89101;
  printf(“%d”,num);
  会将超过低16位的数截去从而得到23563
  注意:定义了long型,而在输出时仍用”%d”说明符,仍会出现以上错误
  14.输入变量时忘记使用地址符
  scanf(“%d%d”,a,b);
  15.输入时数据的组织与要求不符
  对scanf函数中格式字符串中除了格式说明符外,对其他字符必须按原样输入
  16.误把”=“作为”等于”比较符
  “=“为附值运算符
  “==“为比较运算符
  17.语句后面漏分号
  {
  t=a;
  a=b;
  b=t
  }
  它是pascal的语法
  18.不该加分号的地方加了分号
  if(a>b);
  printf(“a is larger than b\n”);
  for(i=0;i<10;i++);
  {
  scanf(“%d”,&x);
  printf(“%d\n”,x*x);
  }
  19.对应该有花括弧的复合语句,忘记加花括弧
  sum=0;
  i=1;
  while(i<=100)
  sum=sum+1;
  i++;
  20.括弧不配对
  while((c=getchar()!=‘#’)


  putchar(c);
  11.在用标识时,忘记了大写字母和小写字母的区别
  {
  int a,b,c;
  a=2;
  b=3;
  C=A+B;
  printf(“%d+%d=%D”,A,B,C);
  }
  12.引用数组元素时误用发圆括弧
  {
  int i,a(10);
  for(i=0;i<10;i++)
  scanf(“%d”,&a(i));
  }
  13.在定义数组时,将定义的”元素个数”误认为是”可使用的最大下标值
  {
  int a[10]={1,2,3,4,5,6,7,8,9,10};
  int i;
  for(i=1;i<=10;i++)
  printf(“%d”,a[i]);
  }
  14.对二维或多维数组的定义和引用的方法不对
  {
  int a[5,4];
  …
  printf(“%d”,a[1+2,2+2]);
  …
  }
  15.误以为数组名代表数组中全部元素
  {int a[4]={1,2,3,4};
  printf(“%d%d%d%d”,a);
  }
  16.混淆字符数组与字符指针的区别
  main()
  {
  char str[40];
  str=“Computer and c”;
  printf(“%s\n”,str);
  }
  17.在引用指针变量之前没有对它赋予确定的值
  {
  char *p;
  scanf(“%s”,p);
  }
  {
  char *p,c[20];
  p=c;
  scanf(“%s”,p);
  }
  18.switch语句的各分支中漏写 break语句
  混淆字符和字符串的表示形式
  …
  char sex;
  sex=“M”;
  …
  19.使用自加(++)和自减(--)运算符时出的错误
  {
  int *p,a[5]={1,3,5,7,9};
  p=a;
  printf(“%d”,*p++);
  }
  注意于*(++p)的区别;
  20.所调用的函数在调用语句之后才定义,而又在调用前未加说明
  main()
  {float x,y,z;
  x=3.5;y=-7.6;
  z=max(x,y);
  printf(“%f”,z);
  }
  编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。


  八、心得体会


  1.    目前流行的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基础于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。(Windows各个版本一般都局限在1980年至2099年这一范围内),但是,在很多情况下,特别是在众多的科学研究领域中,一个时间跨度较大的日历程序是很有参考价值的。C程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本填补了这一领域的空白,同时用铁的事实强有力的告诉世人:C程序设计语言作为计算机语言家族的新生事物,其发展前景是极为广阔的。


  2.    经过上一个学期对《C程序设计》的学习,我们学习了理论知识,了解了C语言程序设计的思想,这些知识都为我们的下一步学习打下了坚实的基础。通过课程设计,一方面是为了检查我们一个学期来我们学习的成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。


  3.    通过对c语言万年历的设计进一步的巩固了用c语言编写程序,并且有利于更好的掌握c语言!


  4.      在万年历的编写过程中也体会到了做事情一顶要细心、认真。更加知道了要掌握好基础知识。还有体会到了成功的感觉!在万年历的设计过程中更加体会到了团队合作的重要性,“一个诸葛亮比不上三个臭皮匠。”知道了只有团队合作才会更好的完成设计!也体会到以后在工作中团队合作的必要性和重要性!


  5.      通过本项课程设计也培养了我独立思考、 综合运用所学有关相应知识的能力,掌握 工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实践相结合的难关!


  6.      由于C语言是近年在国内外得到迅速推广应用的一种语言。C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。通过这次的c语言程序设计更加了解了c语言的好处和其可用性!


  7.      在这次课程设计中也知道了自己的动手能力不强有待进一部的提高!在设计过程中不能够把书本上的知识与实践相结合,这也就增加了设计不好该程序的想法!在设计过程中的一次次设计错误增加了我放弃的想法!不过经过大家的努力终于完成了课程设计!完成该程序后想起自己以前的每一次对自己失去信心,就觉得并不是在知识掌握上打败了,而是自己对自己缺乏信心!只要自己对自己不失去信心相信就可以完成那些以前认为完成不了的事情!也让我懂得了要想成功首先就必须有很强的自信心!懂得了自己以后要在做任何事情时都要自信!当自己都不相信自己能够成功时还可能会获得成功吗?


  8.      在C语言程序设计的过程中也知道了自己在以前的学习中有很大的不足导致在设计过程中出现了很多的问题,有些地方看不懂也不知道怎么去设计,但是在设计过程中也学习了很多,掌握了自己以前没有学好的知识,虽然一时可以掌握完以前没有学好的知识,不过也给自己敲响了警钟,在学习中不可以伏于表面,要想学好每一门课程都要踏踏实实,做什么都不是给别人看的!都是要更好的掌握该门知识,提高自己的自身的修养,提高自己的能力!为以后的工作打下良好的知识基础和技能基础!


  九、参考文献


  ⒈谭浩强编著.C程序设计第二版〔M〕.北京:清华大学出版社,1999


  ⒉陈朔鹰,陈英编著.C语言趣味程序百例精解〔M〕.北京:北京理工大学出版社,1994


  ⒊电脑知识与技术学术交流版〔J〕2005.2  (备注:来自网络资源)


  ⒋Herbert  Schildit著. 戴健鹏译. C语言大全 (第二版)〔M〕.北京:电子工业出版社,1994


  ⒌谭浩强,张基温,唐永炎编著.  C语言程序设计教程.〔M〕北京: 高等教育出版社,1992


  ⒍秦友淑,曹化工编著. C语言程序设计教程. 〔M〕武汉:华中理工大学出版社,1996


  ⒎曹衍龙,林瑞仲,徐慧 编著.C语言实例解析精粹 〔M〕北京:人民邮电出版社,2005.3


  ⒏黄明等编著.21世纪进阶辅导C语言程序设计. 〔M〕大连理工大学出版

C语言课程设计报告要求

4. 老师要求写一份C语言课程设计报告,有一个问题是系统运行环境与数据库设计,应该怎么回答?

1.开场

自我介绍, 简单讲述我大学的学习的历程,成果和感想。(1分钟)

我一直都感慨本年级许多同学在大一时因为缺乏好指引,在一开始就对编程很害怕,对计算机的学习没有开好头,动手能力长期跟不上,空会理论,不会实践,一直拖累到大四,最终选择忍痛考研或者抱怨找工作难。我也帮助过不少在这方面比较弱的同学,但是总是因为基础没打好导致难以提高。我也一直希望学校能在大一的时候就让同学们明白学习的重要性,打好扎实的专业基础。现在终于有一次这样的机会站在这里,为指引大家如何在大学专业技术学习的道路上开好头做点贡献。
今天我将结合我自身的经历和我对计算机的理解,我对编程的感悟,我对大学学习的认识,给大家做报告。

首先问三个问题:
1) qq聊天软件是用什么语言写的(第二天要换个问题)

答对的演讲结束后留下来,我要亲自给他传授宝贵经验,没人答的话,很遗憾

2) 谁玩电脑游戏比较牛

恩,人很多,大家很踊跃,很好
展示下我写的人工智能黑白棋游戏,声明真正的编程高手基本从来不玩游戏
(结合大四同学长期沉迷游戏最后找不到工作的例子,说明一个严肃的问题,只会玩游戏没有用,会做游戏才牛,鼓励大家努力学习,让会玩游戏的同学也热爱编程,最后也能自己写游戏)
请大家记住:只会玩游戏没有用,会做游戏才牛

3) 有没有人对计算机特别感兴趣 (为什么感兴趣)

如果有兴趣,对学习计算机有巨大的帮助
兴趣是最好的老师,鼓励他们,勉励其他人,兴趣是可以培养的,要学会培养兴趣

2.概述

计算机"科学"与"技术" 包含两个层面         
"科学" 指计算机硬件、软件与应用的理论知识     理论的学习
"技术" 指软件开发、工程实践等技能与方法        能力的培养
我主要讲的是如何学习技术(计算机技术) 
讲之前 澄清一个观点 计算机技术  不等于  编程技术
编程只是一个工具,编程没学好不代表你技术就学不好
计算机技术应该是与计算机软件、硬件和网络三个部分相关的各种科技成果和应用的综合,包括了多媒体,数据库,操作系统,嵌入式系统,计算机安全,计算机网络,计算机管理和维护,计算机应用,人工智能,模式识别,管理信息系统等,在我们生活的方方面面计算机技术几乎无处不在。
(举几个例子)在现在社会,它几乎与我们的生活息息相关。
(大学和高中的学习方式的区别)(学好技术的重要性)
在大学,学习的方式与高中或小学是有很大的区别的,大学更大,大学更自由,不再是完全跟着老师,不再是只要吃透了老师教授的内容就万事大吉了,从我这一届的情况看,许多同学特别是女生在大学还沿袭着高中的学习方式,勤奋刻苦,天天自习,非常认真,上课笔记做得秘密麻麻,把理论学得非常扎实,但是却严重地忽略了实践能力的培养,理论考试分数很高,但课程设计做不出东西来,显然这种学习方式是不对的,这和高中的偏科又有什么本质区别呢。
我觉得理论的学习和技术的学习是同等重要的,二者都不应该轻视,没有侧重点是不可能的,至于如何侧重,如何在二者之间找到平衡点就取决于你自己的人生目标了。如果你喜欢研究理论,以后想继续读研深造可以稍微偏向理论,把理论基础打得扎实一些,毕业以后可以留校任教或到科研院所去发展。如果你想走技术路线,那么你就可以稍稍偏向技术,在不落下理论学习的情况下,把技术学好学精,毕业以后可以去IT企业发展,也可以自己创业,有了一身技术不怕没饭吃。切莫完全忽视技术最后变成书呆子或完全不顾理论最后只是个代码搬运工。

大家每个人,从现在开始就要下决心学好技术,那么,如何学好技术呢。

3.如何学好技术

3.1制定好的学习计划

3.1.1大一大二:打好基础

3.1.1.1计算机方面的基本技能的学习

包括计算机众多的应用技术的学习  和  常见的硬件维护
(大家应该尽量多多掌握计算机方面的基本技能,如word excel ppt access* photoshop* flash* dreamveaver* 结合我的经历讲讲,我大一在自己没有电脑的情况下把这些基本全学了 举一个考研的同学不会在excel里找自己的名字的例子,如果这些最基本的技能都不会,只能说计算机还没入门)大二有电脑之后,终于有机会整自己的电脑了,要学习常见的常见的硬件维护(系统崩溃了怎么办,如何安装操作系统,如何分区等)

3.1.1.2专业理论基础和编程基础的学习

技术是将理论运用到实践中去,不能轻视理论,没有理论何来应用。计算机"科学"与"技术" 中的"科学"和"技术"应该是相互依赖和促进的。

先学好《高级语言程序设计》《数据结构》等专业课,理论基础扎实了,学应用性技术就更容易了

编程基础:学精C++(为什么),可以考虑过渡到 java 或 C# (最好只学一个,为什么)
(编程的学习会在后面再详细讲)

3.1.1.3珍惜这两年大学自由学习的黄金时间        
(曾经和一家公司的经理开玩笑,总经理感慨的说现在在大学里找一个又能力的学生来帮忙做项目真是很难啊,我说是呀,大学四年,大一的刚进校还在打基础没法做,大二的还刚起步没足够的能力做,大三的课程会很紧没时间做,大四的找工作的找工作去了,考研的考研去了,没人做了),大学四年,实则三年,希望大家不要把最宝贵的时间荒废在游戏和娱乐上

3.1.2大三:深入学习,确定方向(技术方向,职业规划)+多多实践

到了大三,各种专业课会非常多,包括很重要的操作系统,汇编,组成原理,编译原理,数据库,计算机网络,软件工程等等,大家将深入学习计算机的各大核心课程。这时大家的基础打得也差不多了,可以选择一门自己比较感兴趣的技术并确定自己的技术的一个方向,比如选择j2ee, .NET,WEB技术,数据库技术,嵌入式,linux内核开发等等。当然也会有非常丰富多彩的专业选修课可以选择学习。这段时间大家可以利用课程设计的机会好好锻炼自己。

3.1.3大四:实践和进步
大四,如果不打算考研的同学,工作有了着落之后,可以试着做项目,大四基本没什么课,相对轻松,这段时间是获得经验,银子和巨大的进步黄金时期。

3.2重视专业课的学习


要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络,离散数学等基础课程学好


除非你足够牛,请务必认真听专业课,有些课像《数据结构》,《编译原理》,《组成原理》,《操作系统》等等,这种课老师讲一分钟能让你明白的内容,你自己看要看好几个月

3.3培养好的思维能力
数学是锻炼是思维的最好的东西了,他是你思考问题的最得力的工具,他体现着你的思想,在编程中会思考才能编出好的程序。
此外还要注重离散数学,数值分析,线性代数,数字逻辑等等课程的学习,他们对培养好的思维能力大有裨益



3.4激励创新意识

创新太重要了,不管在哪个学科都重要,计算机同样需要

3.5培养独立分析问题和解决问题的能力    

遇到问题,要先学会独立思考,不能凡事依赖他人,尽量自己解决,在独立解决问题过程中能获得更大的进步,实在不能解决再请教别人也不迟

3.6培养自学能力和快速获取知识的能力

自学能力之重要(大学和高中的学习方式的区别)
可以说高中是靠老师,大学是靠自己,要做到严格自律,自我约束,必须要学会自学
学习的过程也是学会学习的过程

要充分利用图书馆和网络上的丰富学习资源,    要培养计算机新知识,新技术方面的自学习能力,要学会如何通过网络,书籍,文献,独立地快速获取自己需要的知识和信息

3.7培养团队协作精神
在一个大型项目中,往往要求各种参与者密切配合才能取得成功。大家要从现在就开始注重团队协作精神的培养,要学会与人沟通,善于表达,要注意提高自己的综合素质,成为综合型人才。

3.8学好英语

包括现在的大学英语和日后的专业英语。

也许有人会问,英语和技术有什么大的关系吗。大家是否知道,计算机的发展飞速,国际上新技术不断涌现,如果今天国外出现了一门新的技术,或者国外某本技术书籍出了新版本,相关资料的中文的翻译不知道要等到什么猴年马月才会出来,现在的许多出版也有了越来越多的英文原版书。

大家要学好英语,培养阅读专业外语资料的能力,开始会看不懂,看多了自然熟练了。
(讲下四六级,四级最好一次就过,六级在大二下结束前最好过)

3.9适时关注新技术

了解学科发展动态,跟上时代步法

3.10勤学苦练,持之以恒

学好技术不是一蹴而就的,要长期坚持。

4.无
5.无
6.关于编程的学习
6.1为什么要学习编程

编程是软件开发的基础,学习计算机,只会编程是千万不行的,但是开发软件,不会编程是万万不行的
(结合本年级的情况将一下现状,学习的重要性等)

6.2编程真的那么难学吗

(讲讲编程的苦与乐)
编程真的那么可怕,那么枯燥,那么没意思吗?假如真是这样,为什么世界上还有那么多优秀的人乐此不疲。
其实编程并不可怕,可怕的是你的心态。
编程固然很苦,编程时长时间对着屏幕,对身体不好,而且,经常因为考虑不周,会遇到各种各样的错误和麻烦,初学者处处容易受挫。
但是其实编程是很有趣的,编程中充满着无穷的快乐
首先,你通过编程得到了想要的成果的过程是一种创造的快乐
(编出了有用的东西的那一刻会有一股美好的成就感)
其次,你开发了有用的软件可以方便自己或他人,方便自己,是一种享受的快乐,方便他人,是一种奉献的快乐
再次,假如你开发的软件得到了用户的认可或好评,会有一种欣慰和满足感
还有,你可以根据自己的意愿写你想要的东西,经过自己的努力亲自实现你心中的愿望
然后,编程也是一个挑战自我的过程,遇到困难想办法解决的过程是思考的过程,思维能得到锻炼
最后,在代码中有一种看不见的美,就像诗一样,美景全是你的,你可以随心所欲
编程真的非常有趣,它不仅满足了我们内心深处进行创造的渴望,让人头脑变得灵活,而且还愉悦了每个人内在的情感。


6.3学好编程的建议

6.3.1请热爱编程

如果想成为编程牛人的话,请热爱编程。有兴趣是最好了,没兴趣也没关系,可以慢慢培养,当你感受到了编程的乐趣的时候你会爱上它。

6.3.2不要畏难

很多初学者往往都在遇到许多困难,遭受多次挫折后,自信心受到打击从而对编程丧失兴趣
这些困难每个人都会遇到,我在初学编程时也遇到过,关键是看你用什么心态对待,是想办法解决困难还是选择逃避。很多问题其实是有很多解决方法的。譬如看书,遇到看不懂的部分,可以暂时跳过,先往后看,看完后面的之后,再回头看前面跳过的部分往往会有一种豁然开朗的感觉。再比如,编程调试时死活找不到错误会很郁闷,这个时候很多同学会束手无策,其实只要在程序不同的地方加上输出语句,然后运行看有哪些输出,这样一步步缩小错误的范围从而确定错误发生的位置。等等。。。

不要畏惧困难,要用你的智慧战胜它。

6.3.3多实践,多交流

学习编程的秘诀是:编程,编程,再编程;(讲讲如何动手实践)

在学校的实验室就算你做错一万次程序都不会有人骂你,如果在公司你试试看!所以多去实验室上机,现在错得多了,毕业后就错得少了。多实践,多从失败中吸取教训,积累经验。要勤奋,三天打鱼两天晒网是学不好的,学会了的东西一段时间不用就容易忘记,实践得越多才能记得越牢。

现在大家是大一,可能有人会说没有电脑不方便,其实实验室不是只有在老师安排的实验时间才可以去的,它是是面向计算机专业的学生免费开放的,大家有时间就去实验机房练习,只要拿着学生证,或者干脆直接跟那个阿姨说你是计算机的就行了。航海楼7楼的机房和图书馆电子阅览室也是可以的。我大一的时候甚至还到阳光网吧编程呢。

到大二大三的时候课程设计就会多起来,大家一定要自己动手做,不要去网上搜一个就完事了。


与人交流,分享自己编程中的乐趣和经验,共同进步。

6.3.4多阅读书籍和代码

编程不是非要在电脑上才能学的,阅读书籍和书中的代码也是一种学习方式,自己还可以尝试着改进那些代码,最后可以把自己的成果拿到电脑上调试

千万不要忽视书后面的习题

6.3.5养成良好习惯

细节很重要
要细心,沉下心来编程,戒骄戒躁
养成良好习惯,注重编程风格,尽量写代码注释,把写过的代码保留下来,以后会有用

6.3.6善于思考

遇到问题动脑筋解决

6.3.7注重基础
打好编程基础,除了熟悉基本的语法之外,要深刻理解指针,引用,面向过程思想,类,模板,标准库,接口,继承机制,面向对象思想等等,课后习题尽量全做一下 
刚才说了,有精力的可以学学 photoshop图像处理, flash动画制作,3dmax或maya三维建模,dreamveaver网页设计,但是不要因为他们花费过多的时间而影响了你基础的学习,那些都是些应用技术,你学会了更好,不会也没什么丢人的,基础打好了,以后学啥都轻松。
在基础没打好的情况下,不要觉得你编的程序只能在黑白的DOS窗口了运行就去学VC做漂亮的窗口,3d程序很有意思就去看OpenGL或DirectX,那些都属于高级应用,没有基础学起来会很吃力。

基础要扎实,不要觉得C#中没有指针就扔掉C++, 不要今天看C#,明天搞java

要有明确的方向,计算机技术的发展实在太快,新技术不断涌现,了解一下就可以了,不要随波逐流,要沉得住气

6.3.8选好开发环境

选择一种适当的开发环境并熟悉它就可以了,不要今天摆弄Visual Studio,明天钻研Eclipse,后天来个netbeans,在工具的使用的学习上白白浪费时间。

6.3.9选好编程语言
我在选择语言时,走过一些弯路,浪费了一些精力,我在这里选出一些主流编程语言,对语言特性与环境稍作介绍,希望可以帮助大家,让大家尽早了解与选择,少走弯路

C(多用在性能要求较高的场合,如操作系统,嵌入式等)
C++(应用最广泛、成熟,强大而复杂,兼有性能高和易于构建大型程序的优点,基本是衡量一个国家软件产业发达程度的核心基础)
Java(著名的SUN公司推出的,面向对象、安全、跨平台、强大稳健,需要java虚拟机的支持)
C#(微软推出的完全面向对象,运行在 .NET Framework 环境中新兴、易学、强大语言)
Python(新兴的面向对象脚本语言,跨平台,语法清新易于使用,代码优美得像数学一样,非常容易学)
PHP (目前最流行、强大、稳健的动态网站开发脚本语言,语法类似C++)
ActionScript (Flash的编程脚本,最新版支持面向对象,能基于Flex开发RIA应用)
除此之外,还有vb, vb.net, asp.net, jsp, asp, ruby, Javascript等

这么多五花八门的语言,大家可能都会觉得眼花缭乱了。

其实各种语言之间只是语法不同,编程思想都是相通的,学精一门,了解多门是上策。

" 程序=算法+数据结构 " 其中并没有编程语言,说明语言只是程序员与计算机的编译器沟通的一种工具,程序员用某种语言来表达程序的逻辑结构,计算机中相应的编译器或解释器理解这种语言,编译得到二进制程序或者直接解释执行。
以上这些语言我在大学前三年全部学过了,有的学得很深,有的很浅。因为人的精力毕竟有限,很多语言学过了之后根本就很少用到,几乎是白学了,现在我深深的体会到,
语言并不是学得越多越好,与其泛而不精不如有针对性的先精通一门,其他的触类旁通。

就大家现在的情况,希望大家把当前正在学习的C++学好,学到一定程度的时候,可以继续深入的研究C++的各种库,也可以从上面选择感兴趣的新语言学习,如果把C++基础打好了,后面的学习就会容易得多。

最流行的语言不一定是最好的语言,用的人最多的语言也不一定是最好的语言。
请大家记住,没有最好的语言,只有最适合某个领域的语言,    在不同的环境下选择不同的语言就可以了。

6.3.10重视数据结构和算法    
理论上,计算机的任何编程语言都有可能会被淘汰,随着时间的推移和计算机软硬件的飞速发展,不断会有新的语言产生和和旧的语言过时,但不会过时的是数据结构和优秀的算法。真正的高手应该是善于设计优秀的数据结构和算法的,应该是具有独立分析和解决问题的能力并利用计算机程序来实现的,他的思想应该是超脱语言、在更高处的一种升华。

如果某一天,你深切的体会到,真正重要的不是什么语言而是思想的时候,说明你可以出师了。

5. 求完整C语言程序设计报告!!

C语言课程设计报告--学生成绩管理系 C语言课程设计报告: 学生成绩管理系统 系统需求 一、 当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息. 二、学生成绩查询: 输入一个学号, 在文件中查找此学生, 若找到则输出此学生的全部信息和成绩; 若找不到则输出查找失败的信息. 同时也可以全部把各科的平均成绩,最高和最低分输出。 三、新生插入 :通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来。 四、输出全部学生信息和全部学生成绩。 五、退出系统. 六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。 总体设计 一、 仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数) 1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。 2、查询模块:可用stu *lookdata(stu *p1) 来实现。找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。 3、插入模块:可用insert( )函数来实现。其中通过学号的大小来比较的,并且以此来排序。 4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage() 、 maverage() 、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。 5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。 二、系统主模块结构图: 详细设计 一、 界面设计 此系统界面采用图形和数字化菜单设计。 主界面设计如下: 学生成绩管理系统 请选择相应的数字执行相应的功能: 1:是否输入其他数据 2:查看数据 3:插入数据 4:查找数据 5:更新数据 6:保留数据 7:显示或打印数据 8:语文成绩状况 9:数学成绩状况 10:英语成绩状况 11:计算机成绩状况 12:? 13:退出系统 二、 数据结构设计: 程序设计中用到的结构体类型: 学生信息结构体类型: typedef struct student{ char name[MAX]; int num[MAX]; char sex[MAX]; int chinese; int mathematic; int english; int computer; struct student *next; } 程序代码: //原始密码是123456 #include"stdio.h" #include"stddef.h" #include"stddef.h" #include"string.h" #define MAX 10 typedef struct student{ /*定义结构体*/ char name[MAX]; /*姓名*/ int num[MAX]; /* 学号*/ char sex[MAX]; /*性别*/ int chinese; /*语文*/ int mathematic; /* 数学*/ int english; /*英语

求完整C语言程序设计报告!!

6. 求C语言课程设计之学生成绩管理系统的1 系统需求分析2 总体设计3功能设计4总体方案及功能模块流程

C语言课程设计之学生成绩管理系统的1 系统需求分析2 总体设计3功能设计4总体方案及功能模块流程要原创吗,我可为您操作.

7. c语言课程设计

很想说两句, 

你看知道教育一栏, 

很多人都问各种各样的参考资料是吧, 

其实, 

这类问题很多都是没有人回答的, 

或者根本就找不到提问者想要的答案, 

因为现在各种各样的资料简直太多了, 

你提问, 

在百度知道问, 

是面向全国, 

其实别人查的可能还不如你自己查的, 

别人很可能也就是在百度, 

输入要查的资料名字, 

查不到, 

或者查到一点就粘上去了, 

远远不是你想要的那种, 

所以, 

觉得问这类问题, 

就有些浪费分数了。 

当然, 

这只是我个人的一些看法, 

还是希望你能在知道找到你想要的。








这是我复制别人的,我觉得很有道理.

c语言课程设计