c語言掃雷設計報告
⑴ 求完整c語言程序設計報告!!
C語言課程設計報告--學生成績管理系
C語言課程設計報告:
學生成績管理系統
系統需求
一、 當前學生信息:通過結構體struct student 來保存學生的姓名,學號,性別,語文,數學,英語和計算機等等相關信息,並且通過cin函數來進行給當前學生輸入初始信息.
二、學生成績查詢: 輸入一個學號, 在文件中查找此學生, 若找到則輸出此學生的全部信息和成績; 若找不到則輸出查找失敗的信息. 同時也可以全部把各科的平均成績,最高和最低分輸出。
三、新生插入 :通過給該生的學號來和原班上的學生的學號比較大小,若大就在後,若小則靠前排,將此生的信息保存下來。
四、輸出全部學生信息和全部學生成績。
五、退出系統.
六、附加說明:系統將來完善的功能有:可以通過性別來模糊查詢,也可以通過姓名的姓來先進行模糊查詢,以便後面精確查找。
總體設計
一、 仔細閱讀系統要求,首先將此系統化分為如下模塊(即如下函數)
1、輸入初始的學生信息:其中包括學生的姓名、學號和性別以及學生的語文、數學、英語和計算機等相關信息;可用函數cin(stu *p1)來實現此操作。
2、查詢模塊:可用stu *lookdata(stu *p1) 來實現。找到就輸出此學生全部信息包括學生的語文、數學、英語和計算機等的成績。
3、插入模塊:可用insert( )函數來實現。其中通過學號的大小來比較的,並且以此來排序。
4、輸出學生的信息以及成績:通過學生的姓名來查看學生的語文、數學、英語和計算機等相關成績,同時也可以分別通過caverage() 、 maverage() 、eaverage() 和comaverage() 來輸出語文、數學、英語和計算機等成績的平均分數、最高和最低分數。
5、退出系統:可用一個函數exit()來實現,首先將信息保存到文件中,釋放動態創建的內存空間,再退出此程序。
二、系統主模塊結構圖:
詳細設計
一、 界面設計
此系統界面採用圖形和數字化菜單設計。
主界面設計如下:
學生成績管理系統
請選擇相應的數字執行相應的功能:
1:是否輸入其他數據
2:查看數據
3:插入數據
4:查找數據
5:更新數據
6:保留數據
7:顯示或列印數據
8:語文成績狀況
9:數學成績狀況
10:英語成績狀況
11:計算機成績狀況
12:?
13:退出系統
二、 數據結構設計:
程序設計中用到的結構體類型:
學生信息結構體類型:
typedef struct student{
char name[MAX];
int num[MAX];
char sex[MAX];
int chinese;
int mathematic;
int english;
int computer;
struct student *next;
}
程序代碼:
//原始密碼是123456
#include"stdio.h"
#include"stddef.h"
#include"stddef.h"
#include"string.h"
#define MAX 10
typedef struct student{ /*定義結構體*/
char name[MAX]; /*姓名*/
int num[MAX]; /* 學號*/
char sex[MAX]; /*性別*/
int chinese; /*語文*/
int mathematic; /* 數學*/
int english; /*英語*/
int computer; /*計算機*/
struct student *next; /*結構體指針*/
}stu;
stu *head; /*頭指針*/
void print() /*顯示或列印函數*/
{
system("cls");
printf("\t\t\tScore Manage System\n"); /*成績管理系統*/
printf("<1>Enter Record\t"); /*輸入數據*/
printf("<2>Display\t"); /*顯示*/
printf("<3>Insert\t"); /*插入數據*/
printf("<4>Quest\t"); /*訪問數據*/
printf("<5>Update\t"); /*以前數據*/
printf("<6>Save\t"); /*保留數據*/
printf("<7>Fresh\t"); /*更新數據*/
printf("<8>Chinese Average\t"); /*語文平均成績*/
printf("<9>Math Average\t"); /*數學平均成績*/
printf("<10>English Average\t"); /*英語平均成績*/
printf("<11>Computer Average\t"); /*計算機平均成績*/
printf("<12>Quit\t\n"); /*退出*/
}
void cin(stu *p1) /*輸入相關數據的函數*/
{ printf("Enter name:\n");
scanf("%s",&p1->name);
printf("Enter num:\n");
scanf("%d",&p1->num);
printf("Enter sex:\n");
scanf("%s",&p1->sex);
printf("Enter score:\n");
printf("Enter chinese:\n");
scanf("%d",&p1->chinese);
printf("Enter math:\n");
scanf("%d",&p1->mathematic);
printf("Enter English:\n");
scanf("%d",&p1->english);
printf("Enter Computer:\n");
scanf("%d",&p1->computer);
}
stu *cindata() /*其他數據是否繼續輸入的函數*/
{ stu *p1,*p2;
int i=1;
char ch;
p1=(stu *)malloc(sizeof(stu));
head=p1;
while(i)
{
cin(p1);
printf("Do you Want to Continue?yes or no"); /*是否繼續輸入數據*/
ch=getchar();
ch=getchar();
if(ch=='n'||ch=='N')
{ i=0;
p1->next=NULL;
}
else
{ p2=p1;
p1=(stu *)malloc(sizeof(stu));
p2->next=p1;
}
}
return(p1->next);
}
stu *lookdata(stu *p1) /*查看數據的函數*/
{
while(p1!=NULL)
{ printf("Num:%d\t",p1->num);
printf("Name:%s\t",p1->name);
printf("Sex:%s\t",p1->sex);
printf("\n");
printf("Chinese:%d\t",p1->chinese);
printf("Math:%d\t",p1->mathematic);
printf("English:%d\t",p1->english);
printf("Computer:%d\t",p1->computer);
printf("\n");
p1=p1->next;
}
return p1;
}
void insert() /*通過比較學號來插入數據的函數*/
{ stu *p1,*p3,*p2;
char ch;
p1=head;
p3=(stu *)malloc(sizeof(stu));
p3->next=NULL;
if(head==NULL){ head=p3; return;}
cin(p3);
while(p1!=NULL&&(p1->num<p3->num)) /*通過學號的比較來插入*/
{ p2=p1;p1=p1->next;}
if(p2==head) {p3->next=head; head=p3; return;}
p3->next=p1;
p2->next=p3;
}
find(stu *p2) /*通過姓名查找查看數據的函數*/
{ char name[20];
int b=0;
printf("Enter the name of the student you want to find:"); /*通過姓名查看*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("The data you want has be found\n");
printf(" Name:%s\t",p2->name);
printf("Num:%d\t",p2->num);
printf("sex%s\t",p2->sex);
printf("\n");
printf("Chinese:%d\t",p2->chinese);
printf("Math:%d\t",p2->mathematic);
printf("English:%d\t",p2->english);
printf("Computer:%d\t",p2->computer);
printf("\n");
b=1;
}
else if(b==0)
printf("sorry not find data!");
p2=p2->next;
}
if(b==1)
{
print();
printf("Find one\n");}
else
{print();
printf("Not find\n");
}
}
void caverage() /*求各學生語文平均分、最高和最低分成績的函數*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->chinese;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->chinese)
max=p1->chinese;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->chinese)
min=p1->chinese;
}
printf("Chinese Average:%f",aver);
printf("Chinese Max:%f",max);
printf("Chinese Min:%f",min);
}
void maverage() /*求各學生數學平均分、最高和最低分成績的函數*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->mathematic;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->mathematic)
max=p1->mathematic;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->mathematic)
min=p1->mathematic;
}
printf("Mathe Average:%f",aver);
printf("Mathe Max:%f",max);
printf("Mathe Min:%f",min);
}
void eaverage() /*求各學生英語平均分、最高和最低分成績的函數*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->english;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->english)
max=p1->english;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->english)
min=p1->english;
}
printf("English Average:%f",aver);
printf("English Max:%f",max);
printf("English Min:%f",min);
}
void comaverage() /*求各學生計算機平均分、最高和最低分成績的函數*/
{ stu *p1;
int i;
float max=0.0,min=200.0;
float sum=0.0,aver=0;
p1=head;
if(p1==NULL)
printf("not data!");
else
{for(i=0;p1!=NULL;i++,p1=p1->next)
sum+=p1->computer;
aver=sum/i;
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
{if(max<p1->computer)
max=p1->computer;
}
p1=head;
for(i=0;p1!=NULL;i++,p1=p1->next)
if(min>p1->computer)
min=p1->computer;
}
printf("Computer Average:%f",aver);
printf("Computer Max:%f",max);
printf("Computer Min:%f",min);
}
update(stu *p2) /*通過姓名查找來更新數據*/
{
char name[10]; /*p2為指向結構體struct student的指針*/
int b=0;
printf("Enter The Name"); /*輸入姓名*/
scanf("%s",name);
while(p2!=NULL)
{if(strcmp(name,p2->name)==0)
{
printf("Find you data\n");
scanf("Name:%s",p2->name);
scanf("Num:%s",p2->num);
scanf("Sex:%s",p2->sex);
scanf("Chinese:%d",p2->chinese);
scanf("Math:%d",p2->mathematic);
scanf("english:%d",p2->english);
scanf("Computer:%d",p2->computer);
printf("Success!");
b=1;}
else if(b==0)
printf("Sorry not Find data!");
p2=p2->next;}
if(b==0)
{print();
printf("Sorry not Find data!");
}
else
{
print();
printf("Finish!");
}
}
save(stu *p2) /*保留數據函數*/
{
FILE *fp;
char file[10];
printf("Enter file name"); /*輸入文件名*/
scanf("%s",file);
fp=fopen(file,"w");
while(p2!=NULL)
{
fprintf(fp,"%s",p2->name);
fprintf(fp,"%s",p2->num);
fprintf(fp,"%s",p2->sex);
fprintf(fp,"%d",p2->chinese);
fprintf(fp,"%d",p2->mathematic);
fprintf(fp,"%d",p2->english);
fprintf(fp,"%d",p2->computer);
p2=p2->next;
}
fclose(fp);
}
char password[7]="123456"; /*定義初始密碼*/
void main() /*主函數*/
{ int choice;
stu *p2;
char s[8];
int flag=0,i; /*標志項*/
int n=3;
do{ printf("Enter password:\n");
scanf("%s",s);
if(!strcmp(s,password)) /*進行密碼匹配驗證*/
{ printf("PASS\n\n\n");
flag=1;
break;
}
else{
printf("Error Enter again:\n");
n--;
}
}
while(n>0);
if(!flag)
{printf("you have Enter 3 times!"); /*輸入密碼超過了3次!!*/
exit(0); /*自動退出*/
}
/*密碼驗證成功後進入的界面*/
printf("~~~~~~~~~~\t\t\t~~~~~~~~~~~~\n"); /*操作界面*/
printf("\t\tWelcom to the Mis\n");
printf("Author:-----\tClass:------\tNum:------\n"); /*作者,班級和號碼*/
printf("Adress:HG\n"); /*地址*/
printf("%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
printf("\t\tEnter OP:\n");
printf("\n\n\n\n");
printf("==============\t\t==============\n");
printf("==============\t\t==============\n");
printf("\t\tEnter the MIS yes or no\n"); /*問進入系統與否*/
scanf("%d",&choice);
if(choice=='n'||choice=='N')
exit(1);
print();
while(1)
{
printf("Enter choice:");
scanf("%d",&i);
if(i<1||i>13)
{
printf("Enter num from 1 to 13:\n"); /*再從1-13中進行選擇*/
exit(1);
}
switch(i)
{ case 1:
p2=cindata(); /*其他數據是否繼續輸入的函數*/
break;
case 2:
p2=lookdata(head); /*查看數據的函數*/
break;
case 3:
insert(); /*通過比較學號來插入數據的函數*/
break;
case 4:
find(head); /*通過姓名查找查看數據的函數*/
break;
case 5:
update(head); /*通過姓名查找來更新數據*/
break;
case 6:
save(head); /*保留數據函數*/
break;
case 7:
print(); /*顯示或列印函數*/
break;
case 8:
caverage(); /*求各學生語文平均分、最高和最低分成績的函數*/
break;
case 9:
maverage(); /*求各學生數學平均分、最高和最低分成績的函數*/
break;
case 10:
eaverage(); /*求各學生英語平均分、最高和最低分成績的函數*/
break;
case 11:
comaverage(); /*求各學生計算機平均分、最高和最低分成績的函數*/
break;
case 12:
; /*空操作*/
case 13:
exit(1); /*退出*/
break;
}
scanf("%d",&i);
}
}
程序中出現的問題及解決方法
問題一、學生初始信息模塊:
其中包括學生的姓名、學號和性別以及學生的語文、數學、英語和計算機等相關信息;可用函數cin(stu *p1)來實現此操作。當正確輸入存在的學生學號,系統進行判斷時,提示不存在此學生。
解決辦法及步驟:
1、一個個輸出所有的學生的學號,檢查文件中是否有此學生,發現有。
2、既然有此學生,那麼檢查循環判斷是否有此學生的語句發現沒有錯
3、輸出用於循環檢查語句中的學生信息,發現亂碼
4、仔細分析亂碼的原因,最後發現是變數的類型錯誤,錯將學生類型的結構體指針變數定義為了其他類型的指針變數。
問題二、查詢模塊:
可用stu *lookdata(stu *p1) 來實現。找到就輸出此學生全部信息包括學生的語文、數學、英語和計算機等的成績。當正確輸入查找信息時,系統卻不能夠得到所要查找的學生信息以及學生的語文、數學、英語和計算機的成績。
解決辦法及步驟:
1、檢查所編寫的程序代碼是否完全正確,若不是,則改之,然後再繼續正確輸入查找信息看能否得到所要查找的學生信息以及學生的語文、數學、英語和計算機的成績。
2、檢查當我們在輸入查找信息時,看是否我們輸入的信息有誤,若是這樣的話,我們應當仔細輸入查找信息。
問題三、插入模塊:
可用insert( )函數來實現。其中通過學號的大小來比較的,並且以此來排序。當我們輸入插入信息時,系統卻提示插入不進數據。
解決辦法及步驟:
1、檢查所編寫的程序代碼是否完全正確,若不是,則改之,然後再繼續正確輸入插入信息看能否插入進去得到所要插入的學生信息以及學生的語文、數學、英語和計算機的成績。
2、檢查當我們在輸入插入信息時,看是否我們輸入的插入信息有
⑵ C語言程序設計實驗報告完整版
以前做過,時間太長了忘記了,你給的分太少了。人家像這樣的都是100多200分的
⑶ 如何用C語言編程 掃雷!~
C語言模擬掃雷的代碼如下:
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int map[9][9] = {0};
int result[9][9] = {0};
int mine[10][2];
bool Check(int i)
{
int j;
for(j=0;j<i;j++)
if(mine[j][0] == mine[i][0] && mine[j][1] == mine[i][0]) return true;
return false;
}
int MineNum(int x,int y) //這個函數計算坐標(x,y)周圍地雷的數目
{
int sum = 0;
int i,j;
if(x-1>=0 && x+1<=8 && y-1>=0 && y+1<=8)
{//中間位置
for(i=x-1;i<=x+1;i++)
for(j=y-1;j<=y+1;j++) sum += map[i][j];
return (sum-map[x][y])/9;
}
if(x==0 && y==0) return (map[0][1]+map[1][0]+map[1][1])/9; //左上角
if(x==0 && y==8) return (map[0][7]+map[1][7]+map[1][8])/9; //右上角
if(x==8 && y==0) return (map[7][0]+map[7][1]+map[8][1])/9; //左下角
if(x==8 && y==8) return (map[7][7]+map[7][8]+map[8][7])/9; //右上角
if(x==0)
{//上邊界
for(i=x;i<=x+1;i++)
for(j=y-1;j<=y+1;j++) sum += map[i][j];
return (sum-map[x][y])/9;
}
if(x==8)
{//下邊界
for(i=x-1;i<=x;i++)
for(j=y-1;j<=y+1;j++) sum += map[i][j];
return (sum-map[x][y])/9;
}
if(y==0)
{//左邊界
for(i=x-1;i<=x+1;i++)
for(j=y;j<=y+1;j++) sum += map[i][j];
return (sum-map[x][y])/9;
}
if(y==8)
{//右邊界
for(i=x-1;i<=x+1;i++)
for(j=y-1;j<=y;j++) sum += map[i][j];
return (sum-map[x][y])/9;
}
}
void main()
{
int i,j,x,y;
srand((int)time(0));
for(i=0;i<10;i++)
{
do{
mine[i][0] = rand()%9;
mine[i][1] = rand()%9;
}while(Check(i));
printf("%d\t%d\n",mine[i][0],mine[i][1]);
}
//標識地雷
for(i=0;i<10;i++) map[mine[i][0]][mine[i][1]] = 9;
//計算地雷的數目
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(map[i][j] == 9) result[i][j] = 9;
else result[i][j] = MineNum(i,j);
printf("%d ",result[i][j]);
}
printf("\n");
}
}
⑷ 掃雷游戲 c語言
10塊錢都沒人搞 真心話
⑸ 急求C語言編譯的小游戲(如掃雷),附帶源代碼和注釋。
小游戲2048:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<windows.h>
int jsk( ); //計算空格數
void rsgm( ); //重置游戲
void inkey( ); //按鍵輸入
void left( ); //向左移動
void right( ); //向右移動
void up( ); //向上移動
void down( ); //向下移動
void show( ); //輸出界面
void adnum( ); //添加隨機數
void yes( ); //游戲是否結束(1是0否)
void gtxy(int x, int y); //控制游標位置的函數
int a[4][4]; //存儲16個格子中的數字
int score = 0; //每局得分
int best = 0; //最高得分
int ifnum; //是否需要添加數字(1是0否)
int over; //游戲結束標志(1是0否)
int i,j,k;
int main( )
{ rsgm( ); //重置游戲
inkey( ); //按鍵輸入
return 0;
}
void setColor(unsigned short ForeColor = 7, unsigned short BackGroundColor = 0)
{ HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, ForeColor + BackGroundColor * 0x10);
} //用於控制字元顏色的函數
void rsgm( ) //重置游戲
{ score = 0; ifnum = 1; over = 0; srand((unsigned)time(0)); //啟動隨機數發生器
int n = rand( ) % 16; //隨機函數產生0-15的數字
for (i = 0; i < 4; i++)
{for (j = 0; j < 4; j++)
{ if (n == 0) { int k = rand( ) % 3; if (k == 0 || k == 1) { a[i][j] = 2; }
else { a[i][j] = 4; } n--; }
else { a[i][j] = 0; n--; }
}
}
adnum( );
system("cls");
CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下兩行是隱藏游標的設置
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
setColor(14, 0); //設置字體淡黃色,背景為黑色
printf(" 2048小游戲"); setColor(7, 0); //恢復白字黑底
printf(" ┌──────┬──────┬──────┬──────┐");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" ├──────┼──────┼──────┼──────┤");
printf(" │ │ │ │ │");
printf(" └──────┴──────┴──────┴──────┘");
show( );
}
void show( ) //輸出界面
{ for(i=0;i<4;i++)
for(j=0;j<4;j++)
{ gtxy(7*j+9,2*i+4); //gtxy(7*j+9, 2*i+4)是游標到指定位置輸出數字
if(a[i][j]==0){printf(" "); setColor(7, 0); printf("│");}
else if(a[i][j]<10){ if (a[i][j] == 2) {setColor(14, 0); }
else if (a[i][j] == 4) {setColor(13, 0); }
else if (a[i][j] == 8) {setColor(12, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
else if (a[i][j] < 100){if (a[i][j] == 16) {setColor(12, 0); }
else if (a[i][j] == 32) {setColor(10, 0); }
else if (a[i][j] == 64) {setColor(2, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
else if (a[i][j] < 1000) {if (a[i][j] == 128) {setColor(9, 0); }
else if (a[i][j] == 256) {setColor(1, 0); }
else if (a[i][j] == 512) {setColor(13, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
else if (a[i][j] < 10000) {if (a[i][j] == 1024) {setColor(5, 0); }
else {setColor(15, 0); }
printf(" %d ", a[i][j]); setColor(7, 0); printf("│");
}
}
if (jsk( ) == 0)
{ yes( ); if (over) { gtxy(9,12); setColor(10, 0);
printf(" 游戲結束!是否繼續? [ Y/N ]:"); }
}
}
void inkey( ) //按鍵輸入
{ int key;
while (1)
{ key = getch( );
if (over) { if (key == 89|| key == 121) {rsgm( ); continue; }
else if (key == 78|| key == 110) { return; }
else continue; }
ifnum = 0;
if(key==224)key=getch( );
switch (key)
{ case 75: left( ); break;
case 77: right( ); break;
case 72: up( ); break;
case 80: down( );break;
}
if (score > best) { best = score; }
if (ifnum) { adnum( ); show( ); }
}
}
int jsk( ) //計算空格數
{ int n = 0;
for (i = 0; i < 4; i++)
{ for (j = 0; j < 4; j++) { if ( a[i][j] == 0) {n++;} } }
return n;
}
void left( ) //向左移動
{ for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{ if (a[i][j] > 0)
{ if ( a[i][k] == a[i][j])
{ a[i][k] *= 2; k++;
score = score + 2 * a[i][j];
a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) { a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k + 1] = a[i][j]; if ((k + 1) != j) { a[i][j] = 0; ifnum = 1; }
k++; }
}
}
}
}
void right( ) //向右移動
{for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[i][j] > 0)
{ if (a[i][k] == a[i][j])
{a[i][k] *= 2; k--; score = score + 2 * a[i][j]; a[i][j] = 0; ifnum = 1; }
else if ( a[i][k] == 0) {a[i][k] = a[i][j]; a[i][j] = 0; ifnum = 1; }
else { a[i][k - 1] = a[i][j]; if ((k - 1) != j) { a[i][j] = 0; ifnum = 1; } k--; }
}
}
}
}
void up( ) //向上移動
{for (i = 0; i < 4; i++)
{for (j = 1, k = 0; j < 4; j++)
{if (a[j][i] > 0)
{if ( a[k][i] == a[j][i]) { a[k][i] *= 2; k++;score = score + 2 * a[j][i];
a[j][i] = 0; ifnum = 1; }
else if ( a[k][i] == 0) { a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else { a[k + 1][i] = a[j][i]; if ((k + 1) != j) { a[j][i] = 0; ifnum = 1; }
k++; }
}
}
}
}
void down( ) //向下移動
{ for (i = 0; i < 4; i++)
{for (j = 2, k = 3; j >= 0; j--)
{if (a[j][i] > 0)
{if (a[k][i] == a[j][i])
{a[k][i] *= 2; k--;score = score + 2 * a[j][i]; a[j][i] = 0; ifnum = 1; }
else if (a[k][i] == 0) {a[k][i] = a[j][i]; a[j][i] = 0; ifnum = 1; }
else {a[k - 1][i] = a[j][i];
if ((k - 1) != j) {a[j][i] = 0; ifnum = 1; } k--; }
}
}
}
}
void adnum( ) //添加隨機數
{ srand(time(0)); int n = rand( ) % jsk( );
for (int i = 0; i < 4; i++)
{for (int j = 0; j < 4; j++)
{ if (a[i][j] == 0) {if (n != 0) { n--; }
else {int k = rand() % 3;
if (k == 0 || k == 1) {a[i][j] = 2; return; }
else {a[i][j] = 4; return; } }
}
}
}
}
void yes( ) //游戲是否結束
{ for (int i = 0; i < 4; i++)
{for (int j = 0; j < 3; j++)
{if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0; return; }}
}
over = 1;
}
void gtxy(int x, int y) //控制游標位置的函數
{ COORD coord;
coord.X = x;
coord.Y = y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
⑹ C語言程序設計實驗報告怎麼寫啊
只是個例子,不可照抄。
實驗內容與要求:
[實驗內容]
1、 通過本試驗初步培養計算機邏輯解題能力。熟練掌握賦值語句和if語句的應用;掌握switch多路分支語句和if嵌套語句的使用
2、 將前期所學習到的基本數據類型、運算符和表達式等程序設計基礎知識運用於具體的程序設計。
3、 進一步熟練掌握輸入輸出函數scanf, printf和getchar的使用,熟悉math.h中常用數學函數的使用方法
4、 掌握循環語句的應用方法。
5、 了解隨機數生成函數。
[實驗要求]
在規定期限獨立完成實驗內容
1、 提交實驗報告(電子版)
2、 提交相應源程序文件(文件名 EX6_x姓名.c, 如EX6_1彭健.c)
3、 要求從簡單到復雜,後面的要求均在前面的基礎上進行修改,前六題,每題均需要保留各自的程序,六題以後,每題均在前一題基礎上修改,保留最後一個程序即可(如做到第九題,則保留EX6_9姓名.c,做到第11題,則保留ex6_11姓名.c)
二、實驗原理和設計方案:
1、函數頭的選則,while循環語句,switch(case)語句,條件表達式,if else條件語句,自增運算符,設置復雜變數,輸出隨機操作數。
2、 變數要有分數變數和等級變數,要有選擇演算法題數的變數和計算正確與否的變數,要有隨機輸出的兩個操作數變數和自己按運算符號輸入結果的變數,最後還有判斷是否要進行的變數字元。中間結果有選擇運算符的switch()和分數等級的switch()和錯題對題的自增和選擇運算符計算的自增。
3、 問題的分析方法:先考慮設置整形變數和字元變數,考慮到要不斷循環計算,選擇用while語句來循環。在循環體中,將前面的輸出提示運算符,和自行選擇運算符、答案及輸出隨機操作數完成。再用switch語句對選擇的運算符進行判斷,並用變數進行自增運算,計算出錯題於對題個數和選擇了那種運算符號。在循環體最後用if else語句來判斷是否繼續執行還是跳出循環。最後根據自增計算的結果和公式進行分數計算,並用switch語句來是想等級的制定。
三、源代碼
#include
#include
#include
void main()
{
..........
}
四、試驗結果和啟發
因為輸入y要繼續循環,所以選擇用while語句。在while語句中要結合前面的按提示計算,並嵌套switch語句並用條件表達式,來計算結果正確與否,計算的題型是什麼。最後再用switch語句來完成分數等級的判斷。
五、實驗體會:
描述自己在編程或程序編譯運行中遇到的難點和問題及解決的辦法。
⑺ C語言編掃雷,沒有雷時展開一片區域不會寫
你好!!
如果你滑鼠左鍵點了一個點,記錄下這個點的坐標,通過找一個點,向四周八個方向擴散;
然後對8個點分別做判斷,如果這個點沒雷,那麼對這個點的四周八個點做再做擴散(遞歸的過程)
如果這個點有雷,遞歸擴散結束
⑻ C語言 掃雷
#include<stdio.h>
intmain(void)
{
charplat[100][100];//雷的地圖
charplat_new[100][100];//數字映射圖
intn,m;//存儲行、列數
intin,im;
intmark=0;//記錄該點附近8個坐標雷的總數
intj=1;
scanf("%d%d",&n,&m);
getchar();//消除回車符的影響
do{
if(n==0&&m==0)
break;
for(in=0;in<n;in++)
{
for(im=0;im<m;im++)
{
scanf("%c",&plat[in][im]);
}
getchar();
}
for(in=0;in<n;in++)
for(im=0;im<m;im++)
{
if(plat[in][im]=='*')/*該點有雷,無需檢測*/
{
plat_new[in][im]=plat[in][im];
continue;
}
if(in-1>=0)//檢測上面3個點的雷數
{
if(plat[in-1][im]=='*')
mark++;
if(im-1>=0&&plat[in-1][im-1]=='*')
mark++;
if(im+1<m&&plat[in-1][im+1]=='*')
mark++;
}
if(im-1>=0&&plat[in][im-1]=='*')//檢測左右兩個點的雷數
mark++;
if(im+1<m&&plat[in][im+1]=='*')
mark++;
if(in+1<n)//檢測下面3個點的雷數
{
if(plat[in+1][im]=='*')
mark++;
if(im-1>=0&&plat[in+1][im-1]=='*')
mark++;
if(im+1<m&&plat[in+1][im+1]=='*')
mark++;
}
switch(mark)
{
case0:plat_new[in][im]='0';break;
case1:plat_new[in][im]='1';break;
case2:plat_new[in][im]='2';break;
case3:plat_new[in][im]='3';break;
case4:plat_new[in][im]='4';break;
case5:plat_new[in][im]='5';break;
case6:plat_new[in][im]='6';break;
case7:plat_new[in][im]='7';break;
case8:plat_new[in][im]='8';break;
}
mark=0;//重置雷數
}
if(j!=1)
putchar(' ');
printf("Field#%d: ",j);
for(in=0;in<n;in++)//列印數字地圖
{
for(im=0;im<m;im++)
{
printf("%c",plat_new[in][im]);
}
if(in!=n-1)
putchar(' ');
}
scanf("%d%d",&n,&m);
getchar();
j++;
}while(1);
return0;
}
