c语言程序设计课程设计报告(计算机c语言实训报告范文)

:暂无数据 2026-07-03 14:30:05 :0

c语言程序设计课程设计报告(计算机c语言实训报告范文)

这篇文章给大家聊聊关于c语言程序设计课程设计报告,以及计算机c语言实训报告范文对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

本文目录

计算机c语言实训报告范文

   计算机c语言实训报告范文

  实训教学是培养计算机专业学生C语言的基本能力、职业能力、技术应用能力、创新能力的重要途径。本文是我为大家整理的计算机c语言实训报告范文,仅供参考。

  一、 课题名称:简单计算器

  设计一个简单的程序来模拟计算器的功能。

  二、 设计目的:

  1、通过理论知识与实际需求相结合,解决一些日常中的实际问题,培养初步的独立分析和设计能力。 2、了解应用程序设计解决实际问题的具体过程和实现方法,掌握应用C语言进行程序设计的基本规范; 3、重点掌握C语言的程序编写、函数设计、算法设计和程序调试方法; 4、初步掌握系统开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。

  三、 设计任务:

  1、通过结构体数组和共用体数组来存放输入的每一数字或运算符号的记录(包括1、2、3等数字,+、--、_、等运算符号),然后将其信息存入文件中。输入一个算术计算式,就在屏幕上显示结果。 2、输入简单的加减乘除算术计算式,并在屏幕上显示计算结果;

  四、 设计要求:

  1、用C语言实现程序设计并进行调试; 2、画出查询模块的流程图;

  3、系统的各个功能模块要求用函数的形式实现; 4、界面友好(良好的人机互交)。 5、完成设计说明书(A4)。

  五、代码设计:

  #include "stdio.h" main() { float x,y;

  char operator;

  printf("x,yun suan fu ,y: "); scanf("%f%c%f",&x,&operator,&y); switch(operator)

  {case ’+’: printf("%.2f+%.2f=%.2f",x,y,x+y); break; case ’-’:printf("%.2f-%.2f=%.2f",x,y,x-y); break; case ’_’:printf("%.2f_%.2f=%.2f",x,y,x_y); break; case ’/’: if(y==0)

  printf("chushushilingwuyiyi"); else

  printf("%.2f/%.2f=%.2f",x,y,x/y); break;

  default: printf("yunsunfuwuxiao"); } }?

  七、设计总结:

  学习C程序这门课一个学期了,这是我们学的第一门专业课,所以作为我这个计算机系的学生来说当然十分重要,老师在第一节课说过,C语言是计算机的基础,大多数软件都需要用C语言来编写,通过一个学期的学习,使我初步掌握了一些关于这门课的知识

  这次的课程设计是对我们一个学期来所学的知识的综合考察,里面涉及到了我们大多数所学知识。记得刚开始学这门课的时候,对这门课充满了希望,自己有信心学好这门课,但是经过一段时间的学习之后。才发现程序设计并不好学,它既要你有很强的领悟能力,还要你课后的努力,也许是自己之前太有信心学好

  这门课了吧,中间遇到了很大的瓶颈,一度陷入无休止的烦恼中编程序时没有一次是成功的,总会遇到很多的error,改完一个又有一个,这时我会想到一句古话“天将降大人于斯人也,必先苦其心志,劳其筋骨,饿其体肤”,也许以后会有些许光明吧。之后,随着时间的推移,慢慢掌握了这门课学习的一些窍门,学习起来也比刚开始的时候好了一点,至于编程序吗还是有错误,但比以前少了,总让我看到希望了。这次的课程设计要求我们编一个简易计算器,刚开始的时候我一头雾水,丈二摸不着头脑,不知从哪里下手,后来经过老师和同学的帮助,从最简单的编框开始,慢慢的到最关键的算法,这其中经历了很多弯路,也犯过了很多错误,但是还是一一攻克了,好比红军长征两万五千里终于到达了终点。看到最后自己编写出来的计算器感到格外的高兴,暂且不说计算器的功能方面吧,但毕竟是自己写的第一个正式的程序,感到格外的高兴。

  在编写程序的过程中受到了其他同学的指点,也许在某些程序方面会和有的同学想类似,另外老师也帮助了很多,一个好的学生离不开一个好老师吗,虽说我不算一个好学生,但是老师在我编程序过程中也起到了很大的作用,就像老师说的一句话一样“革命尚未成功,同志仍需努力”,我们在C语言这门课上还会继续走下去,以后还会经常碰到,我会努力的。

  实验一 工作平台

  一、目的和要求

  1、熟悉C语言程序的支持运行环境,了解所用计算机系统的软、硬件配置和使用方法。

  2、初步了解运行一个C语言程序的过程。

  二、实验环境

  硬件环境:计算机(windows xp系统) 软件环境:Turbo C3.0或VC++6.0

  三、实验内容

  1.1请编写一个程序,显示以下两行文字。

  I am a student.

  I love China.

  源程序代码:

  #include

  int main(void)

  {printf(“I am a student.\n”);printf(“I love China.\n”); return 0;}

  数据输入与运行结果:

  1.2编写一个程序,从键盘输入两个整数,输出这两个数之和。

  源程序代码:

  #include

  int main(void)

  {int a,b,c; printf(“input two integers:\n”);

  scanf(“%d %d”,&a,&b);c=a+b;printf(“The sum is %d:\n”,c); 数据输入与运行结果:

  1.3编写一个程序,求3个整数之和。

  源程序代码:

  #include

  int main(void)

  {int a,b,c,sum;a=12,b=34,c=56;sum=a+b+c;

  printf(“sum is %d\n”,sum);}

  数据输入与运行结果:

  1.4编写一个程序,从5个整数中找出最小的数。

  源程序代码:

  #include

  int main(void)

  {int a,b,c,d,e,min;

  scanf(“%d %d %d %d %d”,&a,&b,&c,&d,&e);

  min=a;if(min》b) min=b;if(min》c) min=c;if(min》d) min=d;

  if(min》e) min=e;printf(“min is %d\n”,min);}

  数据输入与运行结果:

  1.5写出下列程序的输出结果。

  (1)#include

  int main(void)

  {printf(“%d%d%d%d\n”,1+2,5/2,-2_4,11%3);

  printf(“%.5f%.5f%.5f\n”,1.+2.,5./2.,-2._4.);

  (2)#include

  int main(void)

  {int i=8,j=10,m=0,n=0;

  printf(“%d,%d,%d,%d”,i,j,m=++i,n=j++);

  (3) #include

  int main(void)

  {int x;

  x=-3+4_5-6;printf(“%d\n”,x); x=3+4%5-6;printf(“%d\n”,x);

  x=-3_4%-6/5;printf(“%d\n”,x);x=(7+6)%5/2;printf(“%d\n”,x); }

  数据输入与运行结果:

  1.6分析比较下面两个程序的输出结果。

  (1) #include

  int main(void)

  {int x,y,z; x=y=2;z=3; y=x++ -1;printf(“%d\t %d\t”,x,y);

  y=++x-1; printf(“%d\t%d\t”,x,y); y=z-- +1; printf(“%d\t%d\t”,z,y); y=--z+1; printf(“%d\t%d\n”,z,y); return 0;}

  (2) #include

  int main(void)

  {int x,y,z; x=y=2;z=3; y=x + +-1;printf(“%d\t %d\t”,x,y);

  y=+ + x-1; printf(“%d\t%d\t”,x,y); y=z - - +1; printf(“%d\t%d\t”,z,y); y=- -z+1; printf(“%d\t%d\n”,z,y); return 0;}

  数据输入与运行结果:

  实验二 C语言基础

  一、目的和要求

  1、进一步掌调试的方法。

  2、掌握数据的输入和输出方法。

  3、掌握有关运算符与表达式的运用。

  二、实验环境

  硬件环境:计算机(windows xp系统) 软件环境:Turbo C3.0或VC++6.0

  三、实验内容

  2.1 上机调试下面的程序,给出运行结果。

  (1) #include

  int main(void)

  {float x=234.89;double y=-123.4567;printf(“%.3f,%.3e\n”,x,x); printf(“%08.3f,%010.3e,%015.3e\n”,x,x,x);

  printf(“%g,%e\n”,y,y,y);}

  (2) #include

  int main(void)

  {char c;short i;c=’A’;i=65;

  printf(“c:dec=%d oct=%o hex=%x ASCII=%c\n”,c,c,c,c); printf(“i:dec=%d oct=%o hex=%x unsigned=%u\n”,i,i,i,i); c=’X’;i=-4;

  printf(“c:dec=%d oct=%o hex=%x ASCII=%c\n”,c,c,c,c); printf(“i:dec=%d oct=%o hex=%x unsigned=%u\n”,i,i,i,i);}

  (3) #include

  int main(void)

  {char c1,c2; c1=’A’+’5’-’3’; c2=’A’+’5’-’3’; printf(“%d,%c\n”,c1,c2); }

  数据输入与运行结果:

  2.2指出下面程序段中的错误,并加改正。

  #include

  int main(void)

  {int a; float b; char c; scanf("%c%d%c%f";c,a,a,b);}

  数据输入与运行结果:

  改正后的程序:

  #include

  int main(void)

  {int a; float b; char c; scanf("%c,%d,%f",&c,&a,&b);

  printf("%c,%d,%f",c,a,b);}

  运行结果:

  2.3写出下面程序段执行后变量a,b,c的值。

  char a=’2’,b=’a’;int c;c=a+b;a=c;

  数据输入与运行结果:

  程序:#include

  int main(void)

  {char a=’2’;char b=’a’;int c;c=a+b;a=c;

  printf("%d,%d,%d",a,b,c);}

  运行结果:

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

C语言课程设计任务书
一、题目: 学生成绩管理
二、目的与要求
1. 目的:
(1)基本掌握面向过程程序设计的基本思路和方法;
(2)达到熟练掌握C语言的基本知识和技能;
(3)能够利用所学的基本知识和技能,解决简单的程序设计问题
2. 要求
基本要求:
1. 要求利用C语言面向过程的编程思想来完成系统的设计;
2. 突出C语言的函数特征,以多个函数实现每一个子功能;
3. 画出功能模块图;
4. 进行简单界面设计,能够实现友好的交互;
5. 具有清晰的程序流程图和数据结构的详细定义;
6. 熟练掌握C语言对文件的各种操作。
创新要求:
在基本要求达到后,可进行创新设计,如系统用户功能控制,对管理员级和一般级别的用户系统功能操作不同
三、信息描述
输入一个班10个学生的学号和每个学生考试三门功课(数学、英语、计算机基础)的成绩。编程计算出每个学生的总分和平均分,并按学生成绩优劣排序,最后打印一张按高分到低分名次排序的成绩单。要求:
1)排序用一个函数实现。
2)打印的成绩单表项包括:序号,学号、数学、英语、计算机、总分、平均分。
3)按实验报告电子模板格式填写实验内容。
四、功能描述
1. 学生基本信息及成绩所选科目成绩的录入。
2. 基本信息的查询(分系、班级;分科目)与修改。
3. 对每系或每班各科成绩进行分析(即求单科平均成绩、及格率和优秀率);
4. 对所开课程的成绩分析(求其平均成绩,最高分和最低分);
5. 对学生考试成绩进行排名(单科按系别或班级进行排名,对每一个班级,同一学期学生总体成绩进行排名,并显示各科成绩信息)
五、解决方案
1. 分析程序的功能要求,划分程序功能模块。
2. 画出系统流程图。
3. 代码的编写。定义数据结构和各个功能子函数。
4. 程序的功能调试。
5. 完成系统总结报告以及使用说明书
六、进度安排
此次课程设计时间为两周,分四个阶段完成:
1. 分析设计阶段。指导教师应积极引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。
2. 编码调试阶段:根据设计分析方案编写C代码,然后调试该代码,实现课题要求的功能。
3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。
4. 考核阶段。
#include 《stdio.h》
#include 《stdlib.h》
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id; /*学生学号;*/
float score; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
};
/*排序用一个函数来实现*/
void SortScore(student *stu,int n)
{
student stud;
for(int i = 0; i 《 n-1; i++)
for(int j = i+1 ; j 《 n; j++)
{
if(stu.total)
{
stud = stu;
stu;
stu = stud;
}
}
}
int main( )
{
student stu; /*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/
/*输入这十个学生的相关信息*/
for(int i = 0; i《STU_NUM; i++)
{
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",&stu.stu_id);
printf("输入第%d个学生的数学成绩:",i+1);
scanf("%f",&stu);
printf("输入第%d个学生的英语成绩:",i+1);
scanf("%f",&stu);
printf("输入第%d个学生的计算机成绩:",i+1);
scanf("%f",&stu);
stu;
stu.total/3;
}
printf("\n");
SortScore(stu,STU_NUM);/*调用排序函数*/
/*输出排序后的各学生的成绩*/
for(i = 0 ; i 《 STU_NUM; i++)
{
printf("序号: %d\t",i);
printf("学号:%s\t",stu.stu_id);
printf("数学:%f\t",stu);
printf("英语:%f\t",stu);
printf("计算机:%f\t",stu);
printf("平均成绩:%f\t",stu.aver);
printf("总分:%f\t",stu.total);
printf("\n\n");
}
return 0;
}
注:(源程序中主要标识符含义说明)
#define STU_NUM 10 /*宏定义学生的数量*/
struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/
{
char stu_id; /*学生学号;*/
float score; /*三门课成绩;*/
float total; /*总成绩;*/
float aver; /*平均成绩;*/
}
实验结果:
输入 :(只输入后面的数字,前面的文字是自己产生的)。
请输入第1个学生的学号:001
输入第1个学生的数学成绩:1
输入第1个学生的英语成绩:1
输入第1个学生的计算机成绩:1
请输入第2个学生的学号:002
输入第2个学生的数学成绩:2
输入第2个学生的英语成绩:2
输入第2个学生的计算机成绩:2
请输入第3个学生的学号:003
输入第3个学生的数学成绩:3
输入第3个学生的英语成绩:3
输入第3个学生的计算机成绩:3
请输入第4个学生的学号:004
输入第4个学生的数学成绩:4
输入第4个学生的英语成绩:4
输入第4个学生的计算机成绩:4
请输入第5个学生的学号:005
输入第5个学生的数学成绩:5
输入第5个学生的英语成绩:5
输入第5个学生的计算机成绩:5
请输入第6个学生的学号:006
输入第6个学生的数学成绩:6
输入第6个学生的英语成绩:6
输入第6个学生的计算机成绩:6
请输入第7个学生的学号:007
输入第7个学生的数学成绩:7
输入第7个学生的英语成绩:7
输入第7个学生的计算机成绩:7
请输入第8个学生的学号:008
输入第8个学生的数学成绩:8
输入第8个学生的英语成绩:8
输入第8个学生的计算机成绩:8
请输入第9个学生的学号:009
输入第9个学生的数学成绩:9
输入第9个学生的英语成绩:9
输入第9个学生的计算机成绩:9
请输入第10个学生的学号:010
输入第10个学生的数学成绩:10
输入第10个学生的英语成绩:10
输入第10个学生的计算机成绩:10
输出:
序号: 0 学号:010 数学:10.000000 英语:10.000000 计算机:10.000000
平均成绩:10.000000 总分:30.000000
序号: 1 学号:009 数学:9.000000 英语:9.000000 计算机:9.000000
平均成绩:9.000000 总分:27.000000
序号: 2 学号:008 数学:8.000000 英语:8.000000 计算机:8.000000
平均成绩:8.000000 总分:24.000000
序号: 3 学号:007 数学:7.000000 英语:7.000000 计算机:7.000000
平均成绩:7.000000 总分:21.000000
序号: 4 学号:006 数学:6.000000 英语:6.000000 计算机:6.000000
平均成绩:6.000000 总分:18.000000
序号: 5 学号:005 数学:5.000000 英语:5.000000 计算机:5.000000
平均成绩:5.000000 总分:15.000000
序号: 6 学号:004 数学:4.000000 英语:4.000000 计算机:4.000000
平均成绩:4.000000 总分:12.000000
序号: 7 学号:003 数学:3.000000 英语:3.000000 计算机:3.000000
平均成绩:3.000000 总分:9.000000
序号: 8 学号:002 数学:2.000000 英语:2.000000 计算机:2.000000
平均成绩:2.000000 总分:6.000000
序号: 9 学号:001 数学:1.000000 英语:1.000000 计算机:1.000000
平均成绩:1.000000 总分:3.000000
七、撰写课程设计报告或课程设计总结
课程设计报告要求:
总结报告包括需求分析、总体设计、详细设计、编码(详细写出编程步骤)、测试的步骤和内容、课程设计总结、参考资料等,不符合以上要求者,则本次设计以不及格记。
C语言常见错误
书写标识符时,忽略了大小写字母的区别
main()
{
int a=5;
printf("%d",A);
}
编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。
2.忽略了变量的类型,进行了不合法的运算。
main()
{
float a,b;
printf("%d",a%b);
}
%是求余运算,得到a/b的整余数。整型变量a和b可以进行求余运算,而实型变量则不允许进行“求余”运算。
3.将字符常量与字符串常量混淆。
char c;
c="a";
在这里就混淆了字符常量与字符串常量,字符常量是由一对单引号括起来的单个字符,字符串常量是一对双引号括起来的字符序列。C规定以“\”作字符串结束标志,它是由系统自动加上的,所以字符串“a”实际上包含两个字符:‘a’和‘\’,而把它赋给一个字符变量是不行的。
4.忽略了“=”与“==”的区别。
在许多高级语言中,用“=”符号作为关系运算符“等于”。如在BASIC程序中可以写
if (a=3) then …
但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);
编译时不给出出错信息,但运行结果将与原意不符。这种错误尤其需要注意。
11.输入数据时,企图规定精度。
scanf("%7.2f",&a);
这样做是不合法的,输入数据时不能规定精度。
12.switch语句中漏写break语句。
例如:根据考试成绩的等级打印出百分制数段。
switch(grade)
{ case ’A’:printf("85~100\n");
case ’B’:printf("70~84\n");
case ’C’:printf("60~69\n");
case ’D’:printf("《60\n");
default:printf("error\n");
由于漏写了break语句,case只起标号的作用,而不起判断作用。因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。例如
case ’A’:printf("85~100\n");break;
13.忽视了while和do-while语句在细节上的区别。
(1)main()
{int a=0,I;
scanf("%d",&I);
while(I《=10)
{a=a+I;
I++;
}
printf("%d",a);
}
(2)main()
{int a=0,I;
scanf("%d",&I);
do
{a=a+I;
I++;
}while(I《=10);
printf("%d",a);
}
可以看到,当输入I的值小于或等于10时,二者得到的结果相同。而当I》10时,二者结果就不同了。因为while循环是先判断后执行,而do-while循环是先执行后判断。对于大于10的数while循环一次也不执行循环体,而do-while语句则要执行一次循环体。
14.定义数组时误用变量。
int n;
scanf("%d",&n);
int a;
数组名后用方括号括起来的是常量表达式,可以包括常量和符号常量。即C不允许对数组的大小作动态定义。
15.在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。
main()
;
printf("%d",a);
}
C语言规定:定义时用a是不存在的。
16.初始化数组时,未使用静态存储。
int a=;
这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:
static int a=;
17.在不应加地址运算符&的位置加了地址运算符。
scanf("%s",&str);
C语言编译系统对数组名的处理是:数组名代表该数组的起始地址,且scanf函数中的输入项是字符数组名,不必要再加地址符&。应改为:
scanf("%s",str);
18.同时定义了形参和函数中的局部变量。
int max(x,y)
int x,y,z;
{z=x》y?x:y;
return(z);
}
形参应该在函数体外定义,而局部变量应该在函数体内定义。应改为:
int max(x,y)
int x,y;
{int z;
z=x》y?x:y;
return(z);
}
C语言心得体会
通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。
这次实训是老师给了范例程序,经过自己的改写,实现要求。先做简单的输出,一步步的再做其它图案,在实际操作过程中犯的一些错误还会有意外的收获,感觉实训很有意思。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机实训的重要作用,特别是对数组和循环有了深刻的理解。
通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。深刻体会到“没有做不到的,只有想不到的”,“团结就是力量”,“实践是检验真理的标准”,“不耻下问”……的寓意。
计时在此希望以后应多进行这样的实训,加长设间,培养学生独立思考问题的能力,提高实际操作水平。
八、参考资料 :《C语言程序设计教程》

C语言程序设计以及设计报告

只是个例子,不可照抄。
实验内容与要求:
1、通过本试验初步培养计算机逻辑解题能力。熟练掌握赋值语句和if语句的应用;掌握switch多路分支语句和if嵌套语句的使用
2、将前期所学习到的基本数据类型、运算符和表达式等程序设计基础知识运用于具体的程序设计。
3、进一步熟练掌握输入输出函数scanf, printf和getchar的使用,熟悉math.h中常用数学函数的使用方法
4、掌握循环语句的应用方法。
5、了解随机数生成函数。
在规定期限独立完成实验内容
1、提交实验报告(电子版)
2、提交相应源程序文件(文件名 EX6_x姓名.c, 如EX6_1彭健.c)
3、要求从简单到复杂,后面的要求均在前面的基础上进行修改,前六题,每题均需要保留各自的程序,六题以后,每题均在前一题基础上修改,保留最后一个程序即可(如做到第九题,则保留EX6_9姓名.c,做到第11题,则保留ex6_11姓名.c)
二、实验原理和设计方案:
1、函数头的选则,while循环语句,switch(case)语句,条件表达式,if else条件语句,自增运算符,设置复杂变量,输出随机操作数。
2、变量要有分数变量和等级变量,要有选择算法题数的变量和计算正确与否的变量,要有随机输出的两个操作数变量和自己按运算符号输入结果的变量,最后还有判断是否要进行的变量字符。中间结果有选择运算符的switch()和分数等级的switch()和错题对题的自增和选择运算符计算的自增。
3、问题的分析方法:先考虑设置整形变量和字符变量,考虑到要不断循环计算,选择用while语句来循环。在循环体中,将前面的输出提示运算符,和自行选择运算符、答案及输出随机操作数完成。再用switch语句对选择的运算符进行判断,并用变量进行自增运算,计算出错题于对题个数和选择了那种运算符号。在循环体最后用if else语句来判断是否继续执行还是跳出循环。最后根据自增计算的结果和公式进行分数计算,并用switch语句来是想等级的制定。
三、源代码
#include《stdio.h》
#include《stdlib.h》
#include《time.h》
void main()
{
..........
}
四、试验结果和启发
因为输入y要继续循环,所以选择用while语句。在while语句中要结合前面的按提示计算,并嵌套switch语句并用条件表达式,来计算结果正确与否,计算的题型是什么。最后再用switch语句来完成分数等级的判断。
五、实验体会:
描述自己在编程或程序编译运行中遇到的难点和问题及解决的办法。

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日星期算法(百年%4《》0)
  其公式为:
  某年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(sm《0||sm》3);
  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={1,2,3,4,5,6,7,8,9,10};
  int i;
  for(i=1;i《=10;i++)
  printf(“%d”,a);
  }
  14.对二维或多维数组的定义和引用的方法不对
  {
  int a;
  …
  printf(“%d”,a);
  …
  }
  15.误以为数组名代表数组中全部元素
  {int a={1,2,3,4};
  printf(“%d%d%d%d”,a);
  }
  16.混淆字符数组与字符指针的区别
  main()
  {
  char str;
  str=“Computer and c”;
  printf(“%s\n”,str);
  }
  17.在引用指针变量之前没有对它赋予确定的值
  {
  char *p;
  scanf(“%s”,p);
  }
  {
  char *p,c;
  p=c;
  scanf(“%s”,p);
  }
  18.switch语句的各分支中漏写 break语句
  混淆字符和字符串的表示形式
  …
  char sex;
  sex=“M”;
  …
  19.使用自加(++)和自减(--)运算符时出的错误
  {
  int *p,a={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语言课程设计报告摘要怎么写,是指什么啊,举个例子吧

  摘要:又称概要、内容提要。摘要是以提供文献内容梗概为目的,不加评论和补充解释,简明、确切地记述文献重要内容的短文。其基本要素包括研究目的、方法、结果和结论。具体地讲就是研究工作的主要对象和范围,采用的手段和方法,得出的结果和重要的结论,有时也包括具有情报价值的其它重要的信息。

  C语言课程设计,应该主要根据你的设计内容,简要地提炼出设计的背景,功能,意义等。最后给出关键字。下面是正文。

  例如:

        摘要(标题居中)

  近年来随着计算机在社会领域的不断发展,程序设计 。。。。。C语言。。。。(这里讲你做的东西的背景。)

  本课程设计完成了什么。。。。(功能)

  其意义是。。。。(意义)

  关键词: C语言,其他

***隐藏网址***

C语言程序设计课程设计报告怎么写啊有谁有样本吗谢啦!

实 验 报 告 一
课 程 C语言程序设计 实验项目 C程序设计初步 成 绩
专业班级 学 号 指导教师 金发夏
姓 名 序 号 实验日期
一【实验目的】
1. 了解使用VC++6.0的开发环境;
2. 掌握在该系统上如何、编译、连接和运行一个C程序;
3. 通过运行简单的C程序,初步了解C源程序的特点;
二【实验内容】
【实验1-1】输入并运行一个简单的正确程序
1)输入下面的程序
include 《stdio.h》
void main( )
{
printf(" 欢迎学习C语言程序设计!\n ");
}
2).仔细观察屏幕的输入程序,检查有无错误。
3).对该程序进行编译,查看编译输出窗口,检查是否有错误,有错误需要改正错误。无错误就可以运行程序。
【实验1-2】设计一个程序,已知矩形的两条边长为3.2和1.5,求矩形的面积。
【实验1-3】求4和6的和,并在显示器上输出。然后修改程序从键盘上任意输入2个整数,并将二者的和输出。
三【实验过程】
四【实验小结】

c语言课程设计报告模板

课程设计报告内容
报告应包括以下内容:
摘要(300~400字)
目录
1. 概述
2. 课程设计任务及要求
2.1 设计任务
2.2 设计要求
3. 理论设计
3.1方案论证
3.2 系统设计
3.2.1 结构框图及说明
3.2.2 系统原理图及工作原理
3.3 单元电路设计
3.3.1单元电路工作原理
3.3.2元件参数选择
4. 系统设计
4.1 软件设计
4.2 编程过程
4.2 编程结果
5. 安装调试
5.2 安装调试过程
5.3 故障分析
6. 结论
7. 使用仪器设备清单
8. 收获、体会和建议
9. 参考文献

求用C语言编写一个简单的学生信息管理程序和课程设计报告

# include 《iostream》
# include 《fstream》
# include 《string.h》
#include 《conio.h》//用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Student类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Student
{
public:
char name;
char Id;
int Cnum; //C课程得分
int Mnum; //数学课程得分
int Enum; //英语课程得分
int sum; //总分
Student * Next;
void Input()
{
cout《《"\t\t请输入学生的姓名:"; cin》》name;
cout《《"\t\t请输入学生的学号:"; cin》》Id;
cout《《"\t\t请输入C课程的成绩:"; cin》》Cnum;
cout《《"\t\t请输入数学课程的成绩:"; cin》》Mnum;
cout《《"\t\t请输入英语课程的成绩:"; cin》》Enum;
sum=Cnum+Mnum+Enum;
}
void ReadFile(istream & in)
{
in》》name》》Id》》Cnum》》Mnum》》Enum》》sum;
}
void Show()
{
cout《《"姓名:"《《name《《endl《《"学号:"《《Id《《endl《《"C++:"《《Cnum《《endl
《《"数学:"《《Mnum《《endl《《"外语:"《《Enum《《endl《《"总成绩:"《《sum《《endl《《endl《《endl;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Studentmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Studentmassage
{
public:
Studentmassage();
~Studentmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Student *,Student *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Student * p=Head-》Next;p!=End;p=p-》Next)
p-》Show();
cout《《"输入任意字符!继续……";
getch();
}
void AddItem()
{
End-》Input();
End-》Next=new Student;
End=End-》Next;
cout《《"添加成功!"《《endl;
cout《《"输入任意字符!继续……";
getch();
}
private:
Student * Head,* End;
ifstream in;
ofstream out;
Student *FindItem(char * name)
{
for(Student * p=Head;p-》Next!=End;p=p-》Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p-》Next-》name,name))return p;
return NULL;
}
Student *FindID(char * Id)
{
for(Student * p=Head;p-》Next!=End;p=p-》Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p-》Next-》Id,Id))return p;
return NULL;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::Studentmassage()
{
Head=new Student;
Head-》Next=new Student;
End=Head-》Next;
in.open("sort.txt");
if(!in)
cout《《"这是一个新系统,无学生信息。请先输入。"《《endl;
else
{
while(!in.eof())
{
End-》ReadFile(in);
if(End-》name==’\0’)break;
End-》Next=new Student;
End=End-》Next;
}
in.close();
cout《《"\t\t读取学生信息成功!"《《endl;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Studentmassage::~Studentmassage()
{
Save();
for(Student * temp;Head-》Next!=End;)
{
temp=Head-》Next;
Head-》Next=Head-》Next-》Next;
delete temp;
}
delete Head,End;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ShowMenu()
{
cout《《"〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 成 绩 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计成绩 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除学生成绩 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;
cout《《"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"《《endl;

cout《《"\n\t\t\n\t\t请选择:";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Find()
{
char name;
int x;
Student * p=NULL;
cout《《"\n\t\t*********************************\n";
cout《《"\t\t※ 1.按学生的姓名查找\n\t\t※ 2.按学生学号查找";
cout《《"\n\t\t*********************************\n请选择:";
cin》》x;
switch(x)
{
case 1:{cout《《"\t\t请输入要查找的学生的姓名:";cin》》name;
if(p=FindItem(name))
{
p-》Next-》Show();
cout《《"输入任意字符!继续……";
getch();
}
else
{
cout《《"\t\t没有找到该姓名的学生!"《《’\n’《《endl;
cout《《"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout《《"\t\t请输入要查找的学生的学号:";cin》》Id;
if(p=FindID(Id))
{
p-》Next-》Show();
cout《《"输入任意字符!继续……";
getch();
}
else
{
cout《《"\t\t没有找到该学好的学生!"《《’\n’《《endl;
cout《《"输入任意字符!继续……";
getch();
}
}break;
}

}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::ModifyItem() //修改信息
{
char name;
Student * p=NULL;
cout《《"\t\t请输入要修改的人的姓名:";cin》》name;
if(p=FindItem(name))
{
cout《《"\t\t已找到学生的信息,请输入新的信息!"《《endl;
p-》Next-》Input();
cout《《"修改成功!"《《endl;
cout《《"输入任意字符!继续……";
getch();
}
else
{
cout《《"\t\t没有找到!"《《endl;
cout《《"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::RemoveItem() // 删除信息
{
char name;
Student * p=NULL,*temp=NULL;
cout《《"\t\t请输入要删除的学生的姓名:"《《endl;cin》》name;
if(p=FindItem(name))
{
temp=p-》Next;
p-》Next=p-》Next-》Next;
delete temp;
cout《《"\t\t删除成功!"《《endl;
cout《《"输入任意字符!继续……";
getch();
}
else
{
cout《《"\t\t没有找到!"《《endl;
cout《《"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Swap(Student *p1, Student *p2)//交换两个combox变量的数据域
{
Student *temp=new Student;
strcpy(temp-》name,p1-》name);
strcpy(temp-》Id,p1-》Id);
temp-》Cnum=p1-》Cnum;
temp-》Mnum=p1-》Mnum;
temp-》Enum=p1-》Enum;
temp-》sum=p1-》sum;

strcpy(p1-》name,p2-》name);
strcpy(p1-》Id,p2-》Id);
p1-》Cnum=p2-》Cnum;
p1-》Mnum=p2-》Mnum;
p1-》Enum=p2-》Enum;
p1-》sum=p2-》sum;

strcpy(p2-》name,temp-》name);
strcpy(p2-》Id,temp-》Id);
p2-》Cnum=temp-》Cnum;
p2-》Mnum=temp-》Mnum;
p2-》Enum=temp-》Enum;
p2-》sum=temp-》sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Studentmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Student * p=Head-》Next;p!=End;p=p-》Next)
{
n++;
}
return n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Sort()//对当前链表进行排序
{
cout 《《"Sorting..."《《endl;
Student *p=NULL,*p1=NULL,*k=NULL;
int n=Studentmassage::ListCount();
if(n《2)
return;
for(p=Head-》Next;p!=End;p=p-》Next)
for(k=p-》Next;k!=End;k=k-》Next)
{
if(p-》sum》k-》sum)
{
Studentmassage::Swap(p,k);
}
}
cout 《《"排序完成!"《《endl;
getch();
return;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Studentmassage::Save()
{
out.open("sort.txt");
for(Student *p=Head-》Next;p!=End;p=p-》Next)
out《《p-》name《《"\t"《《p-》Id《《"\t"《《p-》Cnum《《"\t"
《《p-》Mnum《《"\t"《《p-》Enum《《"\t"《《p-》sum《《’\n’;
out.close();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout《《"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"《《endl;
for(i=0;i《3;i++)
cout《《"\t\t◎\t\t\t\t\t\t ◎"《《endl;
cout《《"\t\t◎★★★★【 欢迎进入学生成绩管理系统 】★★★★◎"《《endl;
for(i=0;i《3;i++)
cout《《"\t\t◎\t\t\t\t\t\t ◎"《《endl;
cout《《"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"《《endl;;
Studentmassage Grade;
cout《《"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin》》x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
//你要的功能全部实现了~你再改改吧,有多余的功能,设计报告你就自己写写吧!能帮你的就这么多了。

关于c语言程序设计课程设计报告到此分享完毕,希望能帮助到您。

c语言程序设计课程设计报告(计算机c语言实训报告范文)

本文编辑:admin

更多文章:


触摸深睡2游戏下载(触摸深睡2在哪下载)

触摸深睡2游戏下载(触摸深睡2在哪下载)

大家好,如果您还对触摸深睡2游戏下载不太了解,没有关系,今天就由本站为大家分享触摸深睡2游戏下载的知识,包括触摸深睡2在哪下载的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 08:40

win7系统重新安装(旧电脑怎么重新win7系统 老电脑重装win7新系统方法介绍)

win7系统重新安装(旧电脑怎么重新win7系统 老电脑重装win7新系统方法介绍)

各位老铁们好,相信很多人对win7系统重新安装都不是特别的了解,因此呢,今天就来为大家分享下关于win7系统重新安装以及旧电脑怎么重新win7系统 老电脑重装win7新系统方法介绍的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来

2026年10月11日 08:20

手机拉黑了用飞信(电话被拉黑怎么用电脑发信息给别人看)

手机拉黑了用飞信(电话被拉黑怎么用电脑发信息给别人看)

这篇文章给大家聊聊关于手机拉黑了用飞信,以及电话被拉黑怎么用电脑发信息给别人看对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月11日 07:50

笔记本电脑怎么设置动态桌面壁纸(电脑怎么设置动态桌面)

笔记本电脑怎么设置动态桌面壁纸(电脑怎么设置动态桌面)

各位老铁们,大家好,今天由我来为大家分享笔记本电脑怎么设置动态桌面壁纸,以及电脑怎么设置动态桌面的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 07:30

射雕群侠传手游官网(新射雕群侠传初期侠客获取方式攻略)

射雕群侠传手游官网(新射雕群侠传初期侠客获取方式攻略)

大家好,关于射雕群侠传手游官网很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于新射雕群侠传初期侠客获取方式攻略的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

2026年10月11日 07:10

4枚美制导弹奇袭俄本土(真实的俄罗斯“匕首”导弹)

4枚美制导弹奇袭俄本土(真实的俄罗斯“匕首”导弹)

各位老铁们,大家好,今天由我来为大家分享4枚美制导弹奇袭俄本土,以及真实的俄罗斯“匕首”导弹的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2026年10月11日 07:00

手机下载word文档(哪个手机word软件好用)

手机下载word文档(哪个手机word软件好用)

大家好,今天小编来为大家解答以下的问题,关于手机下载word文档,哪个手机word软件好用这个很多人还不知道,现在让我们一起来看看吧!

2026年10月11日 05:20

大富豪2为什么下架了(宫颐府大富豪面包为什么断货)

大富豪2为什么下架了(宫颐府大富豪面包为什么断货)

大家好,如果您还对大富豪2为什么下架了不太了解,没有关系,今天就由本站为大家分享大富豪2为什么下架了的知识,包括宫颐府大富豪面包为什么断货的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!

2026年10月11日 05:10

地下城与勇士手游贴吧(地下城与勇士手游贴吧狂战带火炬还是屠戮)

地下城与勇士手游贴吧(地下城与勇士手游贴吧狂战带火炬还是屠戮)

各位老铁们好,相信很多人对地下城与勇士手游贴吧都不是特别的了解,因此呢,今天就来为大家分享下关于地下城与勇士手游贴吧以及地下城与勇士手游贴吧狂战带火炬还是屠戮的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月11日 04:30

拼多多官网进入(拼多多官方网平台)

拼多多官网进入(拼多多官方网平台)

本篇文章给大家谈谈拼多多官网进入,以及拼多多官方网平台对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月11日 04:20

最近更新

repercussions(都是余波,repercussions和aftermath有什么区别啊)
2026-10-11 09:00:05 浏览:0
dropdownlist 绑定(DropDownList 绑定所有项 并 显示指定项)
2026-10-11 08:50:04 浏览:0
majority of(the majority of 和 a majority of的区别以及用法例句)
2026-10-11 07:40:02 浏览:0
热门文章

标签列表