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;
}