當前位置:首頁 » 編程語言 » 簡單的c語言課程設計

簡單的c語言課程設計

發布時間: 2022-09-02 04:09:44

『壹』 c語言編程 只要一個簡單的課程設計,題目是:《簡單資料庫

這個要看你的平台的,什麼資料庫,什麼操作系統,什麼開發工具
目前,資料庫基本都支持SQL語言的(LZ的就是SQL語言),而不同的資料庫對C支持的方式也不同
如windwos平台,大部分資料庫都可用ADO
當然,資料庫本身也會提供C語言開發
如oracle,支持pro*c,oci等
先找本資料庫的書看下,明白SQL語言後再參考不同的平台,看下你而要的資料庫的開發方式.

『貳』 最簡單的c語言程序設計

開學老師教的第一個程序就是輸出」Hello World!「。

#include<stdio.h>
voidmain()
{
printf("HelloWorld!");
}

『叄』 c語言課設

之前寫過的,你可以拿去參考


#include<stdio.h>

#include<string.h>

#include<stdlib.h>

typedef struct guest

{

int number;

char name[10];

int sum;

char time[5];

struct guest *next;

}GuestLink,*Pointer;


GuestLink stu[10];

int i,j,k;

void Insert(Pointer *Head);

void Search(Pointer Head);

void Update(Pointer Head);

void Delete(Pointer *Head);

void Show(Pointer Head);

void Sort(Pointer Head);

void Save(Pointer Head);

void Put(Pointer Head);


int main()

{

Pointer Head=NULL;

int i;

do{

printf(" ");

printf("1---增加訂餐客戶信息 ");

printf("2---查詢訂餐客戶信息 ");

printf("3---修改訂餐客戶信息 ");

printf("4---刪除訂餐客戶信息 ");

printf("5---瀏覽客戶訂餐信息 ");

printf("6---按照用餐時間升序排序 ");

printf("7---保存訂餐信息到數據文件 ");

printf("8---查看數據文件中的訂餐信息 ");

printf("9---退出 ");

printf(" ");

printf("請選擇1--9:");

scanf("%d",&i);

switch(i)

{

case 1:Insert(&Head);

break;

case 2:Search(Head);

break;

case 3:Update(Head);

break;

case 4:Delete(&Head);

break;

case 5:Show(Head);

break;

case 6:Sort(Head);

break;

case 7:Save(Head);

break;

case 8:Put(Head);

break;

case 9:

break;

default:printf("選擇錯誤!請重新選擇!");

break;

}

}while(i!=9);

return 0;

}



void Insert(Pointer *Head)

{

int in_number;

Pointer p,q,r;

printf("請輸入編號: ");

scanf("%d",&in_number);

p=q=*Head;

while(p!=NULL)

{

if(p->number==in_number)

{

printf("已經有相同編號:");

return;

}

else

{

q=p;p=p->next;

}

}

r=(Pointer)malloc(sizeof(GuestLink));//沒有*號

r->next=NULL;

if(r==NULL)

{

printf("分配空間失敗");

return;

}

if(q==NULL)//如果是空表,判斷空表用q!!!!

*Head=r;

else

{q->next=r;}

r->number=in_number;

printf("請輸入姓名: ");

scanf("%s",r->name);

printf("請輸入人數: ");

scanf("%d",&r->sum);

printf("請輸入時間: ");

scanf("%s",r->time);

}

/*

void Insert(Pointer *Head)

{int in_number;

Pointer p,q,r;

p=q=*Head;

printf("請輸入號碼:");

scanf("%d",&in_number);

while(p!=NULL)

{

if(in_number==p->number)

{printf("已存在號碼!");}

else

{q=p;p=p->next;}



}

r=(Pointer)malloc(sizeof GuestLink);

r->next=NULL;

if(q==NULL)

*Head=r;

else

q->next=r;

printf("請輸入姓名:");

scanf("%s",r->name);

printf("請輸入人數");

scanf("%f",&r->sum);

printf("請輸入時間");

scanf("%s",r->time);

}*/



void Search(Pointer Head)

{

int flag=1;

int number;

Pointer p;

printf("請輸入要查詢的編號:");

scanf("%d",&number);

p=Head;

while(p!=NULL&&flag)

{

if(p->number==number)

{ printf("編號 姓名 人數 時間 ");

printf("%s ",p->name);

printf("%d ",p->sum);

printf("%s ",p->time);

flag=0;

}

else

p=p->next;

}

if(flag)

printf("沒有查詢到!");

}



/*

void Search(Pointer Head)

{

int flag=0;

int number;

Pointer p;

p=Head;

printf("請輸入您要查找的編號:");

scanf("%f",&number);

while(p!=NULL&&flag)

{

if(p->number==number)

{

printf("已查詢到您要的編號");

flag=0;

}

else

{

p=p->next;

}

}

if(flag==1)

{printf("姓名:%s",p->name);

printf("編號:%f",p->number);

printf("人數:%f",p->sum);

printf("時間:%s",p->time);

}

else

{printf("沒有查詢到您要查詢的編號!");}

}



*/



void Update(Pointer Head)

{

int flag=1;

int number;

Pointer p;

printf("請輸入要修改的編號:");

scanf("%d",&number);

p=Head;

while(p!=NULL&&flag)

{

if(p->number==number)

{

printf("請輸入人數:");

scanf("%d",&p->sum);

printf("請輸入用餐時間:");

scanf("%s",p->time);

flag=0;

}

else

p=p->next;

}

if(flag)

printf("沒有找到要修改的記錄!");

}

//update與查詢過程相似!!!



void Delete(Pointer *Head)

{

int flag=1;

int number;

Pointer p,q;

printf("請輸入要刪除的數據編號:");

scanf("%d",&number);

p=q=*Head;

while(p!=NULL&&flag)

{

if(p->number==number)

{

if(p==*Head)

{

*Head=p->next;free(p);//刪除結點後要及時釋放內存!!!

}

else

{q->next=p->next;free(p);}

flag=0;

}

else

{q=p;p=p->next;}

}

if(flag)

printf("沒有找到可以刪除的數據!!");

}



/*

void Delete(Pointer *Head)

{

Pointer p,q;

p=q=*Head;

int number;

int flag=1;

printf("請輸入您要刪除的結點:");

scanf("%d",&number);

while(p!=NULL)

{

if(p->number==number)

{ if(p==*Head)

{

*Head=p->next;free(p);

}

else

{

q->next=p->next;free(p);

}

flag=0;

}

else

{

q=p;p=p->next;

}

}

if(flag)

{printf("沒有找到要刪除的數據!");}

}

*/



void Show(Pointer Head)

{

Pointer p;

p=Head;

printf("編號 姓名 人數 用餐時間 ");

while(p!=NULL)

{

printf("%d ",p->number);

printf("%s ",p->name);

printf("%d ",p->sum);

printf("%s ",p->time);

p=p->next;

}

}



void Sort(Pointer Head)

{

//三個for循環,第一個賦給結構數組 第二個排序,第三個輸出

Pointer p;

p=Head;

int count=0;

GuestLink temp;

for(i=0;p!=NULL;i++)

{

strcpy(stu[i].name,p->name);

stu[i].number=p->number;

stu[i].sum=p->sum;

strcpy(stu[i].time,p->time);

count++;

p=p->next;

}

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

{

k=i;

for(j=i+1;j<count;j++)

if(strcmp(stu[j].time,stu[k].time)<0)k=j;

if(k!=i)

{temp=stu[i];stu[i]=stu[k];stu[k]=temp;}//一個字都不能改!!!!

//{temp=stu[k];stu[k]=stu[i];stu[i]=temp;}

}

printf("編號 姓名 人數 用餐時間 ");

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

{

printf("%d ",stu[i].number);

printf("%s ",stu[i].name);

printf("%d ",stu[i].sum);

printf("%s ",stu[i].time);


}

}


/*Head=p=stu;

while(p!=NULL)

{

printf("姓名:%-10s",p->name);

printf("人數:%-10d",p->sum);

printf("用餐時間:%-10s",p->time);

printf("編號:%-10d ",p->number);

p=p->next;

}*/

/*

void Sort(Pointer Head)

{

Pointer p;

p=Head;

GuestLink temp;

count=0;

while(p!=NULL)

{p=p->next;

count++;

}

p=Head;

while(p!=NULL)

{for(i=0;i<count;i++)

{

stu[i].number=p->number;

strcpy(stu[i].name,p->name);

stu[i].sum=p->sum;

strcpy(stu[i].time,p->time);

}

p=p->next;

}

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

{

k=i;

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

{if(strcmp(stu[j].time,stu[k].time)<0)k=j;

if(k!=i)

{temp=stu[k];stu[k]=stu[i];temp=stu[i];}

}

}

}

*/




void Save(Pointer Head)

{

Pointer p;

FILE *fp;

p=Head;

for(i=0;p!=NULL;i++)

{

strcpy(p->name,stu[i].name);

p->number=stu[i].number;

p->sum=stu[i].sum;

strcpy(p->time,stu[i].time);

p=p->next;

}

if((fp=fopen("stud","w"))==NULL)

{printf("can't open !");}

p=Head;

while(p!=NULL)

{

if(fwrite(p,sizeof(GuestLink),1,fp)!=1)

printf("can't write! ");

p=p->next;

}

fclose(fp);

}



/*

void Save(Pointer Head)

{

FILE *fp;

Pointer p;

p=Head;

for(i=0;p!=NULL;i++)

{

stu[i].number=p->number;

strcpy(stu[i].name,p->name);

stu[i].sum=p->sum;

strcpy(stu[i].time,p->time);

p=p->next;

}

p=Head;

if((fp=fopen("stud","w"))==NULL)

{

printf("cam't open the file");

}

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

if(fwrite(p,sizeof(GuestLink),1,fp)!=1)

{

printf("cant write");

}

fclose(fp);

}

*/



void Put(Pointer Head)

{

FILE *fp;

Pointer p;

p=Head;

if((fp=fopen("stud","r"))==NULL)

{printf("can't open the File ");}

printf("編號 姓名 人數 用餐時間 ");

while(p!=NULL)

{

if(fread(p,sizeof(GuestLink),1,fp)!=1)

{printf("can't read!");}

printf("%d ",p->number);

printf("%s ",p->name);

printf("%d ",p->sum);

printf("%s ",p->time);

p=p->next;

}

fclose(fp);

}


採納哦~

『肆』 C語言課程設計--設計求兩數之差的絕對值的函數和抽獎程序

求絕對值:
#include<stdio.h>
#include "stdafx.h"
void main()
{
int a,b,t;
int fun(int a,int b);
printf("請輸入a和b的值:");
scanf("%d%d",&a,&b);
t=fun(a,b);
printf("%d和%d之差的絕對值為:%d\n",a,b,t);
}
int fun(int a,int b)
{ int t;
t=a-b;
if(t<0) t=t-2*t;
return t;
}
研究下

『伍』 C語言課程設計-保安值班系統

這個像排列組合多點:

c:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
char*week[7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
char*names[7]={"趙","錢","孫","李","周","吳","陳"};
intplan[7]={-1};
intplanNum=0;
voiddoPlan(intn,int*len,intaccept[7][3]){
if(n>6){
planNum++;
for(inti=0;i<n;++i){
printf("%s ",names[plan[i]]);
}
printf(" ");
}else{
for(inti=0;i<len[n];++i){
if(plan[accept[n][i]]>=0){
continue;
}
plan[accept[n][i]]=n;
doPlan(n+1,len,accept);
plan[accept[n][i]]=-1;
}
}
}

intmain(){
intlen[7]={2,2,2,1,3,2,3};//這里的數字對應accept[i]的長度
intaccept[7][3]={{2,4},{1,6},{0,3},{5},{1,4,6},{2,
5},{0,3,6}};
for(inti=0;i<7;i++){
printf("%s ",week[i]);
plan[i]=-1;
}
printf(" ");
doPlan(0,len,accept);
printf("總共%d個方案 ",planNum);
return0;
}

『陸』 C語言課程設計 簡單的.....

Answer To Question 1 & 2 :

充分利用ISO組織於1999年通過的C語言國際標准中的庫函數即可實現第一題。利用簡單的雙重循環即可解決問題二,用遞歸演算法不是好的選擇。

第一題完整源碼
(注意:本源碼中,函數GetWeekDay的返回值僅僅表示輸入參數是否「正確/有效」(例如前三個參數使用2001,2,29就是無效參數),能否得到預期的星期值;真正的星期值則是通過輸出變數返回給主調函數的。)
////////////////////////////////////////////
#include <time.h>
#include <stdio.h>

int GetWeekDay(int nYear,int nMon,int nDay, int *npWeekDay);

int main()
{
int nMyWeekDay;
int nResult;

nResult = GetWeekDay(2007,1,10,&nMyWeekDay);

return 0;
}

//輸入日期,返回星期的C語言函數
int GetWeekDay(int nYear,int nMon,int nDay, int *npWeekDay)
{
int nRetVal = 0;
time_t tMyDateTime;
struct tm tmMyDate,*tmpMyDate;

if((nYear<1900||nYear>=3000)
|| (nMon<1 || nMon>12)
|| (nDay<1||nDay>31) )
{
nRetVal = 1;
*npWeekDay = -1;
return nRetVal;
}
//memset(tmMyDate,0,sizeof(struct tm));
tmMyDate.tm_year = nYear-1900;
tmMyDate.tm_mon = nMon-1;
tmMyDate.tm_mday = nDay;
tmMyDate.tm_hour =16;
tmMyDate.tm_min =30;
tmMyDate.tm_sec =30;

tMyDateTime = mktime(&tmMyDate);
if(tMyDateTime<0)
{
nRetVal = 1;
*npWeekDay = -1;
return nRetVal;
}
tmpMyDate = localtime(&tMyDateTime);
*npWeekDay = tmpMyDate->tm_wday;
return nRetVal;
}
//Over

////////////////////////////////////////////////////
第二題:
#include <time.h>
#include <stdio.h>

int Sum(int n, int a);

int main()
{

//出題者可以自己將此處改為要求操作人鍵入N/A的值
int n=5,a=2,s;

s = Sum(n,a);

return 0;
}

//解決問題的函數
int Sum(int n, int a)
{
int nSum =0;
int nTmp;
int i,j;

for(i=1;i<=n; i++)
{
nTmp =a;
for(j=1;j<=i;j++)
{
nTmp += a*10*(j-1);
}
nSum += nTmp;
}
return nSum;
}

『柒』 C語言課程設計前言

C語言作為一門最通用的語言,在過去很流行,將來依然會如此。幾乎每一個理工科或者其他專業的學生毫不例外地要學習它。記得大學里,很多學校都把譚浩強教授的《C程序設計》作為入門教材,這是絕佳的選擇。然而,要更進一步,更全面而深入地學習呢?顯然有點力不從心。本書正是為了彌補這個缺憾而寫的,希望能對想比較全面而深入學習C語言程序設計的人有所幫助。

從C語言產生到現在,它已經成為最重要和最流行的編程語言之一。在各種流行編程語言中,都能看到C語言的影子,如Java的語法與C語言基本相同。學習、掌握C語言是每一個計算機技術人員的基本功之一。

C語言具有高級語言的強大功能,卻又有很多直接操作計算機硬體的功能(這些都是匯編語言的功能),因此,C語言通常又被稱為中級語言。學習和掌握C語言,既可以增進對於計算機底層工作機制的了解,又為進一步學習其他高級語言打下了堅實的基礎
從入門到精通:本書分上下兩篇,上篇針對初學者,從C語言的基礎開始,使略有計算機基礎的人都能容易地學會C語言編程。下篇則介紹了C語言的高級程序設計技巧,包括常用演算法、底層控制滑鼠、繪圖、加密壓縮等應用。

適用多種操作系統:本書實例都通過GCC編譯器調試,讀者不僅可在Windows環境下使用本書學習C語言,也可在Linux環境下使用本書學習C語言。循序漸進:本書編寫順序按C語言的知識點循序漸進地介紹。例如,先介紹數據的存儲,再介紹數據的輸入/輸出;先介紹簡單的程序設計概念,再介紹指針等C語言的難點。重點突出:指針是C語言的重點和難點,本書用了大量的篇幅,從不同方面對其進行講解,並列舉了大量的實例,幫助讀者理解並掌握指針。

然後在加點這本書分幾章,各是什麼內容,主要針對的是C語言什麼功能,最後寫些祝福大家學習進步之類的話就可以了

『捌』 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;
}

熱點內容
尾貨棉服直播間腳本 發布:2025-01-16 01:21:45 瀏覽:227
vb編程步驟 發布:2025-01-16 01:11:58 瀏覽:201
bb霜解壓 發布:2025-01-16 01:11:11 瀏覽:596
編程懟人 發布:2025-01-16 00:53:08 瀏覽:760
建立共享伺服器地址 發布:2025-01-16 00:26:40 瀏覽:565
android開機動畫修改 發布:2025-01-16 00:26:26 瀏覽:872
怎麼解壓pc版游戲 發布:2025-01-16 00:16:32 瀏覽:122
v9更新到91有方舟編譯器嗎 發布:2025-01-16 00:11:49 瀏覽:500
AB系統編程 發布:2025-01-16 00:09:37 瀏覽:621
存儲過程如何遍歷一個表的數據 發布:2025-01-16 00:08:34 瀏覽:875