1. c语言课程设计
这个不难。
只要你清楚题目意思。
自己多想想吧,会有所收益的。
2. c语言课程设计《商品销售管理系统》
你好!你都要实行什么功能?
3. C语言课程设计题目
/*13. book.c源程序*/
#include <dos.h>
#include <bios.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define LEFT 0x4b00 /*左*/
#define RIGHT 0x4d00 /*右*/
#define DOWN 0x5000 /*下*/
#define UP 0x4800 /*上*/
#define SPACE 0x3920 /*空格*/
#define ESC 0x011b /* ESC键*/
#define ENTER 0x1c0d /*回车键*/
#define Backspace 0xe08 /*擦除键*/
#define ALT_B 12288 /*组合键ALT_B */
#define ALT_M 12800/*组合键ALT_M */
#define ALT_H 8960/*组合键ALT_H */
int key;/*按键变量*/
int textx,texty;/*光标坐标,x行,y列*/
struct menustruct/*菜单用的结构体*/
{
char name[10];/*主菜单名*/
char str[10][20];/*选项*/
int n;/*选项数*/
}ml[3];/*使用了3个,可根据需要增删*/
typedef struct BookList/*书的结构体*/
{
char num[20];/*图书编号*/
char name[20];/*书名*/
int price;/*书的价格*/
char person[20];/*借阅人*/
int yes;/*判断书是否存在或者已经借出,1存在,0借出*/
struct BookList *next;
}Book;
typedef struct MemberList/*会员的结构体*/
{
char name[20];/*会员的姓名*/
char sex[2];/*会员的性别*/
int age;/*会员的年龄*/
struct MemberList *next;
}Member;
char save[4096];/*保存文本区域空间*/
/*char sav1[4096];*/
char c[4096];/*清屏专用空间*/
int i,j;/*常用变量*/
void Menu();/*初始化界面*/
void Selectitem();/*定义菜单*/
void DrawSelectitem();/*显示主菜单*/
void BlackText(int x,int y,char *z);/*选中菜单*/
void RedText(int x,int y,char *z);/*正常菜单*/
void Run();/*具体操作过程*/
void DrawMl(int n);/*显示下拉菜单*/
void MoveMl(int n,int x);/*菜单选项的控制*/
void Enter(int m,int n);/*菜单选项的具体功能*/
void BookAdd();/*添加图书*/
void BookConsult();/*图书查询*/
void BookDel();/*删除图书资料*/
void BookBorrow();/*借书*/
void BookReturn(); /*还书*/
void MemberAdd(); /*增加会员*/
void MemberConsult();/*查询会员*/
void MemberDel(); /*删除会员*/
void MemberBook(); /*查询会员借书信息*/
void Help(); /*帮助*/
void Ver(); /*版本信息*/
void ClrScr();/*自定义清屏函数*/
void DrawFrame(int left,int up,int right,int down,int textcolor,int backgroundcolor);/*画边框*/
/***主函数****/
void main(void)
{
Menu();/*初始化界面*/
Run();/*具体操作过程*/
}
/*初始化界面*/
void Menu()
{
system("cls"); /*调用系统的清屏命令*/
textbackground(BLUE);/*将背景设置为蓝色*/
window(1,1,25,80);
clrscr();
textx=3;/*光标初始化位置*/
texty=2;
gotoxy(1,2);
printf("%c",218);/*画左上角*/
for(i=0;i<78;i++)
printf("%c",196); /*画水平直线*/
printf("%c",191);/*画右上角*/
for(i=3;i<=23;i++)
{
gotoxy(1,i);
printf("%c",179); /*画垂直线*/
gotoxy(80,i);
printf("%c",179);
}
printf("%c",192); /*画左下角*/
for(i=0;i<78;i++)
printf("%c",196);
printf("%c",217); /*画右下角*/
gotoxy(1,1);
textcolor(7); /*设置灰色*/
for(i=0;i<80;i++)
cprintf("%c",219);/*用符号实现画主菜单的灰色背景区*/
Selectitem(); /*调用选项函数*/
DrawSelectitem(); /*画选项*/
gettext(2,3,78,23,c); /*保存当前文本区域*/
}
/*定义菜单*/
void Selectitem()
{
strcpy(ml[0].name,"Book");/*下面的具体选项补空格是为了各菜单黑色背景相同*/
strcpy(ml[0].str[0],"Add ");/*添加图书*/
strcpy(ml[0].str[1],"Consult ");/*查询图书*/
strcpy(ml[0].str[2],"Del ");/*删除图书资料*/
strcpy(ml[0].str[3],"Borrow ");/*借书*/
strcpy(ml[0].str[4],"Return ");/*还书*/
strcpy(ml[0].str[5],"Exit ");/*退出系统*/
ml[0].n=6; /*保存菜单的项数*/
strcpy(ml[1].name,"Member");
strcpy(ml[1].str[0],"Add ");/*添加新会员*/
strcpy(ml[1].str[1],"Consult ");/*查询会员资料*/
strcpy(ml[1].str[2],"Del ");/*删除会员资料*/
strcpy(ml[1].str[3],"Member&book ");
ml[1].n=4;
strcpy(ml[2].name,"Help");/*系统帮助*/
strcpy(ml[2].str[0],"This System ");
strcpy(ml[2].str[1],"Ver ");
ml[2].n=2;
}
/*显示主单名*/
void DrawSelectitem()
{
for(i=0;i<3;i++)
RedText(i,1,ml[i].name); /*显示主菜单名,且首字母为红色*/
}
/*正常显示菜单*/
void RedText(int x,int y,char *z)
{
textbackground(7); /*设置背景颜色为浅灰色*/
gotoxy(3+x*20,y);
for(j=0;z[j];j++)
{
if(j==0)
textcolor(RED);/*第一个字母显示红色*/
else
textcolor(BLACK); /*设置黑色*/
cprintf("%c",z[j]); /*输出菜单名*/
}
}
/*显示选中菜单*/
void BlackText(int x,int y,char *z)
{
textbackground(0); /*设置背景颜色为黑色*/
textcolor(15); /*设置文本颜色为白色*/
gotoxy(3+20*x,y);/*定位坐标*/
cputs(z); /*输出菜单名字符串*/
}
/*按键操作过程*/
void Run()
{
while(1)
{
gotoxy(texty,textx);
key=bioskey(0);/*接收按键*/
switch(key)
{
case ALT_B:
case ESC: DrawMl(0);break; /*显示下拉菜单1*/
case ALT_M: DrawMl(1);break;/*显示下拉菜单2*/
case ALT_H: DrawMl(2);/*显示下拉菜单3*/
case UP: /*上光标键的操作控制*/
{
if(textx==3)
textx=23;
textx--;
gotoxy(texty,textx);
}break;
case DOWN: /*下光标键的操作控制*/
{
if(textx==23)
textx=3;
textx++;
gotoxy(texty,textx);
}break;
case LEFT: /*左光标键的操作控制*/
{
if(texty==2)
texty=79;
texty--;
gotoxy(texty,textx);
}break;
case Backspace: /*擦除键的设置*/
{
if(texty==2&&textx==3)
continue;
else
{
if(texty!=2)
texty--; /*擦除键的细节问题,先擦去东西,然后光标还要往后退一格*/
else
if(texty==2)
{
texty=78;
textx--;
}
gotoxy(texty,textx);
printf(" ");
gotoxy(texty,textx);
}
}break;/*end case 0xe08*/
case RIGHT: /*右光标键的操作控制*/
{
if(texty==79)
texty=2;
texty++;
gotoxy(texty,textx);
}break;
case SPACE: /*空格键的操作*/
{
if(texty==79)
continue;
else
{
gotoxy(texty,textx); /*空格的细节操作*/
printf(" ");
texty++;
gotoxy(texty,textx);
}
}break;
case ENTER: /*回车的控制操作*/
{
if(textx==23)
continue;
textx++;
texty=2;
gotoxy(texty,textx);
}break;
default : /*非控制键的结果*/
{
if(texty==79&&textx==23)/*到达最后就不再输出*/
continue;
else
if(texty==79&&textx!=23) /*到行的最后*/
{
textx++;
texty=2;
}
gotoxy(texty,textx);/*输出结果*/
printf("%c",key);
if(texty==79) /*如果texty==79就不执行*/
continue;
else /*如果没到行尾就继续执行,使光标向前移动一位*/
texty++;
}
}
}/*大循环的大括号*/
}
/*画边框函数*/
void DrawFrame(int l,int u,int r,int d,int tcolor,int bcolor)
{
textbackground(bcolor); /*背景颜色*/
textcolor(bcolor); /*文本颜色*/
for(i=l;i<=r;i++) /*输出背景区域*/
{
for(j=u;j<=d;j++)
{
gotoxy(i,j);
printf("%c",219); /*输出背景字符*/
}
}
textcolor(tcolor);/*边框颜色*/
for(i=u+1;i<d;i++) /*在背景区域内输出边框线*/
{
gotoxy(l,i);
cprintf("%c",179); /*垂直线*/
gotoxy(r,i);
cprintf("%c",179);
}
for(i=l+1;i<r;i++)
{
gotoxy(i,u);
cprintf("%c",196); /*水平线*/
gotoxy(i,d);
cprintf("%c",196);
}
gotoxy(l,u);
cprintf("%c",218);/*左上角*/
gotoxy(r,u);
cprintf("%c",191);/*右上角*/
gotoxy(l,d);
cprintf("%c",192);/*左下角*/
gotoxy(r,d);
cprintf("%c",217); /*右下角*/
/* gettext(l+1,u+1,r-1,d-1,save1);*//*保存边框内区域*/
}
/*显示具体下拉选择项目*/
void DrawMl(int n)
{
gettext(1,1,80,25,save);/*保存被掩盖的地方*/
BlackText(n,1,ml[n].name);/*反选显示主菜单*/
DrawFrame(3+20*n-1,2,3+20*n+19,3+ml[n].n,0,7);/*下拉菜单的边框*/
for(i=3;i<3+ml[n].n;i++)/*输出所选菜单各选项*/
{
if(i==3)
BlackText(n,i,ml[n].str[i-3]);/*默认选中第一项*/
else
RedText(n,i,ml[n].str[i-3]);/*其余各项首字符红色显示*/
}
gotoxy(79,1);
MoveMl(n,3);/*菜单选项的控制*/
}
/*菜单选项的控制,n决定水平项,x决定下拉的选项*/
void MoveMl(int n,int x)
{
int flag=1;
while(flag)
{
gotoxy(79,1);
key=bioskey(0);/*接收按键*/
gotoxy(79,1);
switch(key)
{
case ESC:/*退出循环*/
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
flag=0;
break;
case LEFT:/*移到左边的选项*/
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
if(n==0)/*往左移动越界的话移到最后一个选项*/
DrawMl(2);
else
DrawMl(n-1);
flag=0;
break;
case RIGHT:/*移动右边的选项*/
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
if(n==2)/*往右移动越界的话移到第一个选项*/
DrawMl(0);
else
DrawMl(n+1);
flag=0;
break;
case UP:/*具体选项往上移动*/
RedText(n,x,ml[n].str[x-3]);/*输出红色字体*/
if(x==3)/*移到最上面再按上键,就移到最下面*/
x=3+ml[n].n-1;
else
x--;/*移动到新的要显示的内容*/
BlackText(n,x,ml[n].str[x-3]);/*输出黑色字体*/
flag=1;
break;
case DOWN:/*具体选项往下移动*/
RedText(n,x,ml[n].str[x-3]);
if(x==(3+ml[n].n-1))/*移动到最底下再按下键就移到最上面*/
x=3;
else
x++;/*移动到新的要显示的内容*/
BlackText(n,x,ml[n].str[x-3]);
flag=1;
break;
case ENTER:
puttext(1,1,80,25,save);/*恢复打开菜单前的样子*/
Enter(n,x-3);/*菜单选项的具体功能*/
flag=0;
break;
}
gotoxy(79,1);
}
}
/*菜单选项的具体功能*/
void Enter(int m,int n)
{
switch(m)
{
case 0:switch(n) /*选择了图书菜单选项*/
{
case 0:BookAdd();break;/*添加图书*/
case 1:BookConsult();break;/*图书查询*/
case 2:BookDel();break;/*删除一本图书资料*/
case 3:BookBorrow();break;/*借书*/
case 4:BookReturn();break;/*还书*/
case 5:exit(0);break;
} break;/*退出系统*/
case 1: switch(n) /*选择了会员菜单选项*/
{
case 0: MemberAdd();break;/*添加会员*/
case 1: MemberConsult();break;/*会员查询*/
case 2:MemberDel();break;/*删除一个会员资料*/
case 3:MemberBook();/*查询某个会员所借图书情况*/
}break;
case 2:switch(n) /*选择了帮助菜单选项*/
{
case 0:Help();break;
case 1:Ver();
}
}/*结束外switch*/
}
4. c语言课程设计
很想说两句,
你看知道教育一栏,
很多人都问各种各样的参考资料是吧,
其实,
这类问题很多都是没有人回答的,
或者根本就找不到提问者想要的答案,
因为现在各种各样的资料简直太多了,
你提问,
在网络知道问,
是面向全国,
其实别人查的可能还不如你自己查的,
别人很可能也就是在网络,
输入要查的资料名字,
查不到,
或者查到一点就粘上去了,
远远不是你想要的那种,
所以,
觉得问这类问题,
就有些浪费分数了。
当然,
这只是我个人的一些看法,
还是希望你能在知道找到你想要的。
这是我复制别人的,我觉得很有道理.
5. c语言课程设计
这个题目很有趣啊,先收藏了
6. C语言课程设计课题求编程
谭浩强的C基础好像有类似的例子吧
要求输入学生成绩
利用数组或者变量来获取成绩,累加然后除以10就是平均成绩;
再定义个变量做为最高成绩,令其等于数组的起始元素或者第一个变量值,逐个与后面的比较,大于它的就把这个数作为新的最高成绩,循环到最后
输出
7. C语言课程设计课题求编程
总共541中算法;
#inlcude "stdafx.h"
int main(int argc, char* argv[])
{
int x;
int y;
int z;
int sum = 0;
for (x = 0; x <= 100;x++)
{
for (y = 0; y <= 50; y++)
{
for (z = 0; z <=20; z++)
{
if ((x +2*y+5*z) ==100)
{
sum++;
printf("1元钱可以分成%d张一分的,%d张两分,%d张五分\n",x,y,z);
}
}
}
}
printf("总共有%d种算法\n",sum);
return 0;
}
1元钱可以分成26张一分的,32张两分,2张五分
1元钱可以分成26张一分的,37张两分,0张五分
1元钱可以分成27张一分的,4张两分,13张五分
1元钱可以分成27张一分的,9张两分,11张五分
1元钱可以分成27张一分的,14张两分,9张五分
1元钱可以分成27张一分的,19张两分,7张五分
1元钱可以分成27张一分的,24张两分,5张五分
1元钱可以分成27张一分的,29张两分,3张五分
1元钱可以分成27张一分的,34张两分,1张五分
1元钱可以分成28张一分的,1张两分,14张五分
1元钱可以分成28张一分的,6张两分,12张五分
1元钱可以分成28张一分的,11张两分,10张五分
1元钱可以分成28张一分的,16张两分,8张五分
1元钱可以分成28张一分的,21张两分,6张五分
1元钱可以分成28张一分的,26张两分,4张五分
1元钱可以分成28张一分的,31张两分,2张五分
1元钱可以分成28张一分的,36张两分,0张五分
1元钱可以分成29张一分的,3张两分,13张五分
1元钱可以分成29张一分的,8张两分,11张五分
1元钱可以分成29张一分的,13张两分,9张五分
1元钱可以分成29张一分的,18张两分,7张五分
1元钱可以分成29张一分的,23张两分,5张五分
1元钱可以分成29张一分的,28张两分,3张五分
1元钱可以分成29张一分的,33张两分,1张五分
1元钱可以分成30张一分的,0张两分,14张五分
1元钱可以分成30张一分的,5张两分,12张五分
1元钱可以分成30张一分的,10张两分,10张五分
1元钱可以分成30张一分的,15张两分,8张五分
1元钱可以分成30张一分的,20张两分,6张五分
1元钱可以分成30张一分的,25张两分,4张五分
1元钱可以分成30张一分的,30张两分,2张五分
1元钱可以分成30张一分的,35张两分,0张五分
1元钱可以分成31张一分的,2张两分,13张五分
1元钱可以分成31张一分的,7张两分,11张五分
1元钱可以分成31张一分的,12张两分,9张五分
1元钱可以分成31张一分的,17张两分,7张五分
1元钱可以分成31张一分的,22张两分,5张五分
1元钱可以分成31张一分的,27张两分,3张五分
1元钱可以分成31张一分的,32张两分,1张五分
1元钱可以分成32张一分的,4张两分,12张五分
1元钱可以分成32张一分的,9张两分,10张五分
1元钱可以分成32张一分的,14张两分,8张五分
1元钱可以分成32张一分的,19张两分,6张五分
1元钱可以分成32张一分的,24张两分,4张五分
1元钱可以分成32张一分的,29张两分,2张五分
1元钱可以分成32张一分的,34张两分,0张五分
1元钱可以分成33张一分的,1张两分,13张五分
1元钱可以分成33张一分的,6张两分,11张五分
1元钱可以分成33张一分的,11张两分,9张五分
1元钱可以分成33张一分的,16张两分,7张五分
1元钱可以分成33张一分的,21张两分,5张五分
1元钱可以分成33张一分的,26张两分,3张五分
1元钱可以分成33张一分的,31张两分,1张五分
1元钱可以分成34张一分的,3张两分,12张五分
1元钱可以分成34张一分的,8张两分,10张五分
1元钱可以分成34张一分的,13张两分,8张五分
1元钱可以分成34张一分的,18张两分,6张五分
1元钱可以分成34张一分的,23张两分,4张五分
1元钱可以分成34张一分的,28张两分,2张五分
1元钱可以分成34张一分的,33张两分,0张五分
1元钱可以分成35张一分的,0张两分,13张五分
1元钱可以分成35张一分的,5张两分,11张五分
1元钱可以分成35张一分的,10张两分,9张五分
1元钱可以分成35张一分的,15张两分,7张五分
1元钱可以分成35张一分的,20张两分,5张五分
1元钱可以分成35张一分的,25张两分,3张五分
1元钱可以分成35张一分的,30张两分,1张五分
1元钱可以分成36张一分的,2张两分,12张五分
1元钱可以分成36张一分的,7张两分,10张五分
1元钱可以分成36张一分的,12张两分,8张五分
1元钱可以分成36张一分的,17张两分,6张五分
1元钱可以分成36张一分的,22张两分,4张五分
1元钱可以分成36张一分的,27张两分,2张五分
1元钱可以分成36张一分的,32张两分,0张五分
1元钱可以分成37张一分的,4张两分,11张五分
1元钱可以分成37张一分的,9张两分,9张五分
1元钱可以分成37张一分的,14张两分,7张五分
1元钱可以分成37张一分的,19张两分,5张五分
1元钱可以分成37张一分的,24张两分,3张五分
1元钱可以分成37张一分的,29张两分,1张五分
1元钱可以分成38张一分的,1张两分,12张五分
1元钱可以分成38张一分的,6张两分,10张五分
1元钱可以分成38张一分的,11张两分,8张五分
1元钱可以分成38张一分的,16张两分,6张五分
1元钱可以分成38张一分的,21张两分,4张五分
1元钱可以分成38张一分的,26张两分,2张五分
1元钱可以分成38张一分的,31张两分,0张五分
1元钱可以分成39张一分的,3张两分,11张五分
1元钱可以分成39张一分的,8张两分,9张五分
1元钱可以分成39张一分的,13张两分,7张五分
1元钱可以分成39张一分的,18张两分,5张五分
1元钱可以分成39张一分的,23张两分,3张五分
1元钱可以分成39张一分的,28张两分,1张五分
1元钱可以分成40张一分的,0张两分,12张五分
1元钱可以分成40张一分的,5张两分,10张五分
1元钱可以分成40张一分的,10张两分,8张五分
1元钱可以分成40张一分的,15张两分,6张五分
1元钱可以分成40张一分的,20张两分,4张五分
1元钱可以分成40张一分的,25张两分,2张五分
1元钱可以分成40张一分的,30张两分,0张五分
1元钱可以分成41张一分的,2张两分,11张五分
1元钱可以分成41张一分的,7张两分,9张五分
1元钱可以分成41张一分的,12张两分,7张五分
1元钱可以分成41张一分的,17张两分,5张五分
1元钱可以分成41张一分的,22张两分,3张五分
1元钱可以分成41张一分的,27张两分,1张五分
1元钱可以分成42张一分的,4张两分,10张五分
1元钱可以分成42张一分的,9张两分,8张五分
1元钱可以分成42张一分的,14张两分,6张五分
1元钱可以分成42张一分的,19张两分,4张五分
1元钱可以分成42张一分的,24张两分,2张五分
1元钱可以分成42张一分的,29张两分,0张五分
1元钱可以分成43张一分的,1张两分,11张五分
1元钱可以分成43张一分的,6张两分,9张五分
1元钱可以分成43张一分的,11张两分,7张五分
1元钱可以分成43张一分的,16张两分,5张五分
1元钱可以分成43张一分的,21张两分,3张五分
1元钱可以分成43张一分的,26张两分,1张五分
1元钱可以分成44张一分的,3张两分,10张五分
1元钱可以分成44张一分的,8张两分,8张五分
1元钱可以分成44张一分的,13张两分,6张五分
1元钱可以分成44张一分的,18张两分,4张五分
1元钱可以分成44张一分的,23张两分,2张五分
1元钱可以分成44张一分的,28张两分,0张五分
1元钱可以分成45张一分的,0张两分,11张五分
1元钱可以分成45张一分的,5张两分,9张五分
1元钱可以分成45张一分的,10张两分,7张五分
1元钱可以分成45张一分的,15张两分,5张五分
1元钱可以分成45张一分的,20张两分,3张五分
1元钱可以分成45张一分的,25张两分,1张五分
1元钱可以分成46张一分的,2张两分,10张五分
1元钱可以分成46张一分的,7张两分,8张五分
1元钱可以分成46张一分的,12张两分,6张五分
1元钱可以分成46张一分的,17张两分,4张五分
1元钱可以分成46张一分的,22张两分,2张五分
1元钱可以分成46张一分的,27张两分,0张五分
1元钱可以分成47张一分的,4张两分,9张五分
1元钱可以分成47张一分的,9张两分,7张五分
1元钱可以分成47张一分的,14张两分,5张五分
1元钱可以分成47张一分的,19张两分,3张五分
1元钱可以分成47张一分的,24张两分,1张五分
1元钱可以分成48张一分的,1张两分,10张五分
1元钱可以分成48张一分的,6张两分,8张五分
1元钱可以分成48张一分的,11张两分,6张五分
1元钱可以分成48张一分的,16张两分,4张五分
1元钱可以分成48张一分的,21张两分,2张五分
1元钱可以分成48张一分的,26张两分,0张五分
1元钱可以分成49张一分的,3张两分,9张五分
1元钱可以分成49张一分的,8张两分,7张五分
1元钱可以分成49张一分的,13张两分,5张五分
1元钱可以分成49张一分的,18张两分,3张五分
1元钱可以分成49张一分的,23张两分,1张五分
1元钱可以分成50张一分的,0张两分,10张五分
1元钱可以分成50张一分的,5张两分,8张五分
1元钱可以分成50张一分的,10张两分,6张五分
1元钱可以分成50张一分的,15张两分,4张五分
1元钱可以分成50张一分的,20张两分,2张五分
1元钱可以分成50张一分的,25张两分,0张五分
1元钱可以分成51张一分的,2张两分,9张五分
1元钱可以分成51张一分的,7张两分,7张五分
1元钱可以分成51张一分的,12张两分,5张五分
1元钱可以分成51张一分的,17张两分,3张五分
1元钱可以分成51张一分的,22张两分,1张五分
1元钱可以分成52张一分的,4张两分,8张五分
1元钱可以分成52张一分的,9张两分,6张五分
1元钱可以分成52张一分的,14张两分,4张五分
1元钱可以分成52张一分的,19张两分,2张五分
1元钱可以分成52张一分的,24张两分,0张五分
1元钱可以分成53张一分的,1张两分,9张五分
1元钱可以分成53张一分的,6张两分,7张五分
1元钱可以分成53张一分的,11张两分,5张五分
1元钱可以分成53张一分的,16张两分,3张五分
1元钱可以分成53张一分的,21张两分,1张五分
1元钱可以分成54张一分的,3张两分,8张五分
1元钱可以分成54张一分的,8张两分,6张五分
1元钱可以分成54张一分的,13张两分,4张五分
1元钱可以分成54张一分的,18张两分,2张五分
1元钱可以分成54张一分的,23张两分,0张五分
1元钱可以分成55张一分的,0张两分,9张五分
1元钱可以分成55张一分的,5张两分,7张五分
1元钱可以分成55张一分的,10张两分,5张五分
1元钱可以分成55张一分的,15张两分,3张五分
1元钱可以分成55张一分的,20张两分,1张五分
1元钱可以分成56张一分的,2张两分,8张五分
1元钱可以分成56张一分的,7张两分,6张五分
1元钱可以分成56张一分的,12张两分,4张五分
1元钱可以分成56张一分的,17张两分,2张五分
1元钱可以分成56张一分的,22张两分,0张五分
1元钱可以分成57张一分的,4张两分,7张五分
1元钱可以分成57张一分的,9张两分,5张五分
1元钱可以分成57张一分的,14张两分,3张五分
1元钱可以分成57张一分的,19张两分,1张五分
1元钱可以分成58张一分的,1张两分,8张五分
1元钱可以分成58张一分的,6张两分,6张五分
1元钱可以分成58张一分的,11张两分,4张五分
1元钱可以分成58张一分的,16张两分,2张五分
1元钱可以分成58张一分的,21张两分,0张五分
1元钱可以分成59张一分的,3张两分,7张五分
1元钱可以分成59张一分的,8张两分,5张五分
1元钱可以分成59张一分的,13张两分,3张五分
1元钱可以分成59张一分的,18张两分,1张五分
1元钱可以分成60张一分的,0张两分,8张五分
1元钱可以分成60张一分的,5张两分,6张五分
1元钱可以分成60张一分的,10张两分,4张五分
1元钱可以分成60张一分的,15张两分,2张五分
1元钱可以分成60张一分的,20张两分,0张五分
1元钱可以分成61张一分的,2张两分,7张五分
1元钱可以分成61张一分的,7张两分,5张五分
1元钱可以分成61张一分的,12张两分,3张五分
1元钱可以分成61张一分的,17张两分,1张五分
1元钱可以分成62张一分的,4张两分,6张五分
1元钱可以分成62张一分的,9张两分,4张五分
1元钱可以分成62张一分的,14张两分,2张五分
1元钱可以分成62张一分的,19张两分,0张五分
1元钱可以分成63张一分的,1张两分,7张五分
1元钱可以分成63张一分的,6张两分,5张五分
1元钱可以分成63张一分的,11张两分,3张五分
1元钱可以分成63张一分的,16张两分,1张五分
1元钱可以分成64张一分的,3张两分,6张五分
1元钱可以分成64张一分的,8张两分,4张五分
1元钱可以分成64张一分的,13张两分,2张五分
1元钱可以分成64张一分的,18张两分,0张五分
1元钱可以分成65张一分的,0张两分,7张五分
1元钱可以分成65张一分的,5张两分,5张五分
1元钱可以分成65张一分的,10张两分,3张五分
1元钱可以分成65张一分的,15张两分,1张五分
1元钱可以分成66张一分的,2张两分,6张五分
1元钱可以分成66张一分的,7张两分,4张五分
1元钱可以分成66张一分的,12张两分,2张五分
1元钱可以分成66张一分的,17张两分,0张五分
1元钱可以分成67张一分的,4张两分,5张五分
1元钱可以分成67张一分的,9张两分,3张五分
1元钱可以分成67张一分的,14张两分,1张五分
1元钱可以分成68张一分的,1张两分,6张五分
1元钱可以分成68张一分的,6张两分,4张五分
1元钱可以分成68张一分的,11张两分,2张五分
1元钱可以分成68张一分的,16张两分,0张五分
1元钱可以分成69张一分的,3张两分,5张五分
1元钱可以分成69张一分的,8张两分,3张五分
1元钱可以分成69张一分的,13张两分,1张五分
1元钱可以分成70张一分的,0张两分,6张五分
1元钱可以分成70张一分的,5张两分,4张五分
1元钱可以分成70张一分的,10张两分,2张五分
1元钱可以分成70张一分的,15张两分,0张五分
1元钱可以分成71张一分的,2张两分,5张五分
1元钱可以分成71张一分的,7张两分,3张五分
1元钱可以分成71张一分的,12张两分,1张五分
1元钱可以分成72张一分的,4张两分,4张五分
1元钱可以分成72张一分的,9张两分,2张五分
1元钱可以分成72张一分的,14张两分,0张五分
1元钱可以分成73张一分的,1张两分,5张五分
1元钱可以分成73张一分的,6张两分,3张五分
1元钱可以分成73张一分的,11张两分,1张五分
1元钱可以分成74张一分的,3张两分,4张五分
1元钱可以分成74张一分的,8张两分,2张五分
1元钱可以分成74张一分的,13张两分,0张五分
1元钱可以分成75张一分的,0张两分,5张五分
1元钱可以分成75张一分的,5张两分,3张五分
1元钱可以分成75张一分的,10张两分,1张五分
1元钱可以分成76张一分的,2张两分,4张五分
1元钱可以分成76张一分的,7张两分,2张五分
1元钱可以分成76张一分的,12张两分,0张五分
1元钱可以分成77张一分的,4张两分,3张五分
1元钱可以分成77张一分的,9张两分,1张五分
1元钱可以分成78张一分的,1张两分,4张五分
1元钱可以分成78张一分的,6张两分,2张五分
1元钱可以分成78张一分的,11张两分,0张五分
1元钱可以分成79张一分的,3张两分,3张五分
1元钱可以分成79张一分的,8张两分,1张五分
1元钱可以分成80张一分的,0张两分,4张五分
1元钱可以分成80张一分的,5张两分,2张五分
1元钱可以分成80张一分的,10张两分,0张五分
1元钱可以分成81张一分的,2张两分,3张五分
1元钱可以分成81张一分的,7张两分,1张五分
1元钱可以分成82张一分的,4张两分,2张五分
1元钱可以分成82张一分的,9张两分,0张五分
1元钱可以分成83张一分的,1张两分,3张五分
1元钱可以分成83张一分的,6张两分,1张五分
1元钱可以分成84张一分的,3张两分,2张五分
1元钱可以分成84张一分的,8张两分,0张五分
1元钱可以分成85张一分的,0张两分,3张五分
1元钱可以分成85张一分的,5张两分,1张五分
1元钱可以分成86张一分的,2张两分,2张五分
1元钱可以分成86张一分的,7张两分,0张五分
1元钱可以分成87张一分的,4张两分,1张五分
1元钱可以分成88张一分的,1张两分,2张五分
1元钱可以分成88张一分的,6张两分,0张五分
1元钱可以分成89张一分的,3张两分,1张五分
1元钱可以分成90张一分的,0张两分,2张五分
1元钱可以分成90张一分的,5张两分,0张五分
1元钱可以分成91张一分的,2张两分,1张五分
1元钱可以分成92张一分的,4张两分,0张五分
1元钱可以分成93张一分的,1张两分,1张五分
1元钱可以分成94张一分的,3张两分,0张五分
1元钱可以分成95张一分的,0张两分,1张五分
1元钱可以分成96张一分的,2张两分,0张五分
1元钱可以分成98张一分的,1张两分,0张五分
1元钱可以分成100张一分的,0张两分,0张五分
总共有541种算法
Press any key to continue
8. 《C语言程序设计》课程设计任务书
像你这么复杂的东西,不出到200分以上是不会有人给你做的
9. 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;
}