C语言实训心得

C语言实训心得,第1张

源程序:

#include "stdioh" /I/O函数/

#include "stdlibh" /其它说明/

#include "stringh" /字符串函数/

#include "conioh" /屏幕 *** 作函数/

#include "memh" /内存 *** 作函数/

#include "ctypeh" /字符 *** 作函数/

#include "alloch" /动态地址分配函数/

#include "dosh"

#define N 4 /定义常数/

typedef struct z1 /定义数据结构/

{

char no[12];

char name[20];

int score[N];

float sum;

float average;

int order;

struct z1 next;

}STUDENT;

/以下是函数原型/

STUDENT init(); /初始化函数/

STUDENT create(); /创建链表/

STUDENT delete(STUDENT h); /删除记录/

void print(STUDENT h); / 显示所有记录/

void lookup(STUDENT h); /查找/

void save(STUDENT h); /保存/

STUDENT load(); /读入记录/

void computer(STUDENT h); /计算总分和均分/

STUDENT Modify(STUDENT h); /修改记录/

void append(); /追加记录/

STUDENT sort(STUDENT h); /按总分排序/

STUDENT index(STUDENT h); /按学号排序/

int menu_select(); /菜单函数/

/主函数开始/

main()

{

int i;

STUDENT head; /链表定义头指针/

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

printf(" \n");

printf(" \n");

printf(" \n" );

printf(" \n");

printf(" \n");

printf("\n");

printf("\n");

printf("\n");

sleep(2);

head=init(); /初始化链表/

clrscr(); /清屏/

for(;;) /无限循环/

{

switch(menu_select()) /调用主菜单函数,返回值整数作开关语句的条件/

{ /值不同,执行的函数不同,break 不能省略/

case 0:head=init();break; /执行初始化/

case 1:head=create();break; /创建链表/

case 2:print(head);break; /显示全部记录/

case 3:head=delete(head);break; /删除记录/

case 4:lookup(head);break; /按名字查找记录/

case 5:save(head);break; /保存文件/

case 6:head=load(); break; /读文件/

case 7:computer(head);break; /计算总分和均分/

case 8:head=Modify(head); break; /修改记录,一般会插在表尾/

case 9:head=sort(head);break; /按部分排序/

case 10:append();break; /追加记录/

case 11:head=index(head);break; /按学号排序/

case 12: exit(0); /如菜单返回值为14程序结束/

}

}

}

/菜单函数,返回值为整数/

menu_select()

{

char menu[]={"MENU", /定义菜单字符串数组/

" 00 init list", /初始化/

" 01 Enter list", /输入记录/

" 02 print list ", /显示单链表中所有记录/

" 03 Delete a record from list", /从表中删除记录/

" 04 Search record on name", /按照姓名查找记录/

" 05 Save the file", /将单链表中记录保存到文件中/

" 06 Load the file", /从文件中读入记录/

" 07 compute the score", /计算所有学生的总分和均分/

" 08 Modify an information ", /修改某学号的信息/

" 09 sort to make new file", /排序/

" 10 append record to file", /追加记录到文件中/

" 11 index on nomber", /按学号排序/

" 12 Quit"}; /退出/

char s[3]; /以字符形式保存选择号/

int c,i; /定义整形变量/

gotoxy(1,1); /移动光标/

textcolor(YELLOW); /设置文本显示颜色为**/

textbackground(BLUE); /设置背景颜色为蓝色/

gotoxy(10,2); /移动光标/

putch(0xc9); /输出左上角边框┏/

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

putch(0xcd); /输出上边框水平线/

putch(0xbb); /输出右上角边框 ┓/

for(i=3;i<20;i++)

{

gotoxy(10,i);putch(0xba); /输出左垂直线/

gotoxy(54,i);putch(0xba);

} /输出右垂直线/

gotoxy(10,20);putch(0xc8); /输出左上角边框┗/

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

putch(0xcd); /输出下边框水平线/

putch(0xbc); /输出右下角边框┛/

window(11,3,53,19); / 制作显示菜单的窗口,大小根据菜单条数设计/

clrscr(); /清屏/

for(i=0;i<16;i++) /输出主菜单数组/

{

gotoxy(10,i+1);

cprintf("%s",menu[i]);

}

textbackground(BLACK); /设置背景颜色为黑色/

window(1,1,80,25); /恢复原窗口大小/

gotoxy(10,21); /移动光标/

do{printf("\n make by wenwei");<br><br> printf("\n Enter you choice(0~13):"); /在菜单窗口外显示提示信息/<br><br> scanf("%s",s); /输入选择项/<br><br> c=atoi(s); /将输入的字符串转化为整形数/<br><br> }while(c<0||c>14); /选择项不在0~14之间重输/

return c; /返回选择项,主程序根据该数调用相应的函数/

}

STUDENT init()

{ clrscr();

return NULL;

}

/创建链表/

STUDENT create()

{

int i; int s;

STUDENT h=NULL,info; / STUDENT指向结构体的指针/

clrscr();

for(;;)

{

info=(STUDENT )malloc(sizeof(STUDENT)); /申请空间/

if(!info) /如果指针info为空/

{

printf("\nout of memory"); /输出内存溢出/

return NULL; /返回空指针/

}

inputs("enter no:",info->no,11); /输入学号并校验/

if(info->no[0]=='@') { clrscr();break; } /如果学号首字符为@则结束输入,清屏后返回/

inputs("enter name:",info->name,15); /输入姓名,并进行校验/

printf("please input %d score \n",N); /提示开始输入成绩/

s=0; /计算每个学生的总分,初值为0/

for(i=0;i<N;i++) /N门课程循环N次/

{

do{

printf("score%d:",i+1); /提示输入第几门课程/

scanf("%d",&info->score[i]); /输入成绩/

if(info->score[i]>100||info->score[i]<0) /确保成绩在0~100之间/

printf("bad data,repeat input\n"); /出错提示信息/

}while(info->score[i]>100||info->score[i]<0);

s=s+info->score[i]; /累加各门课程成绩/

}

info->sum=s; /将总分保存/

info->average=(float)s/N; /求出平均值/

info->order=0; /未排序前此值为0/

info->next=h; /将头结点做为新输入结点的后继结点/

h=info; /新输入结点为新的头结点/

clrscr();

}

return(h); /返回头指针/

}

/输入字符串,并进行长度验证/

inputs(char prompt, char s, int count)

{

char p[255];

do{

printf(prompt); /显示提示信息/

scanf("%s",p); /输入字符串/

if(strlen(p)>count)printf("\n too long! \n"); /进行长度校验,超过count值重输入/

}while(strlen(p)>count);

strcpy(s,p); /将输入的字符串拷贝到字符串s中/

}

/输出链表中结点信息/

void print(STUDENT h)

{

int i=0; / 统计记录条数/

STUDENT p; /移动指针/

clrscr(); /清屏/

p=h; /初值为头指针/

printf("\n\n\nSTUDENT\n");

printf("|rec|nO | name | sc1| sc2| sc3| sc4| sum | ave |order|\n");

printf("|---|----------|---------------|----|----|----|----|--------|--------|-----|\n");

while(p!=NULL) /只要p不是尾结点,就输出记录/

{

i++;

printf("|%3d|%-10s|%-15s|%4d|%4d|%4d|%4d| %62f | %62f | %3d |\n", i, p->no,p->name,p->score[0],p->score[1],p->score[2],p->score[3],p->sum,p->average,p->order);

p=p->next;

}

printf("end\n");

getch(); /输入任一键返回主菜单/

clrscr(); /清屏/

}

/删除记录/

STUDENT delete(STUDENT h)

{

STUDENT p,q; /p为查找到要删除的结点指针,q为其前驱指针/

char s[12]; /存放学号/

char pass="wenwei28";

char a[20],b=NULL;

int i=0;

clrscr();

printf("Input your password:");

while((i<20)&&(b!='\r'))

{ b=getch(); /无回显输入/

if(b==8)

{ if(i>0)

{a[--i]=NULL;<br><br> putchar(8); /退格键/<br><br> putchar(' '); /以空格代替/<br><br> putchar(8);<br><br> }

else putchar(7); /没有任何字符的退格,响铃警告/

}

else if(b!='\r')

{ a[i++]=b; /只要不是退格和回车就接受/

putchar('');

}

else

{a[i]=NULL; break; /密码输入完了,记得加个NULL到后面/<br><br> }

}

if(strcmp(a,pass)!=0)

{clrscr();<br><br> printf("Password is mistake Tow seconds to return!");<br><br> sleep(2);clrscr();return h;<br><br>}

else {printf("Password is OK! Welcome to come!"); sleep(3);<br><br>}

clrscr(); /清屏/

printf("please deleted no\n"); /显示提示信息/

scanf("%s",s); /输入要删除记录的学号/

q=p=h; /给q和p赋初值头指针/

while(strcmp(p->no,s)&&p!=NULL) /当记录的学号不是要找的,或指针不为空时/

{

q=p; /将p指针值赋给q作为p的前驱指针/

p=p->next; /将p指针指向下一条记录/

}

if(p==NULL) /如果p为空,说明链表中没有该结点/

{ printf("\nlist no %s student\n",s);sleep(2);clrscr();return h;}

else /p不为空,显示找到的记录信息/

{

printf("have found\n");

printf("|no | name | sc1| sc2| sc3| sc4| sum | ave |order|\n");

printf("|------------|---------------|----|----|----|----|--------|--------|-----|\n");

printf("|%-12s|%-15s|%4d|%4d|%4d|%4d| %62f | %6-52f | %3d |\n", p->no,

p->name,p->score[0],p->score[1],p->score[ q=p; /保存当前结点的指针,作为下一结点的前驱/

p=p->next; /指针后移,新读入数据链到当前表尾/

}

q->next=NULL; /最后一个结点的后继指针为空/

fclose(fp); /关闭文件/

printf("---You have success read data from file!!!---\n");

getch(); /按任意键返回主菜单/

clrscr();

return h; /返回头指针/

}

/成绩统计/

void computer(STUDENT h)

{

STUDENT p,t,q; /定义移动指针/

float saverage[N]={0}; /均分初值为0/

int i;

clrscr();

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

{ int n=0,j=0; /保存记录条数初值为0/

long s=0; /总分初值为0/

p=h; /从头指针开始/

while(p!=NULL) /当p不为空时处理/

{

s+=p->score[i]; /累加总分/

j++; /统计记录条数/

p=p->next; /指针后移/

h; /返回头指针 就知道这么多了,我不太懂咯~~~~心得就不来写了,自己写哈!~!~!

案例一 贪吃蛇游戏

案例二 计算器

案例三 黑白棋游戏

案例四 迷宫问题

案例五 扫地雷游戏

案例六 速算24

案例七 数据结构CAI系统

案例八 进程调度

案例九 存储管理分区分配算法

案例十 通讯录

案例十一 学生成绩管理

案例十二 工资管理

案例十三 图书借阅管理

案例十四 教师工作量计算

楼主在这中间加减点东西,就可以用

过C语言实训,让我加深了对C语言的了解,而不只是单单的在课本中学到的那些理论,平时乏味的课程,通过自己动手亲自编写,变的生动有趣,而在自己动手的过程中,出现的问题很多,比理论要难的多,当一个程序写完以后,经常会有很多错误而没法解决。不过,通过几天的实训,逐渐积攒了一些经验,有些错误可以很快就看出来。

这次实训有很大的收获,让我对C语言有了更深的认识,平时在课堂上学到的东西可以自己动手编写,将其转化成一些实用的技能。如果是一个程序写完一处错误也没有,会有种成就感,于是兴趣就来了,兴趣来了,自然学的东西也就多了,能把理论变成实际的技能,让我对C语言有了浓厚的兴趣和更深层的认识。

C语言是一个有序的学习,学了最基本的替换,然后扩展到循环,嵌套,条理很清楚,不是一个零散的知识,实际上所有的课程都如此,不过通过实训我也知道了自己的不足,存在的很多问题。

比如自己写的写的小程序出了问题,不会解决了就叫老师帮忙,虽然说一定意义上增加了师生之间的感情,但是会养成一种依赖的心理,碰到问题了个想到的是求助而不是自己独立解决,所以以后要多多锻炼自己的信心和增加自己的能力,争取做到老师不在身边的时候也可以完成一些简单的程序编写与错误排除。

还有自己的基础知识不扎实,遇到的问题,没有很好的逻辑思维,亲自编写一个陌生的程序的时候会有种无法下手的感觉,找不到突破口。通过实训,逐渐理清了顺序,对于简单的程序和一些相对比较繁琐的嵌套,循环,不在是看着一头雾水。其实只要理清了思路,把基础知识掌握了,然后有条不紊的分析,一步一步理解,C语言还是很有意思的课程。

自己亲自动手编写程序让我增加了对C语言程序开发环境的了解,在上课的时候老师就讲,学习C语言最重要的是学习C语言的逻辑思维,不管以后从事什么行业,学习C语言都对自己的职业很有帮助,如果是从事编程工程工作的话,就更有帮助了,即使以后的编程工作可能不用C语言,但是拥有扎实的C语言基础是对工作很有用的。

当初在初步接触C语言的时候,看着一堆“奇形怪状”的符号,觉得甚是无聊,通过这次实训,摆脱了那种似懂非懂的状态!

感谢学校安排这次实训和老师的耐心讲解,让我学到了很多知识,在实训过程中,同学之间的相互探讨,老师的循循善诱,最终让我们达到了举一反三的效果,在学知识的同时,也增加了同学老师之间的感情。希望以后还会有更多类似的实训课程,在有限的大学时间内学到更多的实用技能,为以后的工作打下一个良好的基础

从目的、任务出发写实训项目、任务分工说明直接写每个人负责什么部分即可。

实训项目和任务分工说明主要是为了简洁的可以看到结果和过程。

C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。

第2题;

#include<stdioh>

void main()

{

char p[7]={"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};

int i;

printf("please input a number:\n");

scanf("%d",&i);

switch(i)

{case 1:printf("Monday\n");break;

case 2:printf("Tuesday\n");break;

case 3:printf("Wednesday\n");break;

case 4:printf("Thursday\n");break;

case 5:printf("Friday\n");break;

case 6:printf("Saturday\n");break;

case 7:printf("Sunday\n");break;

default:break;

}

}

运行结果是:

please input a number:

3

Wednesday

第3题:

#include<stdioh>

struct student

{ char no[5];

char name[10];

int score[4];

double average;

};

void readrec(struct student s[5])

{

int i;

printf("please input 5 students'information\n");

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

{s[i]average=00;

scanf("%s%s%d%d%d%d",s[i]no,s[i]name,&s[i]score[0],&s[i]score[1],&s[i]score[2],&s[i]score[3]);

s[i]average=(s[i]score[0]+s[i]score[1]+s[i]score[2]+s[i]score[3])/40;

}

}

void writerec(struct student s[5])

{

int j;

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

{printf("%s %s %d %d %d %d %f",s[j]no,s[j]name,s[j]score[0],s[j]score[1],s[j]score[2],s[j]score[3],s[j]average);

printf("\n");}

}

void main()

{struct student s[5];

readrec(s);

printf("these 5 students'information are:\n");

writerec(s);

}

运行结果是:

please input 5 students'information

1061 lili 76 75 74 78

1062 wangsui 80 87 84 86

1063 huangsi 76 74 80 91

1064 chengong 82 87 89 90

1094 huwei 90 100 64 80

these 5 students'information are:

1061 lili 76 75 74 78 75750000

1062 wangsui 80 87 84 86 84250000

1063 huangsi 76 74 80 91 80250000

1064 chengong 82 87 89 90 87000000

1094 huwei 90 100 64 80 83500000

第4题不会

第5题

#ifndef TRUE

#define TRUE 1

#endif

#ifndef FALSE

#define FALSE 0

#endif

#include<stdioh>

void main()

{

FILE fp;

char ch,s[1024];

int i;

fp=fopen("/home/ccx/mydocument/filename","wb+");

printf("请输入10个字符串,以‘#'结束!\n");

ch=getchar();

while(ch!='#')

{fputc(ch,fp);

ch=getchar();

}

fclose(fp);

printf("你所输入的字符串是\n");

fp=fopen("/home/ccx/mydocument/filename","r");

while(TRUE)

{memset(s,0,sizeof(s));

if(fgets(s,1000,fp)==FALSE) break;

printf("%s",s);

printf("\n");

}

fclose(fp);

}

运行结果是:

请输入10个字符串,以‘#'结束!

hahsg xhajkf ahaua dhaak xhaj23 shka8 /alsj shasif shjkx akaj#

你所输入的字符串是

hahsg xhajkf ahaua dhaak xhaj23 shka8 /alsj shasif shjkx akaj

《高级语言程序设计》课程设计 实验报告

题目:贪吃蛇

专业:计算机

班级: 软件

姓名:

成绩:

指导教师:

完成日期:2008年09月23日

一、目的

1. 进一步掌握和利用C语言进行程设计的能力;

2、 进一步理解和运用结构化程设计的思想和方法;

3、 初步掌握开发一个小型实用系统的基本方法;

4、 学会调试一个较长程序的基本方法;

5、 学会利用流程图或N-S图表示算法;

6、 掌握书写程设计开发文档的能力(书写课程设计报告);

二、内容与设计思想。

(1).系统功能与分析(填写你所设计的菜单及流程图)。

功能:进行贪食蛇游戏

分析:定义键盘方向键 *** 作,随机数发生器产生食物,并分别利用函数判断贪食蛇的长度及游戏是否成功等

并能够输入游戏成绩

(2)数据结构

struct Food

{

int x;/食物的横坐标/

int y;/食物的纵坐标/

int yes;/判断是否要出现食物的变量/

}food;/食物的结构体/

struct Snake

}

int x[N];

int y[N];

int node;/蛇的节数/

int direction;/蛇移动方向/

int life;/ 蛇的生命,0活着,1死亡/

}snake;

(3)模块设计

根据功能需要:

源文件 :#include <stdioh>

#include <graphicsh>

#include <stdlibh>

#include <dosh>

函数名 功能

void main() 游戏主程序

void Init(void); 图形驱动

void Close(void); 图形结束

void DrawK(void); 开始画面

void GameOver(void); 结束游戏

void GamePlay(void); 玩游戏具体过程

void PrScore(void); 输出成绩

(3)总体设计思想:

利用图形驱动,制作美观的游戏界面

通过随机函数产生随机数,控制游戏过程食物的出现

定义键盘 *** 作,控制游戏过程蛇的移动方向

画出边界,并判断游戏是否结束

统计游戏过程蛇吃的食物数量,计算并输出游戏成绩

(4)调试过程: 测试数据及结果,出现了哪些问题,如何修改的

这里,你就写一下你平时出错的地方,与如何修改的这里我也不好帮你写

(5)程序有待改进的地方及本次实习的收获和建议

收获:加深认识了程序编译过程的中团队合作的重要性

提高了自己的编程能力

(7)源程序清单(主要代码)

清单只要将上面的程序全部粘帖就可以了

把主函数改成这样:

void main()

{

uchar i,j,k=0x80;

while(1)

{

for(i=8;i>0;i--)

{

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

{

P2=0xff;

P0=DSY_CODE[8-i];

P2=k;

DelayMS(3);

}

}

k=_crol_(k,1);

}

}

补充:

你要是想从左到右依次显示0到7,并且依次一个一个的显示过去,那你只需要改你一个数组里的内容就OK了。

uchar code DSY_CODE[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90

};

具体怎么改要看你电路是怎么接的,就是任意时刻只让一个发光管点亮,很明显,你上面的这个数组里的数据估计不能完成你所要的功能,我也没法知道你的电路,你要按你的电路去改这个数组的内容,就是任意一个数同时只让八个数码管其中一个点亮就OK了,至于细节,还是你自己慢慢试,印象深些。呵呵。

以上就是关于C语言实训心得全部的内容,包括:C语言实训心得、C语言的实训项目发几个,谢谢、大一第一学期C语言实训心得500字左右,急 急 急,在线等等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9268970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存