C语言编程实训报告C语言绘图

时间:2024.4.20

天津电子信息职业技术学院

暨国家示范性软件职业技术学院

二级C编程实训报告

              姓    名:                 

              系    别:                

              专    业:                

              班    级:                

              指导教师:      邵慧娟    

              完成时间: 2013  年1月 11日

C语言绘图

前言

C语言是在 70 年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C 语言,后来由美国国家标准协会(American National Standards Institute)在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。

很多编程语言都深受 C语言的影响,比如C++(原先是C语言的一个扩展),C#,Java,PHP, Javascript, Perl,LPC 和 UNIX 的C Shell。也正因为 C语言的影响力,掌握 C语言的人,再学其它编程语言,大多能很快上手,触类旁通。要学好一门编程语言,一定要边学边练,你要有一个 C语言的开发工具,在此教程中,我们使用微软的Visual Studio 开发C语言程序。

C语言是一门通用的,模块化,程序化的编程语言,被广泛应用于操作系统和应用软件的开发。由于其高效和可移植性,适应于不同硬件和软件平台,深受开发员的青睐。一个C语言源程序可以由一个或多个源文件组成,.每个源文件可由一个或多个函数组成。一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面,每一个说明,每一个语句都必须以分号结尾,但是预处理命令,函数头和花括号“}”之后不能加分号,标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。下面利用c语言程序来绘制漂亮的六页图案。


一、具体任务:利用画弧函数arc()绘制不同的弧线,从而制作出优美的六叶图案。

二、要求:绘制漂亮的六叶图案的母体是让读者掌握画弧函数arc()的应用,同时要注意两个三角函数sin()、cos()(只能用弧度)的使用方法。

三、C语言程序说明:

绘制漂亮的六叶图案主要讲解arc(),她的调用格式如下:

void far arc(int x,int y,int stangle,int endangle,int radius)

四、参数说明:

x,y为所绘制的弧线以(x,y)为圆心。

radius:所绘制弧线的半径,从stangle开始到endangle结束(用度表示),画一段圆弧线。在TURBO C中规定x轴正向为0度,逆时针方向旋转一周,依次为90度、180度、270度和360度。
     另外,绘制漂亮的六叶图案还讲解了两个三家函数sin()、cos()。注意,在语言程序中使用三角函数时,要把度数转化为弧度才能带入公式进行运算,度数与弧度的具体切换示例:25度编程弧度为25*3.14/180。

五、代码如下:

#include <graphics.h>
#include <math.h>
#include <conio.h>

#define PI 3.1415926535

/* 图形驱动函数 */
void initgr(void)
{
int gd = DETECT, gm = 0;
registerbgidriver(EGAVGA_driver);
initgraph(&gd, &gm, "");
}

void main(void)
{
double a = 0, b;
int x0 = 340, y0 = 240, radius = 100, i, x, y;
initgr(); /* 驱动图形模式 */
setcolor(2); /* 设置前景色为绿色 */
setlinestyle(0, 0, 0); /* 设置股线的类型与宽度 */
for(i = 0; i < 6; i++, a += 60)
{
b = a * PI / 180; /* 把度数转化为弧度 */
x = x0 + radius * cos(b);
y = y0 + radius * sin(b);

arc(x, y, 120 - i * 60, 240 - i * 60, radius); /* 绘制弧线 */
}
getch(); /* 暂停屏幕查看结果 */
closegraph(); /* 关闭图形模式 */
}

六、运行结果:

七、设计体会

    在初学C语言时,可能会遇到有些问题理解不透,或者表达方式与以往数学学习中不同(如运算符等),这就要求不气馁,不明白的地方多问多想,鼓足勇气进行学习,待学完后面的章节知识,前面的问题也就迎刃而解了,这一方面我感觉是我们学生最欠缺,大多学不好的就是因为一开始遇到困难就放弃,曾经和好多同学谈他的问题,回答是听不懂、不想听、放弃,相应的根本就没学习,又谈何学的好?初学者遇到最多的困惑是:上课也能听懂,书上的例题也能看明白,可是到自己动手做编程时,却不知道如何下手。发生这种现象的原因有三个:
    1、所谓的看懂听明白,只是很肤浅的语法知识,而我们编写的程序或软件是要根据要解决问题的实际需要控制程序的流程,如果你没有深刻地理解C语言的语句的执行过程(或流程),你怎么会编写程序解决这些实际问题呢?
    2、用C语言编程解决实际问题,所需要的不仅仅是C语言的编程知识,还需要相关的专业知识。例如,如果你不知道长方形的面积公式,即使C语言学得再好你也编不出求长方形的面积的程序来。
    3、C语言程序设计是一门实践性很强的课程,“纸上谈兵”式的光学不练是学不好C语言的。例如,大家都看过精彩自行车杂技表演,假如,你从来没有骑过自行车,光听教练讲解相关的知识、规则、技巧,不要说上台表演、就是上路你恐怕都不行。


第二篇:C语言编程实训报告


设计题目及要求设计题目及要求设计题目及要求设计题目及要求

1.综合应用实例——学生成绩管理 编写一个菜单驱动的学生成绩管理程序。实现如下管理功能:

(1) 能输入并显示 n 个学生的 m 门考试科目的成绩、总分和平均分。

(2) 按总分进行排序。

(3) 按学号进行排序。

(4) 任意输入一个学号,能显示该学生的姓名、各门功课的成绩

(5) 将输入的学生成绩数据保存到文件中。

(6) 从文件中读出学生成绩数据。

具体要求如下:

1 )先用静态的数据结构(结构体数组)来存储和管理 n 个学生的学号、姓名、成绩等信息,进行编程。

2 )排序函数是一个具有多种排序方式的、通用的、排序程序,即不仅可以实现成绩的升序排序,还可以实现成绩的降序排序。

3 )程序能够进行异常处理,检查用户输入数据的有效性,在用户输入数据有错误(如类型错误)或无效时,不会中断程序的执行,程序具有一定的健壮性。

4 )输出菜单形式如下:

1.输入学生记录

2.浏览学生记录

3.修改学生记录

4.排序 0.退出 请选择(0-4):

5) 排序菜单形式如下: 排序方式: 1.按总分升序排序 2.按总分降序排序 3.按学号排序 0.返回主菜单 请选择:

二二二二、、、、算法分析及实现步骤算法分析及实现步骤算法分析及实现步骤算法分析及实现步骤

总体算法分析的思路就是用调用函数来实现每个小程序的作用,首先是确定头文件,定义学生成绩结构体类型,用结构体函数实现。然后在函数执行过程中调用主菜单函数,紧接着被调用函数返回一个值给主函数,由返回来的值确定主函数应该执行下面的哪个步骤,再用一个while语句控制下面的几个步骤的循环,里面再嵌套switch语句来控制对每个小菜单程序的执行。例如:当调用函数返回“1”时,经过switch语句的判断之后就会执行相应的程序,最后,又会返回到主菜单程序中。其它的都一样。当调用函数返回的值是“4”时,此时因为排序里面还有一个排序的子菜单,所以此时这里我又用了一个switch语句来实现对排序程序的控制,也就是说在switch语句里面再嵌套switch语句。对排序程序进行的控制。等到跳出排序程序的时候,其它的都和之前的选择那样。其中,浏览每个学生信息的函数先计算出每个学生的平均成绩然后用for语句来实现每个学生信息的循环输入。修改学生信息的函数里面也用到了for语句,先找到相同的学号,然后在修改后循环执行。后来的排序程序都选用冒泡法来执行。当然一切程序都是从主函数开始执行。

三三三三、、、、源程序代码源程序代码源程序代码源程序代码

#include <iostream.h>

struct student // 定义学生成绩结构体类型定义学生成绩结构体类型定义学生成绩结构体类型定义学生成绩结构体类型

{

int no; char name[8];

float eng,phy,math,sum,ave;};

int menu(student s[],int n) // 主菜单函数主菜单函数主菜单函数主菜单函数

{

int k;

cout<<"欢迎使用学生成绩管理软件欢迎使用学生成绩管理软件欢迎使用学生成绩管理软件欢迎使用学生成绩管理软件"<<endl;

cout<<" "<<endl;

cout<<"学生成绩管理系统菜单学生成绩管理系统菜单学生成绩管理系统菜单学生成绩管理系统菜单"<<endl;

cout<<"1.输入学生记录输入学生记录输入学生记录输入学生记录"<<endl;

cout<<"2.浏览学生记录浏览学生记录浏览学生记录浏览学生记录"<<endl;

cout<<"3.修改学生记录修改学生记录修改学生记录修改学生记录"<<endl;

cout<<"4.排序排序排序排序"<<endl;

cout<<"0.退出退出退出退出"<<endl;

cout<<"请选择请选择请选择请选择(0-4):";

cin>>k;

return k;} void Input(student s[],int n) // 输输输输入入入入函数函数函数函数

{

int i;

cout<<"输入学号输入学号输入学号输入学号:"<<endl; cout<<"学号学号学号学号、、、、姓名姓名姓名姓名、、、、英语英语英语英语、、、、物理物理物理物理、、、、数学成绩数学成绩数学成绩数学成绩"<<endl;

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

{

cout<<"第第第第"<<i+1<<"位学生的信息位学生的信息位学生的信息位学生的信息:"; cin>>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math; s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math; }}

void Ave(student s[],int n) // 浏览每个学生浏览每个学生浏览每个学生浏览每个学生信息的信息的信息的信息的函数函数函数函数

{

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

{ s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;

}

cout<<"学号学号学号学号"<<'\t'<<"姓名姓名姓名姓名"<<'\t'<<"英语英语英语英语"<<'\t'<<"物理物理物理物理"<<'\t'<<"数学数学数学数学"<<'\t'<<"总成绩总成绩总成绩总成绩"<<'\t'<<"平均成绩平均成绩平均成绩平均成绩"<<'\n';

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

cout<<s[i].no<<'\t'<<s[i].name<<'\t'<<s[i].eng<<'\t'<<s[i].phy<<'\t'<<s[i].math<<'\t'<<s[i].sum<<'\t'<<s[i].ave<<'\n';

}

int Sort(student s[],int n) // 排序的子菜单排序的子菜单排序的子菜单排序的子菜单函数函数函数函数

{

int y;

cout<<"排序方式排序方式排序方式排序方式:"<<endl;

cout<<"1.按总分升序排序按总分升序排序按总分升序排序按总分升序排序"<<endl; cout<<"2.按总分降序排序按总分降序排序按总分降序排序按总分降序排序"<<endl; cout<<"3.按学号排序按学号排序按学号排序按学号排序"<<endl;

cout<<"0.返回主菜单返回主菜单返回主菜单返回主菜单"<<endl;

cout<<"请选择请选择请选择请选择:";

cin>>y;

return y;

}

void change(student s[],int n) // 修改学生信息的函数修改学生信息的函数修改学生信息的函数修改学生信息的函数

{

int i,j;

cout<<"请输入要修改的学生的学号请输入要修改的学生的学号请输入要修改的学生的学号请输入要修改的学生的学号:";

cin>>j;

for(i=0;i<n;i++) if(j==s[i].no)

{

cout<<endl;

cout<<"学生的信息学生的信息学生的信息学生的信息:"<<endl; cout<<s[i].no<<'\t'<<s[i].name<<'\t'<<s[i].eng<<'\t'<<s[i].phy<<'\t'<<s[i].math<<'\t'<<s[i].sum<<'\t'<<s[i].ave<<'\n';

cout<<"请输入修改的信息请输入修改的信息请输入修改的信息请输入修改的信息"<<endl; cin>>s[i].no>>s[i].name>>s[i].eng>>s[i].phy>>s[i].math; s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;

}}

void zpxs(student s[],int n) // 按总分升序按总分升序按总分升序按总分升序排序排序排序排序的函数的函数的函数的函数

{

int i,j; student temp; for(i=0;i<n;i++)

{

s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3;s[i].sum=s[i].eng+s[i].phy+s[i].math;}

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

{ for(j=0;j<n-i-1;j++) if(s[j].sum>s[j+1].sum)

{ temp=s[j]; s[j]=s[j+1]; s[j+1]=temp;

}}

cout<<"学号学号学号学号"<<'\t'<<"姓名姓名姓名姓名"<<'\t'<<"英语英语英语英语"<<'\t'<<"物理物理物理物理"<<'\t'<<"数学数学数学数学"<<'\t'<<"总成绩总成绩总成绩总成绩"<<'\t'<<"平均成绩平均成绩平均成绩平均成绩"<<'\n';

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

cout<<s[i].no<<'\t'<<s[i].name<<'\t'<<s[i].eng<<'\t'<<s[i].phy<<'\t'<<s[i].math<<'\t'<<s[i].sum<<'\t'<<s[i].ave<<'\n';

}

void zpxj(student s[],int n) // 按总分降序排序按总分降序排序按总分降序排序按总分降序排序的函数的函数的函数的函数

{

int i,j; student temp; for(i=0;i<n;i++)

{s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;}

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

{ for(j=0;j<n-i-1;j++) if(s[j].sum<s[j+1].sum) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp;}} cout<<"学号学号学号学号"<<'\t'<<"姓姓姓姓名名名名"<<'\t'<<"英语英语英语英语"<<'\t'<<"物理物理物理物理"<<'\t'<<"数学数学数学数学"<<'\t'<<"总成绩总成绩总成绩总成绩"<<'\t'<<"平均成绩平均成绩平均成绩平均成绩"<<'\n';

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

cout<<s[i].no<<'\t'<<s[i].name<<'\t'<<s[i].eng<<'\t'<<s[i].phy<<'\t'<<s[i].math<<'\t'<<s[i].sum<<'\t'<<s[i].ave<<'\n';}

void xhpxs(student s[],int n) // 按学号升序排序按学号升序排序按学号升序排序按学号升序排序的函数的函数的函数的函数

{ int i,j; student temp; for(i=0;i<n;i++) { s[i].ave=(s[i].eng+s[i].phy+s[i].math)/3; s[i].sum=s[i].eng+s[i].phy+s[i].math;}

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

{ for(j=0;j<n-i-1;j++) if(s[j].no>s[j+1].no) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp;}} cout<<"学号学号学号学号"<<'\t'<<"姓名姓名姓名姓名"<<'\t'<<"英语英语英语英语"<<'\t'<<"物理物理物理物理"<<'\t'<<"数学数学数学数学"<<'\t'<<"总成绩总成绩总成绩总成绩"<<'\t'<<"平均成绩平均成绩平均成绩平均成绩"<<'\n';

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

cout<<s[i].no<<'\t'<<s[i].name<<'\t'<<s[i].eng<<'\t'<<s[i].phy<<'\t'<<s[i].math<<'\t'<<s[i].sum<<'\t'<<s[i].ave<<'\n';}

void main() // 主函数主函数主函数主函数

{ int i,g; student stu[3]; while (i) {i=menu(stu,3); switch(i) { case 1:Input(stu,3); cout<<" "<<endl; break; case 2:Ave(stu,3);

cout<<" "<<endl;break; case 3:change(stu,3);

cout<<" "<<endl;break; case 4: while (g) { g=Sort(stu,3); switch (g) { case 1:zpxs(stu,3);break; case 2:zpxj(stu,3);break; case 3:xhpxs(stu,3);break; case 0:g=0;} }

cout<<" "<<endl;break; case 0:cout<<'\t'<<"退出退出退出退出"<<endl;break;}}} 四四四四、、、、 实训总结实训总结实训总结实训总结 通过这两个礼拜的实训练习,让我收获很多,在实训的第一节课上,老师给我们一个关于学生成绩管理程序的执行文件,然后告诉我们它有什么功能,一一演示给我们看。最后对我们说我们这两个礼拜的实训作业就是运用我们之前所学过的知识来写出这个程序的源程序代码。在此之前我们都惊呆了,都说不会做。可是在老师悉心的教导下,我们先开始写好自己对这个题目的思路,然后一步一步往下做,一个一个程序的写。在做完题后我自己觉得其实正如老师所说的那样,那些知识我们都学过的,只是我们欠缺对知识的整合能力。虽然在完成作业的过程中遇到了很多不懂的地方,但是在老师的殷切指导下以及与同学的交流中,我最后还是完成了实训作业。让我的知识又得到了很大一步的提升,真希望以后多让我们做这种作业。这样的话我觉得学到的知识会更多,动手能力也提升的很快。

更多相关推荐:
C语言实验报告范文

计算机科学与技术系C语言实验报告实验名称:指针及其应用日期:得分:指导老师:专业:班次:姓名:学号:实验目的(1)掌握变量的指针及其基本用法。(2)掌握一维数组的指针及其基本用法。(3)掌握指针变量作为函数的参…

C语言实训报告

C语言程序设计与数据结构实训报告课题名称通讯录管理系统专业软件技术开发方向班级软件G083学号姓名徐阳指导教师黄爽20xx年12月25日目录1课程设计目的12课程设计题目13课程设计报告内容14结论105结束语...

C语言实验报告标准格式

暨南大学本科实验报告专用纸课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号8060151108实验项目类型综合性实验地点C301学生姓名苟长弘学号20xx051282学院信息...

C语言实验报告书写格式及模板

大学学院实验报告专业名称实验室实验课程C实验名称姓名学号同组人员实验日期语言程序设计程序设计12345678

c语言实验报告模板完成版

高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运...

C语言实验报告范本

实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别信息与通信工程学院专业通信班级学号通信120420xx010934学生姓名王浩鑫实验日期20xx年4月13日成绩指导教师一实验目的1234...

c语言实验报告范本

说明下面的模板中黑体字标明的部分是我加的注释大家要按注释来写报告实验项目名称符号函数的实现此条要求写清楚一实验目的熟练掌握ififelseifelseif语句格式及使用方法掌握if语句中的嵌套关系和匹配原则利用...

C语言实习报告

C语言课程实习报告所在院系经济管理学院班级学号083081学序号20xx1003628姓名胡雅雯程序已存档指导老师赵曼评分二零一零年一月十五日题目一担挑游戏简单计算机模拟棋盘对奕其中棋盘左上角坐标为11右下角坐...

C语言实验报告

安康学院电子与信息工程系实验报告1实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2掌握字符数组和字符串函数的使用3掌握与数组有关的算法特别是算法排序2实验内容及方案10Configuration1Wi...

c语言 实验报告 范例

程序设计基础实验报告选择结构程序设计实验报告实验题目选择结构程序设计实验目的1了解C语言表示逻辑量的方法以0代表假以非0代表真23456学会正确使用逻辑运算算符和逻辑表达式熟练掌握if语句的使用包括if语句的嵌...

C语言实验报告模板

中国地质大学江城学院C语言课程设计报告姓名班级学号2510110424指导教师周斌20xx年6月19日目录一实验题一2二实验题二2三实验题三3四实验题四5五实验题五6六实验题六81一实验题一1求一元二次方程ax...

C语言课程设计实习报告范本

C语言课程设计实习报告学生姓名萱冰伊寒学号22日期20xx年3月3日目录一程序分析与设计1二流程图1三源程序清单4四调试过程10五程序有待改进的地方10六本次实习的收获和建议11附录11C语言课程设计实习报告一...

c语言实训报告(40篇)