当前位置:首页 » 编程语言 » c语言教案百度
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言教案百度

发布时间: 2023-04-08 07:50:57

‘壹’ 求c语言说课稿

《C语言程序设计》说课教案

授课班级:07应用电子

授课课时:2课时

授课地点:计算机实验室

课题 制作数字电子时钟―――循环嵌套

一、教学目标

1、通过本次课教学,学生能进一步理解顺序、分支和循环三种基本结构,特别是While、Do-While、for三种循环循环语句的使用;

2、掌握循环嵌套概念;

3、掌握多种循环程序设计方法并根据任务要求 “制作数字电子时钟”;

4、通过本次任务,了解gotoxy()和Clrscr()函数的作用,并掌握这两个函数在实际应用程序中的使用方法。

5、技能目标:培养学生逻辑思维能力、综合运用知识的能力和自主学习能力;

二、教材分析

选用教材为李志球、刘昊编着的《C语言程序设计教程》(第二版),该教材由电子工业出版社出版,教材特点如下:

1、在内容上体现科学性、时代性、实用性,编排上面向应用,理论与实践有机结合;

2、采用任务驱动、项目教学等教学手段,全书围绕项目“学生成绩管理系统”作为案例,贯穿整个课程进行难点讲解,以实际应用作为突破口,使学生能够真实体验到知识的实际应用,提高兴趣,促进理解;教学与项目开发融为一体,浅显易懂,符合高职学生认知规律。

3、实验实训环节结合教学内容,实验项目丰富。课程设计中案例学生熟悉。

本节课教学内容参考教材第4章的4.4节:循环嵌套。

三、学生分析

07应用电子是普招类(高中毕业生)学生,它们高中期间文化基础较扎实,但计算机专业知识薄弱,C语言程序设计是他们学习的第一门计算机语言类课程,开始学习时较困难,但入门提高较快。本次课的教学内容中循环嵌套概念他们很容易理解,简单的多重循环编程对他们不难,但循环嵌套在实际应用中的编程较为困难,如本次课的任务“制作数字电子时钟”牵涉许多知识,如屏幕定位、输入初始时间等。

另外,高职学生对于上机实际操作要比学习理论知识更为有兴趣;简单的实验项目都能完成,但解决实际应用问题的能力也较差。因此,在教学中通过演示让学生有感性认识,提高学习兴趣;通过提出问题让学生讨论议一议,主动思考如何解决;通过一个教学任务让学生动手做一做。

四、教学重点、难点及解决办法

1、本次课教学重点

1)循环嵌套概念;

2)gotoxy()和Clrscr()函数使用方法;

3)循环嵌套结构程序设计方法及实际应用。

在教学过程的叙述中,要抓住教学的重点、最能体现教学理念的内容和最能展示教学艺术的环节,作较为详细的叙述。

2、本次课教学难点

1)循环嵌套编程

2)算法分析及程序结构

3)编程完成“制作数字电子时钟”

3、难点解决办法

1)通过演示让学生有感性认识,并从for语句基本语法入手,逐步引入循环嵌套概念,弱化实用性不强的细节;

2)围绕任务“制作数字电子时钟”程进行难点讲解,以实际应用作为突破口,使学生能理解循环嵌套在实际中的应用,提高学习兴趣;

3)针对难点设置上机实际操作内容,进一步掌握循环嵌套程序设计方法。

4)在实验实训过程中布置任务项目,通过实践环节进一步理解和掌握重点难点,达到学习目的。

五、教学理念、方法及手段

本次课采用理(论)实(践)一体化教学理念通过任务驱动(项目教学)、讲练结合等教学手段。

1、任务驱动:通过“制作数字电子时钟”这一任务,掌握循环嵌套程序设计认方法。并掌握相应知识点,突出重点,分解难点。

2、讲练结合:授课地点为计算机实验室,采用边讲边练的教学互动形式。教学过程中,适当安排学生在计算机上进行进行实际程序设计,通过运行调试自己设计的程序,让学生亲自观察和体验程序设计的成功感受,加深知识的理解。

六、教学设计(时间分配)

1、任务提出,演示成果程序,明确目标,提出要求。(2分钟)

(1)演示成果程序,在屏幕固定位置显示“制作数字电子时钟”。

(2)任务分析:完成本次课的任务所需知识―――三种基本程序设计结构。

2、知识回顾(2分钟)

循环结构概念、三种循环语句(while、do-while、for)、当型和直到型循环、重点语句for语句应用、注意事项。

3、上机实训1(2分钟)

简单程序:用for语句编程,实现在屏幕上显示0、1、2……59。

(上机技能训练的操作、指导、辅导过程,以学生实际操作动手为主,教师进行辅导指导、师生共同探讨完成,应充分体现学生的主体地位)

思考提问:如何让0-59重复变化,以接近实际生活中秒的变化情况。

4、导入新课(6分钟)

(1)通过练习1,分析在屏幕上显示秒的变化程序中存在的问题。一是数字“0-59”以滚动卷屏方式显示;二是每个数字显示速度太快,如何实现以实际一秒时间显示一个数。

第一个问题使用gotoxy()函数或clrscr()函数解决;第二个问题在程序中每显示一秒后都设置一个时间延迟,时间延迟用方法空循环结构实现,它的位置在循环内屏幕每显示一个数值后。通过讲解解决第二个问题的程序结构,引入本次课新知识―――循环嵌套概念。

for(s=0;s<=59;s++)

{printf("\%2d",s);

for (i=1;i<=200000000;i++); }

(2)循环嵌套概念、结构和程序设计时注意事项。

5、上机实训2(5分钟)

使用循环嵌套结构编程,在屏幕固定位置能以分秒变化的时钟:

10:11

编程和上机操作时要理解两点:一是gotoxy()函数的使用,二是空循环实现延时循环终值的调试,以接近实际生活中时间变化。

本部分内容所用到知识是本次课的核心,是基本的能力目标,所以教学时要以重点内容处理。

6、程序设计讲解(4分钟)

编程完成本次课任务,制作一个带有时、分、秒变化的数字电子时钟。(四重循环)。

(1)算法分析

(2)定义变量及类型

(3)程序结构设计

(3)源程序核心结构编程

7、上机实训3(5分钟)

(1)调试程序时要注意观察程序运行情况,调整空循环变量i的终值,尽量与实际运转时间一致。计算机运行速度越快,则这个数值越大。

(2)本程序需运行24小时才能结束,如果要停止程序运行,可以按Ctrl-C或连续按两次Ctrl-Break强制中断程序运行。

(3)修改变量i类型,将它定义为整形后再次运行程序,观察运行结果,分析程序出错原因,提醒以后编程时注意。

8、提出问题,任务完善―――源程序提高与扩展 之一(4分钟)

前面的程序每次运行都从0点0分0秒开始,不能从当前实际时间开始运行。解决问题的办法可以在程序第一次循环开始时输入一次当前实际时间。为了只在开始运行时设置一次初始时间,可以引入一个逻辑变量first,其初始值为0 ,输入初始时间后,将其值置为非0。在后面程序运行中,通过if语句控制不再需要输入初始时间。

9、上机实训4(5分钟)

上机修改程序,使数字电子钟能从指定时间(输入初始时间)开始运转。

10、思考和作业(5分钟)

(1)源程序提高与扩展 之二:本程序只能运行24小时,请同学们将程序进一步改进,使它能显示年、月、日、星期、时、分、秒等数据的电子钟。

(2)“九九乘法表”。

10、课堂小结及作业(5分钟)

11、Question & Answer(1-2分钟)

七、学法指导

1、鼓励学生自主探索和合作交流。引导学生自主地从事观察、分析、交流等活动,使学生形成对计算机语言知识有效的学习策略。

2、鼓励与提倡解决问题的多样性,引导学生在与他人的交流中去选择合适的策略,丰富自己的思维方式,获得成功的体验和不同的发展。

3、引导学生将所学计算机知识应用到其他学科中去,使学生觉得计算机有很用,同时也培养了学生逻辑思维能力。

‘贰’ C语言课程设计

//我以前的作业

游戏说明
1.开始游戏
1)系统随机产生一位不重复的N位数字。N的大小与等级有关。
初级:N=3 中级:N=4 高级:N=5
2)游戏者输入所猜的不重复数字,并按回车提交。提交的数据
数应与N的大小一致,当数据位数大于N时,只取前N位。
3)系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。其中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
4)游戏者有限定次数的猜测机会,在规定次数内完成,则游戏成功,否则,游戏失败。其中,猜测次数与等级有关:
初级:10次 中级:9次 高级:8次。
5)按完成游戏所用的时间和次数计算游戏者所得分数,游戏等级越高,猜测所用的次数越少,得分越高!若游戏者得分比系统已经保存的分数的高,将提示要求输入游戏者信息,并且保存在最佳排行之中。
2.等级设置
6)游戏者可以自行设置游戏等级:初级,中级和高级。
3.最佳排行
在最佳排行中,游戏者可以查看当前游戏的最佳排行。
4.游戏说明
在游戏说明中,游戏者可以查看游戏规则。

三.总体设计
本课程设计对模块设计的要求如下:
(1)要求使用多文件方式实现设计;
(2)要求在各个文件内实现结构化设计;
(3)每个模块作为一个单独的C文件,每个文件内的函数如表所示,表中给出了各个函数的功能说明。
(4)宏和数据结构等放在头文件中,并使用条件编译。
(1)文件及函数组成
源文件 函数名或其他成分 功能
record.h
ASK 宏定义
结构声明 结构声明
库函数及函数原型声明
game_ control.c Game_rank 设置游戏等级
Game_explain 输出游戏说明
game_ register.c Tiptop_record 记录最高分
Tiptop_output 输出最佳排行
game.c Game_main 开始游戏中心
Build_number 获取系统随机数字
Game_in_out 获取游戏者数据和输出结果
Time_command 时间控制
Game_result 游戏结果处理输出
record.c main 主函数
Menu_select 选择菜单
manage_menu 处理菜单

(2)函数设计
1.头部文件
文件名称:record.h
功 能:声明函数原型,包含文件及自定义宏和数据结构。
要 求:报告是否能正常打开文件执行操作。
2. 设置游戏等级函数
函数原型:void Game_rank(void)
功 能:可由游戏者自行设置游戏等级
参 数:void
返 回 值:void
要 求:如果游戏者没有进行等级设定,则默认初级进行游戏。
3. 输出游戏说明函数
函数原型:void Game_ explain()
功 能:输出游戏规则说明
参 数:void
返 回 值:void
要 求:说明游戏相应的按键,保证游戏者按照说明。
4. 记录最高分函数:
函数原型:void Tiptop_register(int)
功 能:把从Get_player函数得到的游戏者信息和游戏的积分信息一同保存到指定路径的Tiptop_register.dat文件中
参 数:int S;S为游戏积分
返 回 值:void
要 求:要求把Tiptop1.txt(初级最高分) Tiptop2.txt(中级最高分) Tiptop3.txt(高
级最高分)原来有的信息替换为现在的信息,并且只有积分大于原有信息的第
十名,才会被以替换的方式记录;并且是降序的方式排列的。
5. 输出最佳排行函数:
函数原型:void Tiptop_out()
功 能:输出最佳排行信息
参 数:void
返 回 值:void
要 求:没有信息的时候输出提示,有信息时按降序排列输出全部信息。
6. 开始游戏中心函数
函数原型:void Game_main()
功 能:调用Time_ control 、Build_number等函数,进行游戏的整体控制
参 数:void
返 回 值:void
要 求:注意函数的完整性,保证游戏顺利进行,注意没有设置等级时候,默认C=1!
7. 获取系统随机数字函数
函数原型:int *Build_number()
功 能:系统调用<time.h>文件,利用srand((unsigned) time(&)产生1个N位随机数字,供游戏者猜测
参 数:void
返 回 值:int 8=*i:指向产生的随机数字构成的数组的指针
要 求:产生的数字是随机的,并且是不重复的,总共产生N(依据游戏等级而定)位数字,组成数组[初级为3个数字]。
8. 获取游戏者游戏数据和输出游戏进程结果函数
函数原型:void Course_in_out()
功 能:把游戏者猜的数据读入内存,并且分析得出结果,并输出结果
参 数:void
返 回 值:void
要 求:用A或B的代码表示本次的结果,其中A表示数值对位置也对,B表示数值对,但位置错了!每次得到游戏者的猜测数据都要分析得出结果并输出结果,以便游戏者的下一次猜测。
9. 时间控制函数
函数原型:int Time_ control()
功 能:利用<dos.h>和<time.h>文件,得到玩游戏的总时间,计算游戏积分。
参 数:void
返 回 值:int Time:游戏前后的时间差异
要 求:得到的时间是以秒为单位,数据是整型数据。
10. 游戏结果处理输出函数
函数原型:void Game_result(int m )
功 能:计算,得出最后游戏积分
参 数:int m:整个游戏的时间
返 回 值:void
要 求:按照游戏等级,设置不同的游戏积分方式。
11. 主函数:
函数原型:void main()
功 能:调用各个子函数,实现整体程序的运行
参 数:void
返 回 值: void
要 求:控制整个游戏的顺利进行。
12. 选择菜单函数:
函数原型:void Menu_select()
功 能:得到Handle_menu的返回值,由一个switch语句选择开始,等级,最佳排行,游戏说明,结束等菜单操作。
参 数:void
返 回 值:void
要 求:由Handle_menu得到数据可循环得到,直到得到数字5时,选择退出菜单,方可退出游戏,否则一直循环程序!
13. 处理菜单函数:
函数原型:int Handle_menu()
功 能:输出菜单选择提示,并由cin语句实现游戏者的输入,输入选择相应菜单对应的菜单序号,并把相应的值传给Menu_select函数
参 数:void
返 回 值:int n:选择相应菜单的菜单序号
要 求:输入的值不是相应的菜单的序号时返回0值,否则返回游戏者的输入值,以选择相应菜单。

四.程序代码
1. record.h
#include"time.h"
#include<dos.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//结构体
#define MAXSIZE 20
typedef long int ElemType; //定义结构体tiptop,存放游戏者的最高分等信息
typedef struct tiptop
{
ElemType data;
char name[MAXSIZE];
char grade[MAXSIZE];
int year;
int month;
int day;
char week[MAXSIZE];
int hour;
int minute;
int second;
}tiptop;
//全局变量
int C; //C为等级设置变量
//函数声明
void Menu_select(); //选择菜单函数
int manage_menu(); //处理菜单函数
void Tiptop_record(int); //记录最高分函数
void Tiptop_output(); //输出最佳排行函数
void Game_rank(); //设置游戏等级函数
void Game_explain(); //输出游戏说明函数
void Game_main(); //开始游戏中心函数
int *Build_number(); //获取系统随机数字函数
void Game_in_out(); //获取游戏数据和输出游戏进程结果函数
int Time_command(); //时间控制函数
void Game_result(int); //游戏结果处理输出函数

2. game_ control.c
#include"record.h"
//**********************
// 设置游戏等级函数
//**********************
void Game_rank()
{
FILE *fp;
printf("\t******************************\n");
printf("\t************1:初级************\n");
printf("\t************2:中级************\n");
printf("\t************3:高级************\n");
printf("\t******************************\n");
printf("\t请选择游戏等级:\t");
loop:
scanf("%d",&C);
if(C<1||C>3)
{
printf("\t输入有误!请重新输入:\t");
goto loop;
}
if((fp=fopen("C.txt","w"))==NULL)
{
printf("打开C.txt文件失败!");
exit(1);
}
fwrite(&C,sizeof(int),1,fp);
fclose(fp);
if(C==1)
printf("\t等级设置为初级!\n");
if(C==2)
printf("\t等级设置为中级!\n");
if(C==3)
printf("\t等级设置为高级!\n");
printf("\n");

}
//****************
//输出游戏说明函数
//****************
void Game_explain()
{
printf("游戏说明:\n");
printf("\t**********************************************************\n");
printf("\t**********************************************************\n");
printf("\t①:游戏开始,系统随机产生一位不重复的N位数字。N的大小与等级\n");
printf("\t有关:\n");
printf("\t初级:N=3\t中级:N=4\t高级:N=5\t\n");
printf("\t②:游戏者输入所猜的不重复数字,并按回车提交。\n");
printf("\t提交的数据位数应与N的大小一致,当数据位数大于N时,只取前N位;\n");
printf("\t③:系统将提交的数与它自动产生的数进行比较,输出结果\n");
printf("\t“*A*B”形式。其中A代表数字正确相应位置也正确,B代\n");
printf("\t表数字正确但位置不正确。如:1A3B表示游戏者有1个数字的位置\n");
printf("\t正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不\n");
printf("\t对,即游戏者已经猜出4位数据,但有3个数据位置不对!\n");
printf("\t④:游戏者有限定次数的猜测机会,在规定次数内完成,\n");
printf("\t则游戏成功。否则,游戏失败。其中,猜测次\n");
printf("\t数与等级有关:\n");
printf("\t初级:10次\t中级:9次\t高级:8次。\t\n");
printf("\t⑤:按完成游戏所用的时间和次数计算游戏者所得分数,\n");
printf("\t游戏等级越高,猜测所用的次数越少,得分越高!\n");
printf("\t若游戏者得分比系统已经保存的分数的高,将提示要求\n");
printf("\t输入游戏者信息,并且保存在最佳排行之中。\n");
printf("\t⑥:游戏者可以自行设置等级!\n");
printf("\t**********************************************************\n");
printf("\t**********************************************************\n");
printf("\n");
}
3. game_ register.c
#include"record.h"
//**************
//记录最高分函数
//**************
void Tiptop_record(int S)
{
FILE *fp;
tiptop n;
char *week[]={"星期天","星期一","星期二","星期三","星期四","星期五",
"星期六"};
time_t timep;
struct tm *t;
printf("\t恭喜您!\n");
printf("\t您获得本游戏的最高分!\n");
//获取名字
printf("\t请输入您的姓名:");
printf("\t");
scanf("%s",n.name);
//获取时间
time(&timep);
t=gmtime(&timep);
t->tm_year=1900+t->tm_year;
t->tm_mon=1+t->tm_mon;
t->tm_hour=8+t->tm_hour;
n.year=t->tm_year;
n.month=t->tm_mon;
n.day=t->tm_mday;
strcpy(n.week,week[t->tm_wday]);
n.hour=t->tm_hour;
n.minute=t->tm_min;
n.second=t->tm_sec;
//获取等级
if(C==1)
strcpy(n.grade,"初级");
if(C==2)
strcpy(n.grade,"中级");
if(C==3)
strcpy(n.grade,"高级");
//获取分数
n.data=S;
if(C==1)
{
if((fp=fopen("tiptop1.txt","w"))==NULL)
{
printf("\t打开tiptop1.txt文件失败!");
exit(1);
}
fwrite(&n,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==2)
{
if((fp=fopen("tiptop2.txt","w"))==NULL)
{
printf("\t打开tiptop2.txt文件失败!");
exit(1);
}
fwrite(&n,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==3)
{
if((fp=fopen("tiptop3.txt","w"))==NULL)
{
printf("\t打开tiptop3.txt文件失败!");
exit(1);
}
fwrite(&n,sizeof(struct tiptop),1,fp);
fclose(fp);
}
}
//****************
//输出最佳排行函数
//****************
void Tiptop_output()
{
int i;
FILE *fp;
tiptop p,q,r;
if((fp=fopen("tiptop1.txt","r"))==NULL)
{
printf("还没有最佳排行!");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop2.txt","r"))==NULL)
{
printf("还没有最佳排行!");
exit(1);
}
fread(&q,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop3.txt","r"))==NULL)
{
printf("还没有最佳排行!");
exit(1);
}
fread(&r,sizeof(struct tiptop),1,fp);
fclose(fp);
if(p.data==0&&q.data==0&&r.data==0)
{
printf("\t暂无最高分信息!");
printf("\n");
printf("\t是否直接进入游戏?刷新最佳排行信息?\n");
printf("\t1:是\t2:否\n");
printf("\t");
i=0;
scanf("%d",&i);
if(i==1)
{
printf("\t请设置游戏等级: \n");
Game_rank();
Game_main();
}
else
Menu_select();
}
else
{
printf("\t最佳排行:\n");
printf("\t等级\t姓名\t分数\t游戏时间\n");
if(p.data!=0)
{
printf("\t%s\t%s\t%d\t",p.grade,p.name,p.data);
printf("%d—%d—%d\t",p.year,p.month,p.day);
printf("%s\t%d:%d:%d\n",p.week,p.hour,p.minute,p.second);
}
if(q.data!=0)
{
printf("\t%s\t%s\t%d\t",q.grade,q.name,q.data);
printf("%d—%d—%d\t",q.year,q.month,q.day);
printf("%s\t%d:%d:%d\n",q.week,q.hour,q.minute,q.second);
}
if(r.data!=0)
{
printf("\t%s\t%s\t%d\t",r.grade,r.name,r.data);
printf("%d—%d—%d\t",r.year,r.month,r.day);
printf("%s\t%d:%d:%d\n",r.week,r.hour,r.minute,r.second);
}
if(p.data==0)
printf("\t初级暂无最高分信息!\n");
if(q.data==0)
printf("\t中级暂无最高分信息!\n");
if(r.data==0)
printf("\t高级暂无最高分信息!\n");

//重置最佳排行榜
if(p.data!=0&&q.data!=0&&r.data!=0)
{
printf("\t是否重置最佳排行?\n");
printf("\t1:是\t2:否\t");
i=0;
scanf("%d",&i);
if(i==1)
{
p.data=0;
q.data=0;
r.data=0;
if((fp=fopen("tiptop1.txt","w"))==NULL)
{
printf("打开tiptop1.txt文件失败!");
exit(1);
}
fwrite(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop2.txt","w"))==NULL)
{
printf("打开tiptop2.txt文件失败!");
exit(1);
}
fwrite(&q,sizeof(struct tiptop),1,fp);
fclose(fp);
if((fp=fopen("tiptop3.txt","w"))==NULL)
{
printf("打开tiptop3.txt文件失败!");
exit(1);
}
fwrite(&r,sizeof(struct tiptop),1,fp);
fclose(fp);
}
}
}
}

4.game.c
#include"record.h"

//全局变量
int *c1; //产生的数保存在指针c中
int A,B; // AB均为游戏重要参数
int N; //NUM为需要猜测的数据个数
int TIME; //TIME为猜数字共有的次数
long int S; //S为游戏积分
//****************
//开始游戏中心函数
//****************
void Game_main()
{
FILE *fp;
int time;
if((fp=fopen("C.txt","r"))==NULL)
{
printf("打开C.txt文件失败!");
printf("\n");
exit(1);
}
fread(&C,sizeof(int),1,fp);
N=C+2;
TIME=11-C;
if(C==1)
{
printf("\t游戏等级为:初级!\n");
}
if(C==2)
{
printf("\t游戏等级为:中级!\n");
}
if(C==3)
{
printf("\t游戏等级为:高级!\n");
}
printf("\t需要猜测的数字位数数为:%d,共有%d次猜测机会!",N,TIME);
printf("\n");
time=Time_command();
Game_result(time);
}
//********************
//获取系统随机数字函数
//********************
int *Build_number()
{
int i,j,m;
time_t t;
c1=(int *)malloc(N*sizeof(int));
if(c1==NULL)
{
printf("分配内存错误!\n");
printf("\n");
exit(1);
}
srand((unsigned) time(&t));
for(i=0;i<N;i++)
{
m=rand()%10; //产生一个数字
if(i==0)
*c1=m;
else
{
for(j=0;j<i;j++)
{
if(m==*(c1+j)//若原有数据之中已经有了与m相同的数字,则重新产生数字
{
i--;
break;
}
*(c1+i)=m;
}
}
}
printf("\t系统产生的数据为:");
for(i=0;i<N;i++)
printf("*");
printf("\n");
printf("\t您可以开始游戏! 计时开始...\n");
printf("\t不能有重复的数字!\n");
printf("\t数字中间用空格隔开\n");
return c1;
}
//****************************************
//获取游戏者游戏数据和输出游戏进程结果函数
//****************************************
void Game_in_out()
{
int i,j,m;
int n; //游戏者猜测的数字
int a[5]; //游戏者猜测的数据构成的数组
int c[5];
int *p;
p=Build_number();
for(i=0;i<N;i++)
{
c[i]=*(p+i);
}
for(m=0;m<TIME;m++)
{
if(m==(TIME-1))
{
printf("\t**请注意:**\n");
printf("\t**仅剩下一次机会了!**\n");
printf("\t**努力!加油!**\n");
}
printf("\t请输入第%d次猜测的数字:\t",m+1);
for(j=0;j<N;j++)
{
scanf("%d",&n);
a[j]=n;
}
A=0;
B=0;
for(i=0;i<N;i++)
{
if(a[i]==c[i])
A++;
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
if(a[i]==c[j]&&i!=j)
B++;
}
}
printf("\t您本次猜测的结果为:\t");
printf("%d A %d B",A,B);
printf("\n");
//游戏成功控制退出猜测程序
if(A==N)
{
m=TIME;
}
}

//TIME改变,记录游戏总次数的数据
TIME=i;
free(c1);
}
//************
//时间控制函数
//************
int Time_command()
{
int a; //游戏时间
time_t first, second;
first=time(NULL); //获取系统时间
Game_in_out();
second=time(NULL); //再次获取系统时间
a=(int)difftime(second,first);
return a;
}
//********************
//游戏结果处理输出函数
//********************
void Game_result(int m)
{
FILE *fp;
tiptop p;
time_t t;
int S;
int n;
int i=0;
int minute,second;
if(A!=N)
{
S=0;
printf("\tGame over!\n");
printf("\t您本次游戏的积分为:\t%d",S);
printf("\t继续努力!\n");
printf("\t是否继续游戏?\n");
printf("\t1:是\t\t\t2:否");
printf("\n");
scanf("%d",&i);
if(i==1)
Game_main();
else
Menu_select();
}
else
{
printf("\t恭喜您游戏成功!");
printf("\n");
minute=m/60;
second=m%60;
printf("\t您本次游戏所用时间为:");
printf("%d分钟%d秒\n",minute,second);
printf("\n");

//积分
if(C==1)
{
n=11-TIME;
S=n*n*n*10-m;
}
if(C==2)
{
n=10-TIME;
S=n*n*n*n*10-m;
}
if(C==3)
{
n=9-TIME;
S=n*n*n*n*n*10-m;
}
if(S<10)
{
srand((unsigned) time(&t));
S=rand()%100;
}
printf("\t您本次游戏的积分为:\t%d",S);
printf("\n");
}
//判断是否符合最高分条件
if(C==1)
{
if((fp=fopen("tiptop1.txt","r"))==NULL)
{
printf("打开tiptop1.txt文件失败!");
printf("\n");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==2)
{
if((fp=fopen("tiptop2.txt","r"))==NULL)
{
printf("打开tiptop2.txt文件失败!");
printf("\n");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(C==3)
{
if((fp=fopen("tiptop3.txt","r"))==NULL)
{
printf("打开tiptop3.txt文件失败!");
printf("\n");
exit(1);
}
fread(&p,sizeof(struct tiptop),1,fp);
fclose(fp);
}
if(S>=(p.data))
Tiptop_record(S);
//提示跳转
if(C==1)
{
printf("\t您本次游戏等级是初级,是否要进入中级?\n");
printf("\t1:是\t\t\t2:否");
printf("\n\t");
i=0;
scanf("%d",&i);
if(i==1)
{
C=2;
if((fp=fopen("C.txt","w"))==NULL)
{
printf("打开C.txt文件失败!");
exit(1);
}
fwrite(&C,sizeof(int),1,fp);
fclose(fp);
Game_main();
}
else
Menu_select();
}
if(C==2)
{
printf("\t您本次是中级游戏,是否要进入高级游戏呢?\n");
printf("\t1:是\t\t\t2:否");
printf("\n\t");
i=0;
scanf("%d",&i);
if(i==1)
{
C=3;
if((fp=fopen("C.txt","w"))==NULL)
{
printf("打开C.txt文件失败!");
exit(1);
}
fwrite(&C,sizeof(int),1,fp);
fclose(fp);
Game_main();
}
else
Menu_select();
}
}

5.record.c
#include"record.h"
//******
//主函数
//******
void main()
{
printf("\n");
printf("********************************************\n");
printf("********************************************\n");
printf(" 欢迎进入猜数字游戏 \n");
printf("\n");
printf("\t设计者: \n");
printf("********************************************\n");
printf("********************************************\n");
printf("\n");
Menu_select();
}
//************
//选择菜单函数
//************
void Menu_select()
{
while(1)
{
switch(manage_menu())
{
case 0:
printf("输入有误,请重新输入!\n");
break;
case 1:
Game_main();
break;
case 2:
Game_rank();
break;
case 3:
Tiptop_output();
break;
case 4:
Game_explain();
break;
case 5:
printf("\n");
printf("\n");
printf("*************** ** ** **** ** ** ** ** *** \n");
printf("*************** ** ** ** ** **** ** ** ** ***** \n");
printf(" ** ** ** ** ** ** ** ** ** ** ******* \n");
printf(" ** ** ** ** ** ** ** ** ** ** ******* \n");
printf(" ** *********** ************* ** ** ** **** ***** \n");
printf(" ** *********** ************* ** ** ** **** ***** \n");
printf(" ** ** ** ** ** ** ** ** ** ** ***** \n");
printf(" ** ** ** ** ** ** ** ** ** ** *** \n");
printf(" ** ** ** ** ** ** **** ** ** *** \n");
printf(" ** ** ** ** ** ** ** ** ** *** \n");
printf("\n");
printf("Goodbye!\n");
exit(1);
}
}
}
//************
//处理菜单函数
//************
int manage_menu()
{
int n;
printf("\t**************************\n");
printf("\t**\t1:开始游戏\t**\n");
printf("\t**\t2:等级设置\t**\n");
printf("\t**\t3:最佳排行\t**\n");
printf("\t**\t4:游戏说明\t**\n");
printf("\t**\t5:退出游戏\t**\n");
printf("\t**************************\n");
printf("\t请输入相应序号选择相应菜单:");
printf("\t");
scanf("%d",&n);
printf("\n");
if(n<1||n>5)
n=0;
return n;
}

‘叁’ c语言课程设计

#include<stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
long class_1; //班级
long number; //学号
char name[20]; //姓名
float math; //数学
float c_program; //C语言
float physics; //大学物理
float english; //大学英语
float polity; //政治
float sport; //体育
float summary; //总分
float average; //平均分
}Student;
Student stud[100]; //定义结构体数组变量的大小
int i=0; //i用于记录输入的学生的个数
int menu() //菜单函数
{
int a;
printf("***********************学生信息管理系统*************************\n");
//菜单选择
printf("\t\t【1】输入学生信息\n");
printf("\t\t【2】显示所有学生的信息\n");
printf("\t\t【3】按平均分升降排序\n");
printf("\t\t【4】根据学生的学号查找学生的信息\n");
printf("\t\t【5】插入学生的信息\n");
printf("\t\t【6】删除学生的信息\n");
printf("\t\t【7】修改学生的信息\n");
printf("\t\t【8】从文件中读入数据\n");
printf("\t\t【9】将所有记录写入文件\n");
printf("\t\t【0】退出本系统\n");
printf("***********************学生信息管理系统*************************\n");
printf("请选择你要的操作【0-9】:");
scanf("%d",&a); //读入一个数
while(a<0 || a>9)
{
printf("输入错误!请重新输入。\n");
scanf("%d",&a); //输入错误就一直循环!^_^
}
system("cls"); //清屏
return(a); //返回a的值
}
int input(Student stud[]) //输入学生信息
{
char flag='Y';
while(flag=='y' || flag=='Y') //判断
{
printf("请输入该学生的班别:"); //交互输入学生信息
scanf("%ld",&stud[i].class_1);
printf("请输入该学生的学号:");
scanf("%ld",&stud[i].number);
printf("请输入该学生的姓名:");
scanf("%s",&stud[i].name);
printf("请输入该学生的“数学”分数:");
scanf("%f",&stud[i].math);
printf("请输入该学生的“C程序设计语言”分数:");
scanf("%f",&stud[i].c_program);
printf("请输入该学生的“大学物理”分数:");
scanf("%f",&stud[i].physics);
printf("请输入该学生的“大学英语”分数:");
scanf("%f",&stud[i].english);
printf("请输入该学生的“体育”分数:");
scanf("%f",&stud[i].sport);
printf("请输入该学生的“政治”分数:");
scanf("%f",&stud[i].polity);
getchar(); //用于消除回车键
stud[i].summary=stud[i].math+stud[i].c_program+stud[i]. physics
+stud[i].english+stud[i].sport+stud[i].polity;
stud[i].average=stud[i].summary/6;
printf("该学生的总分为:%6.2f\t平均分为:%6.2f\n",stud[i].summary,stud[i].average);
i++;
printf("继续输入学生信息请按:Y or y,退出请按:N or n.\n");
scanf("%c",&flag); //判断是否继续输入
}
printf("按任意键回主菜单\n");
getchar();
system("cls");
return(i);
}
void Display(Student stud[],int n) //显示所有记录
{
int k;
if(n==0)
printf("暂无学生记录!\n");
else
{
printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n");
for(k=0;k<n;k++) //循环输出
{
printf("%7ld",stud[k].class_1);
printf("%7ld",stud[k].number);
printf("%9s",stud[k].name);
printf("%7.2f",stud[k].math);
printf("%7.2f",stud[k].c_program);
printf("%7.2f",stud[k].physics);
printf("%7.2f",stud[k].english);
printf("%7.2f",stud[k].sport);
printf("%7.2f",stud[k].polity);
printf("%7.2f",stud[k].summary);
printf("%8.2f\n",stud[k].average);
}
}
system("pause");
system("cls");
}
void Sort(Student stud[],int i) //按平均分排序
{
int m,n,k; //m,n为循环变量
Student t;
for(m=0;m<i-1;m++) //排序
for(n=m+1;n<i;n++)
if(stud[m].average<stud[n].average)
{
t=stud[m];
stud[m]=stud[n];
stud[n]=t;
}
printf("排序后的顺序为:\n");
printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n");
for(k=0;k<i;k++) //循环输出
{
printf("%7ld",stud[k].class_1);
printf("%7d",stud[k].number);
printf("%9s",stud[k].name);
printf("%7.2f",stud[k].math);
printf("%7.2f",stud[k].c_program);
printf("%7.2f",stud[k].physics);
printf("%7.2f",stud[k].english);
printf("%7.2f",stud[k].sport);
printf("%7.2f",stud[k].polity);
printf("%7.2f",stud[k].summary);
printf("%8.2f\n",stud[k].average);
}
system("pause");
system("cls");
}
void Search(Student stud[],int i) //查找并显示一个记录
{
int p,k; //p为要查找的学生学号,t为循环节,s用来判断循环是否结束
char flag='y';
while(flag=='y' || flag=='Y')
{
printf("请输入要查找的学生学号:");
scanf("%d",&p);
getchar();
for(k=0;p!=stud[k].number && k<i;k++);
if(k==i)printf("该学号不存在!\n");
else {
printf("该学生的信息为:\n");
printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n");
printf("%7ld",stud[k].class_1);
printf("%7ld",stud[k].number);
printf("%9s",stud[k].name);
printf("%7.2f",stud[k].math);
printf("%7.2f",stud[k].c_program);
printf("%7.2f",stud[k].physics);
printf("%7.2f",stud[k].english);
printf("%7.2f",stud[k].sport);
printf("%7.2f",stud[k].polity);
printf("%7.2f",stud[k].summary);
printf("%8.2f\n",stud[k].average);
}
printf("继续查找学生信息请输入:Y or y,退出输入:N or n\n");
scanf("%c",&flag); //判断是否继续输入
}
system("cls");
}
int Insert(Student stud[],int i) //插入学生的信息
{
char flag='Y';
while(flag=='y' || flag=='Y')
{
printf("请输入要插入学生的班别:"); //交互输入学生信息
scanf("%ld",&stud[i].class_1);
printf("请输入要插入学生的学号:");
scanf("%ld",&stud[i].number);
printf("请输入要插入学生的姓名:");
scanf("%s",&stud[i].name);
printf("请输入要插入学生的“数学”分数:");
scanf("%f",&stud[i].math);
printf("请输入要插入学生的“C程序设计语言”分数:");
scanf("%f",&stud[i].c_program);
printf("请输入要插入学生的“大学物理”分数:");
scanf("%f",&stud[i].physics);
printf("请输入要插入学生的“大学英语”分数:");
scanf("%f",&stud[i].english);
printf("请输入要插入学生的“体育”分数:");
scanf("%f",&stud[i].sport);
printf("请输入要插入学生的“政治”分数:");
scanf("%f",&stud[i].polity);
getchar();
stud[i].summary=stud[i].math+stud[i].c_program+stud[i]. physics
+stud[i].english+stud[i].sport+stud[i].polity;
stud[i].average=stud[i].summary/6;
printf("该学生的总分为:%6.2f\n",stud[i].summary);
printf("该学生的平均分为:%6.2f\n",stud[i].average);
i++;
printf("继续输入学生信息请输入:Y or y,退出输入:N or n\n");
scanf("%c",&flag); //判断是否继续输入
}
getchar();
printf("是否需要排序,需要请按‘Y’或‘y’;不需要请按‘N’或‘n’.\n");
flag=getchar();
if(flag=='y' || flag=='Y')Sort(stud,i);
system("cls");
return(i);
}
int Delete(Student stud[],int i) //根据输入的学号删除学生的信息
{
long s;
int t,p;
char a='Y'; //判断循环是否继续
while(a=='y' || a=='Y')
{
printf("请输入需要删除学生的学号:\n"); //采用交互式删除
scanf("%ld",&s);
getchar(); //消除回车键的影响
for(t=0;t<i && s!=stud[t].number;t++);
if(s==stud[t].number)
{
for(p=t;p<i;p++)
stud[p]=stud[p+1];
i=i-1;
printf("删除成功!\n");
}
else printf("没有找到要删除的学号!\n");
printf("是否继续删除,继续请按'Y'或'y',退出请按'N'或'n'.\n");
a=getchar(); //判断是否继续
getchar(); //消除回车键的影响
}
system("cls");
return(i);
}
void change(Student stud[],int i) //修改学生的信息
{
long p=0; //p用来表示要删除的学生的学号
int k; //k为循环变量
char a='y';
while(a=='y' || a=='Y')
{
printf("\t\t学生信息修改:\n");
printf("请输入要修改的学生的学号:\n");
scanf("%ld",&p);
for(k=0;p!=stud[k].number && k<i;k++);
if(k==i)printf("无法找到该学生的信息\n");
else {
printf("该学生的信息为:\n");
printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n");
printf("%7ld",stud[k].class_1);
printf("%7ld",stud[k].number);
printf("%9s",stud[k].name);
printf("%7.2f",stud[k].math);
printf("%7.2f",stud[k].c_program);
printf("%7.2f",stud[k].physics);
printf("%7.2f",stud[k].english);
printf("%7.2f",stud[k].sport);
printf("%7.2f",stud[k].polity);
printf("%7.2f",stud[k].summary);
printf("%8.2f\n",stud[k].average);
printf("请输入该学生的新信息:\n");
printf("请输入该学生的班级:"); //交互输入学生信息
scanf("%d",&stud[k].class_1);
printf("请输入该学生的学号:");
scanf("%d",&stud[k].number);
printf("请输入该学生的姓名:");
scanf("%s",&stud[k].name);
printf("请输入该学生的“数学”分数:");
scanf("%f",&stud[k].math);
printf("请输入该学生的“C程序设计语言”分数:");
scanf("%f",&stud[k].c_program);
printf("请输入该学生的“大学物理”分数:");
scanf("%f",&stud[k].physics);
printf("请输入该学生的“大学英语”分数:");
scanf("%f",&stud[k].english);
printf("请输入该学生的“体育”分数:");
scanf("%f",&stud[k].sport);
printf("请输入该学生的“政治”分数:");
scanf("%f",&stud[k].polity);
getchar();
stud[k].summary=stud[k].math+stud[k].c_program+stud[k]. physics
+stud[k].english+stud[k].sport+stud[k].polity;
stud[k].average=stud[k].summary/6;
printf("修改成功!\n");
}
printf("是否继续修改,继续请按'Y'或'y',退出请按'N'或'n'.\n");
a=getchar(); //判断是否继续
}
system("pause");
system("cls");
}
int Read(Student stud[],int i) //从文件中读入学生信息
{
int k=i;
FILE *fp; //定义一个文件类型的指针
char filename[20]; //定义文件名
printf("请输入文件名:\n");
scanf("%s",&filename); //输入文件名
if((fp=fopen(filename,"rb"))==NULL) //打开文件
{
printf("无法打开该文件!\n"); //打开失败信息
return 0;
}
printf("从文件%s中读入的数据为:\n",filename);
printf(" 班别 学号 姓名 数学 C语言 物理 英语 体育 政治 总分 平均分\n");
while(!feof(fp))
{
fread(&stud[k],sizeof(Student),1,fp);
printf("%7ld",stud[k].class_1);
printf("%7ld",stud[k].number);
printf("%9s",stud[k].name);
printf("%7.2f",stud[k].math);
printf("%7.2f",stud[k].c_program);
printf("%7.2f",stud[k].physics);
printf("%7.2f",stud[k].english);
printf("%7.2f",stud[k].sport);
printf("%7.2f",stud[k].polity);
printf("%7.2f",stud[k].summary);
printf("%8.2f\n",stud[k].average);
k++;
}
fclose(fp);
printf("读入成功,\n");
system("pause");
system("cls");
return(k);
}
void Save(Student stud[],int i) //将所有记录写入文件
{
int k=0;
FILE *fp; //定义文件指针
char filename[20]; //定义文件名
printf("请输入你要存储学生信息的文件名:"); //输入文件名
scanf("%s",&filename);
if((fp=fopen(filename,"wb"))==NULL) //打开文件
{
printf("无法打开该文件!\n"); //打开失败信息
return;
}
printf("保存到文件%s里的信息为:\n",filename);
while(k<i)
{
fwrite(&stud[k],sizeof(Student),1,fp);
printf("%7ld",stud[k].class_1);
printf("%7d",stud[k].number);
printf("%9s",stud[k].name);
printf("%7.2f",stud[k].math);
printf("%7.2f",stud[k].c_program);
printf("%7.2f",stud[k].physics);
printf("%7.2f",stud[k].english);
printf("%7.2f",stud[k].sport);
printf("%7.2f",stud[k].polity);
printf("%7.2f",stud[k].summary);
printf("%8.2f\n",stud[k].average);
k++;
}
fclose(fp);
printf("信息保存成功,");
system("pause");
system("cls");
}
int main() //主函数
{
int n=0;
while(1)
{
switch(menu()) //选择判断要执行的语句
{
case 1:
printf("\n*******输入学生信息*******\n");
//输入学生信息
n=input(stud);break;
case 2:
printf("\n*******显示所有学生的信息*******\n");
//显示所有学生的信息
Display(stud,n);break;
case 3:
printf("\n*******按平均分升降排序*******\n");
//给学生成绩排序
Sort(stud,n);break;
case 4:
printf("\n*******根据学生的学号查找学生的信息*******\n");
//根据输入的学号查找学生的信息
Search(stud,n);break;
case 5:
printf("\n*******插入学生的信息*******\n");
//插入学生的信息
n=Insert(stud,n);break;
case 6:
printf("\n*******删除学生的信息*******\n");
//删除学生的信息
n=Delete(stud,n);break;
case 7:
printf("\n*******修改学生的信息*******\n");
//修改学生的信息
change(stud,n);break;
case 8:
printf("\n*******从文件中读入数据*******\n");
//从文件中读入数据
n=Read(stud,n);break;
case 9:
printf("\n*******将所有记录写入文件*******\n");
//将所有记录写入文件
Save(stud,n);break;
case 0:
printf("\n*******感谢您的使用*******\n");
//结束程序
exit(0);
}
}
return 0;
}

‘肆’ c语言入门教学

楼主,你可以去编程入门网,那里有挺多知识点的,很多语言都有,很适合初学者,你也可以去CSDN,那里有很多源代码提供下载,也有论坛,呵呵,你也不要忽视网络贴吧,知道,贴吧是学习很多课本没有东西的地方,知道,你需要看解决答案,这样很有收获,你也可以去中国编程网,不过,我觉得一楼也是有道理的,看看书掌握知识点,网上我觉得主要还是提高的地方哦……呵呵……关于怎么学,我是这么过来的,每看一节书,做一节课后习题,其实初学主要还是学习语法和算法(解决问题的方法),多上机自己写程序,写不出来看答案的算法,自己再写一边,关键这个阶段还是积累为主,基本知识学好了,可以学深入编程,不过你需要有熟悉的语法,可以写一些小程序:学生成绩管理系统等等,就过关了,然后可以学习链表,图像编程,等等高级编程……呵呵……努力一定有回报的……加油吧…

‘伍’ 求《C语言实战105例》全文免费下载百度网盘资源,谢谢~

《C语言实战105例》网络网盘pdf最新全集下载:
链接:https://pan..com/s/1SUsq3lJF_9SOjSTGnuiUFw

?pwd=7olg 提取码:7olg
简介:C语言实战105例共汇集105个实例,内容循序渐进,通过实例进许可证C语言编程。全书分为8篇,包括基础篇、数值计算与数据结构篇、文本屏幕与文件操作篇、病毒与安全篇、图形篇、系统篇、游戏篇、综合篇,基本涵盖了目前C语言编程的各个方面。