當前位置:首頁 » 編程語言 » c語言掃雷程序感想
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言掃雷程序感想

發布時間: 2023-03-03 22:39:21

① 如何用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語言

直接一個BMP背景,定好坐標再加上你上面沒有邊框的,再處理一下邊界問題就解決了。你把功能解決了,界面的東西交給美工去做吧。

③ C語言掃雷演算法,也可以別的語言,解釋清楚演算法就好

在這上面不好說明, 我有C的代碼, 你看一下(DEVC++)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>

#definen15
intrestart=0;
intlast_sel_x,last_sel_y;
charin[20];

structPOINT
{
intx;
inty;
}pt;

//設置CMD窗口游標位置
voidsetxy(intx,inty)
{
COORDcoord={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord);
}
//獲取當前CMD當前游標所在位置
voidgetxy()
{
HANDLEhConsole=GetStdHandle(STD_OUTPUT_HANDLE);
COORDcoordScreen={0,0};//游標位置
CONSOLE_SCREEN_BUFFER_INFOcsbi;
if(GetConsoleScreenBufferInfo(hConsole,&csbi))
{
//printf("游標坐標:(%d,%d) ",csbi.dwCursorPosition.X,csbi.dwCursorPosition.Y);
pt.x=csbi.dwCursorPosition.X;
pt.y=csbi.dwCursorPosition.Y;
}
}

structA
{
intvalue;//-1為雷
intstate;//顯示狀態:0為未打開,1為已打開
intlock;//鎖定狀態
intbomb;//雷已標記:0為未標記,1為已標記
};
structAs[10][10];

intcalc()
{
inti,j,count=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(s[i][j].state==0)count++;
}
}
returncount;
}

intprt()
{
system("cls");
intcount=calc();
inti,j;

printf("%3c",'');
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_GREEN);
for(i=0;i<10;i++)
{
printf("%3d",i);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
for(i=0;i<10;i++)
{
printf(" ");
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_GREEN);
printf("%3d",i);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
for(j=0;j<10;j++)
{
if(s[i][j].bomb==1)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED);
printf("%3c",'*');
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
elseif(s[i][j].state==1)
{
if(s[i][j].value==0)printf("%3c",'');
elseprintf("%3d",s[i][j].value);
}
else
{
printf("%3c",'-');
}
/* if(s[i][j].value==-1) printf("%3c",'*');
elseprintf("%3d",s[i][j].value);*/
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_GREEN);
printf("%3d",i);
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
printf(" ");
printf("%3c",'');
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_GREEN);
for(i=0;i<10;i++)
{
printf("%3d",i);
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf(" ");

getxy();
setxy(45,0);
printf("%d",count);
setxy(40,5);
printf("說明");
setxy(40,7);
printf("1:輸入*xy(如:*55),則把第5行第5列");
setxy(40,8);
printf("標記為地雷");
setxy(40,10);
printf("2:輸入xy(如55),則把第5行第5列打開");
if(count==n)
{
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(s[i][j].value==-1&&s[i][j].bomb==0)s[i][j].bomb=1;
if(s[i][j].value!=-1&&s[i][j].state==0)s[i][j].state=1;
}
}
setxy(50,2);
printf("success!");
setxy(pt.x,pt.y);
fflush(stdin);
getchar();
return1;
}
setxy(pt.x,pt.y);
return0;
}
voidspace_process(intx,inty)
{
inti,j;
if(x-1>=0&&y-1>=0)
{
if(s[x-1][y-1].value==0&&s[x-1][y-1].lock==0){s[x-1][y-1].state=1;s[x-1][y-1].lock=1;space_process(x-1,y-1);}
elseif(s[x-1][y-1].value!=-1)s[x-1][y-1].state=1;
}
if(x-1>=0)
{
if(s[x-1][y].value==0&&s[x-1][y].lock==0){s[x-1][y].state=1;s[x-1][y].lock=1;space_process(x-1,y);}
elseif(s[x-1][y].value!=-1)s[x-1][y].state=1;
}
if(x-1>=0&&y+1<10)
{
if(s[x-1][y+1].value==0&&s[x-1][y+1].lock==0){s[x-1][y+1].state=1;s[x-1][y+1].lock=1;space_process(x-1,y+1);}
elseif(s[x-1][y+1].value!=-1)s[x-1][y+1].state=1;
}
if(y-1>=0)
{
if(s[x][y-1].value==0&&s[x][y-1].lock==0){s[x][y-1].state=1;s[x][y-1].lock=1;space_process(x,y-1);}
elseif(s[x][y-1].value!=-1)s[x][y-1].state=1;
}
if(y+1<10)
{
if(s[x][y+1].value==0&&s[x][y+1].lock==0){s[x][y+1].state=1;s[x][y+1].lock=1;space_process(x,y+1);}
elseif(s[x][y+1].value!=-1)s[x][y+1].state=1;
}
if(x+1<10&&y-1>=0)
{
if(s[x+1][y-1].value==0&&s[x+1][y-1].lock==0){s[x+1][y-1].state=1;s[x+1][y-1].lock=1;space_process(x+1,y-1);}
elseif(s[x+1][y-1].value!=-1)s[x+1][y-1].state=1;
}
if(x+1<10)
{
if(s[x+1][y].value==0&&s[x+1][y].lock==0){s[x+1][y].state=1;s[x+1][y].lock=1;space_process(x+1,y);}
elseif(s[x+1][y].value!=-1)s[x+1][y].state=1;
}
if(x+1<10&&y+1<10)
{
if(s[x+1][y+1].value==0&&s[x+1][y+1].lock==0){s[x+1][y+1].state=1;s[x+1][y+1].lock=1;space_process(x+1,y+1);}
elseif(s[x+1][y+1].value!=-1)s[x+1][y+1].state=1;
}
}

intprocess_char(char*t,int*i,int*j)
{
intlen=strlen(t);
intx,y=0;
for(x=0;x<len;x++)
{
if(t[x]=='')
{
continue;
}
else
{
t[y++]=t[x];
}
}
t[y]='';
if(t[0]=='*')
{
*i=t[1]-'0';
*j=t[2]-'0';
if(s[*i][*j].bomb==1)
{
s[*i][*j].bomb=0;
s[*i][*j].state=0;
}
elseif(s[*i][*j].bomb==0&&s[*i][*j].state==0)
{
s[*i][*j].bomb=1;
}
return1;
}
elseif(t[0]>='0'&&t[0]<='9')
{
*i=t[0]-'0';
*j=t[1]-'0';
return0;
}
return1;
}

intplus(intx,inty)//返回0為出錯,返回1為正確,返回-1為取消
{
intcount=s[x][y].value;
intbomb=0;
if(count==0||count==-1)return-1;
if(x-1>=0&&y-1>=0)
{
if(s[x-1][y-1].bomb==1)bomb++;
}
if(x-1>=0)
{
if(s[x-1][y].bomb==1)bomb++;
}
if(x-1>=0&&y+1<10)
{
if(s[x-1][y+1].bomb==1)bomb++;
}
if(y-1>=0)
{
if(s[x][y-1].bomb==1)bomb++;
}
if(y+1<10)
{
if(s[x][y+1].bomb==1)bomb++;
}
if(x+1<10&&y-1>=0)
{
if(s[x+1][y-1].bomb==1)bomb++;
}
if(x+1<10)
{
if(s[x+1][y].bomb==1)bomb++;
}
if(x+1<10&&y+1<10)
{
if(s[x+1][y+1].bomb==1)bomb++;
}
if(bomb==s[x][y].value)
{
if(x-1>=0&&y-1>=0)
{
if(s[x-1][y-1].value==-1&&s[x-1][y-1].bomb==0){return0;}
}
if(x-1>=0)
{
if(s[x-1][y].value==-1&&s[x-1][y].bomb==0)return0;
}
if(x-1>=0&&y+1<10)
{
if(s[x-1][y+1].value==-1&&s[x-1][y+1].bomb==0)return0;
}
if(y-1>=0)
{
if(s[x][y-1].value==-1&&s[x][y-1].bomb==0)return0;
}
if(y+1<10)
{
if(s[x][y+1].value==-1&&s[x][y+1].bomb==0)return0;
}
if(x+1<10&&y-1>=0)
{
if(s[x+1][y-1].value==-1&&s[x+1][y-1].bomb==0)return0;
}
if(x+1<10)
{
if(s[x+1][y].value==-1&&s[x+1][y].bomb==0)return0;
}
if(x+1<10&&y+1<10)
{
if(s[x+1][y+1].value==-1&&s[x+1][y+1].bomb==0)return0;
}
space_process(x,y);
inti,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
s[i][j].lock=0;
}
}
return1;
}
else
{
return-1;
}
}
voidprt_selected(intx,inty,intflag)
{
if(flag==0)
{
if(x>=0)x=last_sel_x;
if(y>=0)y=last_sel_y;
}
intplus=2;
getxy();
if(x>=0)
{
last_sel_x=x;
setxy(3,x+1);
intj;
if(flag==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_BLUE|FOREGROUND_INTENSITY);
elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
for(j=0;j<10;j++)
{
if(s[x][j].bomb==1)
{
if(flag==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|BACKGROUND_BLUE);
elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf("%3c",'*');
}
elseif(s[x][j].state==1)
{
if(s[x][j].value==0)printf("%3c",'');
elseprintf("%3d",s[x][j].value);
}
else
{
printf("%3c",'-');
}
}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
}
if(y>=0)
{
inti;
last_sel_y=y;
for(i=0;i<10;i++)
{
if(last_sel_x==i) continue;
if(flag==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),BACKGROUND_BLUE|FOREGROUND_INTENSITY);
elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
setxy(3*y+3,i+1);
if(s[i][y].bomb==1)
{
if(flag==1) SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|BACKGROUND_BLUE);
elseSetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
printf("%3c",'*');
}
elseif(s[i][y].state==1)
{
if(s[i][y].value==0)printf("%3c",'');
elseprintf("%3d",s[i][y].value);
}
else
{
printf("%3c",'-');
}
}

}
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|
FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
setxy(pt.x,pt.y);
}

voidinput()//實時獲取鍵盤輸入
{
intc;
intx=-1,y=-1;
inti=0;
intfirst_num=0;
while(1)
{
fflush(stdin);
c=getch();
printf("%c",c);
if(c==10||c==13) break;
if(c==8&&i>0)
{
in[i-1]='';
if(in[0]=='*')
{
if(in[1]<'0'||in[1]>'9')
{
x=-1;
prt_selected(last_sel_x,-1,0);
}
if(in[2]<'0'||in[2]>'9')
{
y=-1;
prt_selected(-1,last_sel_y,0);
}
}
else
{
if(in[0]<'0'||in[0]>'9')
{
x=-1;
prt_selected(last_sel_x,-1,0);
}
if(in[1]<'0'||in[1]>'9')
{
y=-1;
prt_selected(-1,last_sel_y,0);
}
}
i--;
getxy();
setxy(pt.x,pt.y);
printf("");
setxy(pt.x,pt.y);
}
elseif(c=='*'||(c>='0'&&c<='9'))
{
in[i++]=c;
if(in[0]=='*')
{
if(in[1]!=''&&in[1]>='0'&&in[1]<='9')
{
x=in[1]-'0';
}
else
{
x=-1;
}
if(in[2]!=''&&in[2]>='0'&&in[2]<='9')
{
y=in[2]-'0';
}
else
{
y=-1;
}

}
elseif(in[0]>='0'&&in[0]<='9')
{
x=in[0]-'0';
if(in[1]>='0'&&in[1]<='9')
{
y=in[1]-'0';
}
else
{
y=-1;
}
}
elsex=-1;
if(x>-1)prt_selected(x,-1,1);
if(y>-1)prt_selected(-1,y,1);
}
}
}

intmain()
{
inti=0,j,x,y;

while(1)
{
restart=0;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
s[i][j].value=0;
s[i][j].state=0;
s[i][j].lock=0;
s[i][j].bomb=0;
}
}
srand((unsigned)time(0));
i=0;
while(i<n)
{
x=rand()%10;
y=rand()%10;
if(s[x][y].value!=-1)
{
s[x][y].value=-1;
i++;
}
}
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
if(s[i][j].value==-1) continue;
// n=0;
if(i-1>=0)
{
if(s[i-1][j].value==-1) s[i][j].value++;
if(j-1>=0)
{
if(s[i-1][j-1].value==-1) s[i][j].value++;
}
if(j+1<10)
{
if(s[i-1][j+1].value==-1) s[i][j].value++;
}
}
if(i+1<10)
{
if(s[i+1][j].value==-1) s[i][j].value++;
if(j-1>=0)
{
if(s[i+1][j-1].value==-1) s[i][j].value++;
}
if(j+1<10)
{
if(s[i+1][j+1].value==-1) s[i][j].value++;
}
}
if(j-1>=0)
{
if(s[i][j-1].value==-1) s[i][j].value++;
}
if(j+1<10)
{
if(s[i][j+1].value==-1) s[i][j].value++;
}
}
}
if(prt()==1)
{
restart=1;
continue;
}

while(1)
{
memset(in,'',20);
fflush(stdin);
// scanf("%[^ ]",in);
input();
if(process_char(in,&i,&j)==1)
{
if(prt()==1)
{
restart=1;
break;
}
continue;
}
for(x=0;x<10;x++)
{
for(y=0;y<10;y++)
{
s[x][y].lock=0;
}
}
if(s[i][j].value==-1)
{
printf(" Bomb");
fflush(stdin);
getchar();
restart=1;
}
elseif(s[i][j].value==0)
{
s[i][j].state=1;
space_process(i,j);
}
elseif(s[i][j].state==1)
{
intre=plus(i,j);
{
switch(re)
{
case-1:
break;
case0:
printf(" Bomb");
fflush(stdin);
getchar();
restart=1;
break;
case1:break;
}
}
}
else
{
s[i][j].state=1;
}
if(prt()==1||restart==1)
{
restart=0;
break;
}
}
}
return0;
}

④ c語言程序設計心得

C語言程序設計課程是高等院校計算機專業基礎課程之一,其教學效果直接影響學生在計算機方面的應用。C語言是一門面向過程的、抽象化的通用程序設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低級存儲器。那麼要如何寫關於c語言程序設計心得呢?本文是c語言程序設計的心得,僅供參考。


c語言程序設計心得一

在這為期半個月的時間內,通過我們小組各成員之間的相互討論和合作,我們完成了學生信息管理系統的程序設計,更值得高興的是我們的程序得到了大家的喜愛,在每次的簡報中都得到了較好的成績。

雖然在上個學期中,我們已經學習了《C 語言程序設計》這門課,但是我所學的知識最多也就是在做作業的時候才會用到,平時沒有什麼練習的機會,這次的課程設計是我第一次通過自己構思,和同學討論並且不斷查閱資料來設計一項程序。這次設計,不僅鞏固了我以前所學的知識,還讓我對c語言有了更深一步的了解,掌握了更多的技巧和技能。

C語言是計算機程序設計的重要理論基礎,在我們以後的學習和工作中都有著十分重要的地位。要學好這種語言,僅僅學習課本上的知識是不夠的,還要經常自己動手,有較強的實踐能力。只有多動手,經常編寫程序,才能發現我們學習上的漏洞和自己的不足,並在實踐中解決這些問題,不斷提高自己轉化知識的能力。

在我們小組有解決不了的問題時,我們會主動查閱相關的資料,或向其他同學詢問,這不僅豐富了我們的知識,還增進了我們同學之間的友誼。為了增大信息的安全性,需要用文件來存儲信息,由於我們在上課時不注重對文件的運用,所以在這方面有較大的困難。我先將書本認認真真地看了一遍,又做了一下課後習題來驗證和增進自己的理解,終於,經過我們的不懈努力,我們小組的程序有了突破,成功地實現了用文件來保存並查看學生的信息。

這次設計中,我的收獲還有就是學會了用流程圖來表達自己的想法,並根據流程圖來逐步實現程序的功能。開始的時候,我畫流程圖很是困難,需要一個多小時才能清楚的根據自己的想法畫出圖來,後來畫多了,就更加了解它的功能,十分得心應手,能夠比較快而准確的畫出來。

在這次課程設計中,我們首先對系統的整體功能進行了構思,然後用結構化分析 方法 進行分析,將整個系統清楚的劃分為幾個模塊,再根據每個模塊的功能編寫代碼。而且盡可能的將模塊細分,最後在進行函數的調用。我們在函數的編寫過程中,我們不僅用到了for循環、while循環和switch語句,還用到了函數之間的調用(包括遞歸調用)。由於我們是分工編寫代碼,最後需要將每個人的代碼放到一起進行調試。因為我們每個人寫的函數的思想不都一樣,所以在調試的過程中也遇到了困難,但經過我們耐心的修改,終於功夫不負有心人,我們成功了!

在參考書上,我們不僅參考了曾經學過的高敬陽主編的《c語言程序設計》,還找到了由譚浩強主編的第三版《c語言》進行參考。

當然,我們的程序還有一些不完善的地方,比如說,當輸入的數據不符合我們定義的數據的格式的時候,程序會出現一些錯誤,有時會出現主菜單的死循環;在一次程序運行中,只能行使一種許可權,要想再行使另一種許可權,就只能退出程序,然後再運行程序。

三周的小學期即將結束,時間雖短,但是我收獲了很多。最後,謝謝老師和同學們的指導,更要感謝我們小組成員之間的合作與交流。

c語言程序設計心得二

通過本次教師發展在線的C語程培訓中,我受益匪淺,幾位教授的精彩演講,讓我找到了自己的不足和日後教學中的改革方向和內容。同時,也讓我感覺到了,有今天各位教授的良好教學效果,這其中包含了他們的艱辛、背後的大量付出和無私奉獻。

我是一直從事C類語言的教學工作,對C語言的教學已有5年教齡,在這幾年的教學過程中,我們也一直在尋找好的 教學方法 和新的教學理念。通過本次學習,我 總結 要教好《C語言程序設計》這門課,最基本要把握好以下幾個方面:

(一)要重視實踐環節,上機調試成績非常重要。

學習一門語言,就是要按照它的語法來編程。要編程,當然就要上機操作來驗證你程序的正確性。所以上機非常重要,通過執行你所寫的程序,完成你所寫程序的目標,最終達到你的目的。而且通過執行程序,你會發現程序中的錯誤,從而使你了解你所學知識中的不足,同時,要學會根據編譯時提示的錯誤來改正程序中發生的錯誤,以便下次不會再犯同樣的錯誤。

(二)基本語法學習雖然枯草乏味,但是它相當於高樓大廈的一磚一瓦,一定要下硬功夫讓學生掌握熟練。

C語言的語法部分。這部分內容是學好C語言的基礎,只有學好了這些語法,才會寫程序,看程序。所以對一個初學者來說,這部分內容是非常重要的,所以要扎實地熟悉每一個語法,並能根據這些語法來編程。

(三)學習要抓住重點,難點部分要多講、多學、多練。

通過這次學習使得我對C語言的重點,難點,以及易出錯的地方把握的更精準了。當然,這只是針對我個人而言。在C語言學習過程,重點就是數組,指針,以及結構體了。難點也是它們了,不過數組和結構體還是挺簡單,所以在此主要就指針方面談談自己的看法。

下面談談通過這次學習,結合我們學校的教學情況,打算對該課程的教學進行如下幾個方面的改革:

(一)理論教學內容的組織

C語言的重點知識包括:結構化程序設計方法、流程圖的組織、三種程序設計結構、三種基本數據類型和三種自定義數據類型;難點包括:結構程序設計方法、演算法的分析、流程圖的組織與設計、函數、指針等。

根據知識內容和每年的新學時安排,我們將理論教學內容分為授課內容和自學內容兩 大模塊。

(1)授課內容

C語言的授課內容分為兩階段:①基礎准備階段 這部分內容確保學生「實用、夠用」,主要包括三種基本數據類型(只要求掌握常用的int,float,char);三種常用運算符及其表達式(賦值、算術、邏輯(包括關系));三種程序設計結構(順序、選擇、循環)。②實訓項目驅動階段 這部分內容主要是「實訓實戰」,主要包括數組、函數、指針和結構體。通過第一階段的學習,學生已經具備了一些程序設計的基礎知識,在這一階段將通過一個實訓項目的完成來熟悉主要內容,同時鞏固第一階段的成果。

(2)自學內容

課本中的內容上課沒重點介紹或者說就是沒提到的,劃為自學內容。但這些內容,我們並不是在課堂要求學生回去自學:要求過高,規矩過多,這樣效果不佳。而是讓學生在實驗中發現問題後,帶著問題去學習,去找答案。

例:整型 我們只介紹int基本類型,當學生想計算n!時,學生測試5!=120時,他可能會去測試20!、50!,這時,存放階乘的變數Factorial再定義為int,結果就是0了,這時問題就來了,他就會去尋找正確的處理方法(long int)。

(二)實驗教學的安排與設計

教學改革方案確定後,我們對本課程實驗教學上從多方面進行了教學更新。我們考慮到學生處於了解計算機語言及編程的初級階段,有許多最基礎的內容有待掌握,所以本課程的實驗教學不太適合完全以項目開發的形式進行,注重的是加強模塊化實訓。

(1)上好第一節實驗課

我們常說「上好第一節課」,那麼第一節實驗節的重要性也不言而喻。這節課對培養學生的學習興趣、增強學生的學習信心、鍛煉學生的自主學習等多方面影響很大。

第一次實驗項目是&mdash;熟悉Turbo C的運行環境,主要是掌握一些在TC中的一些鍵盤操作方式。一般是教師給學生提供程序代碼(三個),但我們在學生不知情的情況下,給學生兩個有語法錯誤的和一個正確的程序。這樣,當學生運行正確的程序時,知道計算機可以幫我們處理問題,原來程序就是這樣寫的;當學生運行錯誤的程序,首先他會詫異(老師給的程序原來是錯的),於是要求他們自己修改,尤其是有時一個致命錯誤導致的10多個errors,被學生修改後,沒有了errors或所剩無幾,這時學生表現的很興奮、很有成就感,從而加強了本課程的學習興趣和信心。

(2)分兩階段進行

實驗內容與理論教學內容相互應,在基礎准備階段,這方面教學方法上主要是加強操練。通過各種大小程序、多重訓練和一個問題的多種解法來加強語法知識點的掌握和訓練,開闊學生編程的思路,掌握編程基礎。同時,在這過程中我們嚴格把關,讓學生課後認真准備,每次進實驗室時,應有寫好的完整代碼,上機調試,發現問題同時解決問題,要求認真完成實驗內容,並在課後書寫實驗 報告 。鼓勵學生多寫程序,要加強實踐環節,首先要從量上有個劃分。在實訓項目驅動階段。本階段實訓項目的設計非常重要,原則是既要使學生有切入點能夠動手又要使各章的內容之間有聯系點。

(三)案例教學法

C語言的教學,教師一般受傳統應試 教育 的影響,狠抓理論考試,忽略了程序設計能力的培養,把授課重點放在程序設計語言的基本語法的講授和掌握上,所選的編程實例大多用於語法規則的驗證和說明,僅從程序設計語言的使用這個單一的角度進行教學,而使得大多數學生在學完本課程後,「吃不透、用不活」,表現為學生在程序調試時,對程序中出現的邏輯錯誤經常不知所措,在開發較大的應用程序時,不知道如何入手。

採用案例教學法,以程序設計為主線,以編程應用為驅動,通過案例和問題引出教材內容,重點講解程序設計的思想和方法,穿插講解相關的語言知識。使教學效果既有深度又有廣度,學生實際動手能力大為增強。

以上是我個人結合我院C語言程序設計的教學情況,自己總結了幾點看法和一些改革 措施 ,拿出來和大家一起分享,請大家多提寶貴意見。通過這次學習,我將會靈活運用幾位教授的教學 經驗 ,根據我院的教學對象,調整一些上課方法和措施,望能更好的提高教學質量。

c語言程序設計心得三

通過此次C語言程序設計實踐,本人實在是獲益不淺!C語言是上個學期開的課程,所以這個學期並沒怎麼看過,當要開始設計的時候,還真不知從哪下手!結果,第一次的上機,我傻坐著不知道該做什麼,後來就寫了幾個預處理命令。回去以後,我想,這樣不行,這樣下去還得了!我就重新復習了一遍我們上個學期學習的內容,發覺自已有許多都遺忘了!特別是有文件的操作,幾乎是一遍空白!溫習過後,開始做題!

一開始做題,也是有點模糊,在指導老師的指導下,我們慢慢的進入狀態,我們做的是一個通訊錄,內容包括很多。運用的函數也是非常的復雜,我們一組有七個人,我分工合作,首先我一起完成了結構題,然後我們一人各負責一個函數程序的設計,經過幾星期的努力,我們完成了大半個程序,但是總是有很多錯誤出現,有好多是些小問題,這都是我們粗心大意造成的,所以設計程序一定要仔細,不容一點的馬虎。當然也有大問題,關於文件的操作,是我們最大的問題,不過,我們做好後,經過老師的講解和改錯,我們也懂得設計和運用了。同時,也讓我知道了,合作的力量,如果是孤軍奮戰的話,我也不能在規定時間內完成,當然,也多虧老師的指導。

這次設計,讓我重新掌握了C語言,而且還得到了用C語言解決實際問題的寶貴經驗!

↓↓↓點擊下一頁還有更多精彩的C語言編程 學習心得 ↓↓↓

⑤ C語言編簡單的掃雷

給你一個完整的掃雷源碼
#include <conio.h>
#include <graphics.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include "mouse.c"

#define YES 1
#define NO 0

#define XPX 15 /* X pixels by square */
#define YPX 15 /* Y pixels by square */

#define DEFCX 30 /* Default number of squares */
#define DEFCY 28

#define MINE 255-'0' /* So that when it prints, it prints char 0xff */

#define STSQUARE struct stsquare

STSQUARE {
unsigned char value; /* Number of mines in the surround squares */
unsigned char sqopen; /* Square is open */
unsigned char sqpress; /* Square is pressed */
unsigned char sqmark; /* Square is marked */
} *psquare;

#define value(x,y) (psquare+(x)*ncy+(y))->value
#define sqopen(x,y) (psquare+(x)*ncy+(y))->sqopen
#define sqpress(x,y) (psquare+(x)*ncy+(y))->sqpress
#define sqmark(x,y) (psquare+(x)*ncy+(y))->sqmark

int XST, /* Offset of first pixel X */
YST,
ncx, /* Number of squares in X */
ncy,
cmines, /* Mines discovered */
initmines, /* Number of initial mines */
sqclosed, /* Squares still closed */
maxy; /* Max. number of y pixels of the screen */

void Graph_init(void);
void Read_param(int argc, char *argv[]);
void Set_mines(int nminas);
void Set_square(int x, int y, int status);
void Mouse_set(void);
void Draw_squares(void);
int Do_all(void);
void Blow_up(void);
void Open_square(int x, int y);
int Open_near_squares(int x, int y);

/************************************************************************/

void main(int argc, char *argv[])
{
if (!mouse_reset()) {
cputs(" ERROR: I can't find a mouse driver\r\n");
exit(2);
}
Graph_init();
Read_param(argc, argv);
Mouse_set();
do {
randomize();
cleardevice();
Set_mines(cmines=initmines);
mouse_enable();
Draw_squares();
}
while (Do_all() != '\x1b');
closegraph();
}

/*************************************************************************
* *
* F U N C T I O N S *
* *
*************************************************************************/

/*----------------------------------------------------------------------*/

void Graph_init(void)
{
int graphdriver=DETECT, graphmode, errorcode;

if(errorcode < 0) {
cprintf("\n\rGraphics System Error: %s\n",grapherrormsg(errorcode));
exit(98);
}
initgraph(&graphdriver, &graphmode, "");
errorcode=graphresult();
if(errorcode!=grOk) {
printf(" Graphics System Error: %s\n",grapherrormsg(errorcode));
exit(98);
}
maxy=getmaxy();
} /* Graph_init */

/*----------------------------------------------------------------------*/

void Read_param(int argc, char *argv[])
{
int x, y, m;

x=y=m=0;
if (argc!=1) {
if (!isdigit(*argv[1])) {
closegraph();
cprintf("Usage is: %s [x] [y] [m]\r\n\n"
"Where x is the horizontal size\r\n"
" y is the vertical size\r\n"
" m is the number of mines\r\n\n"
" Left mouse button: Open the square\r\n"
"Right mouse button: Mark the square\r\n"
" -The first time puts a 'mine' mark\r\n"
" -The second time puts a 'possible "
"mine' mark\r\n"
" -The third time unmarks the square\r\n"
"Left+Right buttons: Open the surrounded squares only if "
"the count of mines\r\n"
" is equal to the number in the square",argv[0]);
exit (1);
}
switch (argc) {
case 4: m=atoi(argv[3]);
case 3: y=atoi(argv[2]);
case 2: x=atoi(argv[1]);
}
}
XST=100;
ncx=DEFCX;
if (maxy==479) {
YST=30;
ncy=DEFCY;
}
else {
YST=25;
ncy=20;
}
if (x>0 && x<ncx)
ncx=x;
if (y>0 && y<ncy) {
YST+=((ncy-y)*YPX)>>1;
ncy=y;
}
initmines= m ? m : ncx*ncy*4/25; /* There are about 16% of mines */
if (((void near*)psquare=calloc(ncx*ncy, sizeof(STSQUARE)))==NULL) {
closegraph();
cputs("ERROR: Not enought memory");
exit(3);
}
} /* Read_param */

/*----------------------------------------------------------------------*/

void Set_mines(int nminas)
{

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

⑦ c語言心得體會

c語言心得體會範文7篇

在平日里,心中難免會有一些新的想法,可用寫心得體會的方式將其記錄下來,這樣我們可以養成良好的總結方法。那麼心得體會該怎麼寫?想必這讓大家都很苦惱吧,以下是我幫大家整理的c語言心得體會範文,供大家參考借鑒,希望可以幫助到有需要的朋友。

c語言心得體會範文1

在初學C語言的一個學期後,我們進行了C語言實訓階段,嘗試編寫一個比較復雜的程序系統。在為期一周的時間中,我們同組的同學共同的感受是:C語言實訓和平時上課所接觸的程序是有很大不同的,所經受的考驗和克服的困難是平時所無法比擬的。好在同組的搭檔們精誠合作,分工明確,有問題共同解決,攻克了C語言實訓的復雜程序。在這里,我作為其中的參與者,感觸良多。

在這次實訓中,我對對C語言有了一個更深的了解認識,也對這個學期學的知識得到鞏固,還嘗試運行編程,每次運行程序成功,讓我對下面的項目就充滿信心。通過自己與同學合作編寫程序,最終把最初的理論知識轉化基本技能。這次的實訓,使我對C語言的學習產生濃厚的興趣。

還是這次實訓,最令人激動的就是合作做項目,雖然那隻是一個很小很小的項目。每天大家來得很早,大家在一起學習,取長補短,我們很好的在實訓中長知識,提高我們的學習熱情。實訓中深切體會到了老師認真負責的偉大的精神和熱情為同學指導的促學方式,雖然對有些時候老師沒給我們指出解決問題的方法有些小抱怨,但是到了結束時才知道,這種教學讓我們自己學會了自學,學會了去看懂別人的代碼。更多是老師給的感動,每天在我們來之前就到了教室,在講課中海給我們分享他在公司上班的一些心得和體會,還有那些我們應該注意的事項,這些是平時上課時無法學到的,是更深層次的巨大收獲。

通過這次實訓,也使我們發現了許多問題。

在實訓中,我們認識到自己還有很多的知識沒學好,基礎知識沒理清,而且許多東西還要去翻書,去上網搜索。而且遇到一些小錯誤運行不出來,就會煩躁不安,覺得有些自暴自棄或者抱怨項目的變態,以後要克服,盡量保持一顆良好的心態,學好C語言,也學好用C語言編寫一個按要求的系統。

還有就是對於未來,近程就是下學期,我覺得我還有許多方面需要提高。

首先我要繼續學習好C語言的基礎知識,然後能在電腦上熟練的運用。然後每天都能寫一些程序,上網時候多看一些優秀的教程和優秀的代碼。遇到問題時多和同學討論,並且多弄出幾套方案,多鍛煉自己結局問題的能力和與同學合作的能力。

總之,這一切都成為我記憶裡面的一個篇章,更是在C語言編程上的一個里程碑。

c語言心得體會範文2

通過一學期對C語言的學習,我感覺學習C語言是有一定難度卻又是非常有趣的科目。也是很有幫助的,特別是對將要面對的計算機二級考試。這段時間的學習我知道了C語言的基本特點有以下幾點:

1.語言簡潔,使用靈活方便。

2.運算符豐富,表達能力強。

3.數計類型豐富。

4.目標程序質量高,具有面向硬體系統的特點。

5.具有結構化的控制語句和模塊化的程序結構。

6.具有編譯預處理功能。

7.程序設計自由度大,可移植性好。

這段時間學習使我掌握了:

一、我學習了C語言的數據類型、常量與符號常量、變數、C語言的運

算符和表達式、賦值運算符和賦值表達式、自增自減運算符以及逗號表達式等。

二、這章介紹了結構化程序的三種基本結構、C語句概述、數據輸出包

括字元輸出函數putchar和格式輸出函數printf、數據輸入包括字元輸入函數getchar和格式輸入函數scanf,還有一些簡單的C語程序設計舉列等。

前幾天一直在看C++語法,所以對一些比較實際的例子總感到比較抽象,但是那也是一個必需階段,可能大家和我的學習方式不一樣,但從剛接觸程序到現在來看,發現這樣學習語言的方法挺不錯的。

經過第一階段對語法的學習,我覺得實例階段應該是一個過渡階段吧,通過前一階段對語法的學習之後,可能有很多概念我們都比較模糊,或者說很多東西太抽象了,這就為我們第二個階段的學習做好了實例化的准備,可以這樣說吧,第一個階段就我們為我們的學習一樣東西而構建的一個類,裡面講了我們應該在這裡面要做什麼?第二階,也就是本階段,我們就應該去把前一段的東西具體化(實例化先前創建的類),那怎麼個具體化呢,呵呵!說白了,去練習一些小例子,從網上下載的電子書上有很多這方面的例子的,如果有自己去書店買書的話,裡面也應該提供了不少,裡面的例子,我是每次都打了一遍,也許有的人不會親自去用手打一遍,什麼等,當然這樣也行,但我個人認為,對於初學者來說,最好還是自己動手打一遍比較好,畢竟這些東西對我們來說,都比較陌生,如果每個字都自己打完的話,有些代碼你不想記住也難了,在這里,我們得弄懂練習的每一個例子,如果能把一些例子稍稍修改,弄懂裡面精髓的東西,讓自己知道為什麼這樣做,那麼是最好不過的了,我平時練習時,這一步是少不了的,都習慣了,所以也就成了條件反射,想不這樣都不行。最後,我們就應該匯一下總,把前面做過的例子里所用的技術理一下,再做一個比較大的例子,盡量把到目前為止所懂的知識全部應用到裡面去,只是盡量,當然有些東西是不能集成到一起的,也是是代碼之間的排斥性。

這是個人的一點學習心得,希望能更好的運用到學習中去。C語言是一門很有用的、對於我們的就業很實際的語言,學習好C語言是一項必須而實際的任務。我們必須要好好掌握。

c語言心得體會範文3

三周的課程設計已經結束了。

回想學習C語言 的過程中,既有快樂又有煩惱。

從領到書的那一刻,我就很郁悶,《C 語言程序設計》到底事學什麼的,有什麼用。剛開始上課時,還在迷茫這門課程是用來做什麼的。不過,這些感受都是在對這門課程不了解的情況下產生的。後來慢慢的接觸多了,聽老師講的多了,了解多了,漸漸的產生了興趣。尤其是學到語句和函數時,上機操作程序,經過編譯,調試和運行後,出現界面,當時覺得很好奇,想真正的學好這門課程。通過半個學期的學習,我掌握了基本知識。

下學期開始時,被通知要進行三周的課程設計。當時有點懵,感覺學的東西很少,很零散,不知該怎麼練到一起,就要課程設計,是不是太難為我們了。

第一天基本上都是在看書,把基本知識再熟悉一邊。到了下午的時候,老師發過來三道練習題,從這幾道練習題上我得到了不少啟發,然後我們組把整個程序的思路理清了,開始著手寫程序。

第一周結束的時候,我感覺自己收獲挺大的,從一開始的迷茫,不知道從何下手到把程序中的幾個模塊編寫出來,心裡挺開心的。但是,到了第二周,我們由不得不再次陷入困境。在整個程序的編寫過程中。最難的就是修改和刪除這兩個模塊,這也是我們第二周要解決的重點問題。

開始編寫修改和刪除時,很頭疼,去向其他人尋求幫助,在別人的幫助和提示下,我編完了修改程序,但編譯時老出錯,修改後的內容將文本內的信息全部覆蓋了。困難之時,我們組的其他人,幫助了我,完成了修改和刪除。這樣的話,整個程序基本上全部完成了,就剩下完善工作了。我們組寫了兩個程序,最後,兩個程序相互組合,互補,大功告成

雖然設計時完成了,但是我覺得其中還是由一些不足之處:

1. 警告句。程序中缺少一些警告句,例如:「是否真的刪除(y/n)?」。

2. 重名的情況。由於考慮的不周全,沒有設計遇到重名的情況該怎麼處理。

3. 選擇單一。我們設計的程序中,只設計了按名字選擇,進行操作,忽略了重名的情況。

整個程序完成了,還有很多不完善的地方,希望自己以後辦事的時候要認真,仔細,考慮周全。

短短的三周課程設計結束了,但是這段時間里,我又學到了更多C 知識,如:對象數組,string類,文件流等,同時我也被提醒以後辦事的時候要認真,仔細,考慮周全。,也看到了團隊精神和互幫互助的重要性。這一點會讓我終生受益。通過三周的課程設計,我覺得自己肚子里的墨水多了,收獲也挺大的,這三周過的挺充實!

c語言心得體會範文4

在初學C語言的一個學期後,我們進行了C語言階段,嘗試編寫各種類型的程序。在為期一個周時間中,我的感受是:C語言實訓和平時上課所接觸的成有很多不同,所經受的考驗和克服的困難和平時的相差不大,遇到不會做的題同學互相討論,互相幫助,共同解決,攻克了C語言的復雜程序,我感觸良多。

在這次實訓中,我對C語言有了一個更深的認識了解,也對這學期的知識得到鞏固,還嘗試了運行編程,每次運行程序成功,讓我對下面的項目充滿了信心通過自己的努力最終把最初的理論知識轉化成基本技能,這次的實訓,是我對C語言的學習產生了農活的興趣。

還是這次實訓,最令人激動的就是同學遇到問題互相幫助雖然只是一個很小得實訓,但同學們的滿腔人情卻是值得驕傲的,我們在實訓中取長補短在實訓中長知識,提高了我們學習,雖然對有些時候老師沒給我們指出解決問題的方法有一些小抱怨,但到了結束是才知道,這種教學讓我們自己學會了自學,學會了去看懂別人的代碼。更多的是老師的感動,每天在我們來之前家到了機房,給我們我分享他學C語言的感受,還提醒我們注意在編程時與遇到的事項,,這些是我們平時上課無發了解到的知識是我們更深層次的極大收獲。

通過實訓我們也發現了許多問題,在試訓中我認識到自己還有很多知識沒學好,最基本的'知識點沒有理清楚,而且許多東西要經過翻書,上網查閱,搜索,遇到一小點錯誤運行不出來,就會煩躁不安,覺得有些自暴自棄或這抱怨題目有些變態,以後要克服,盡量保持一顆藍好的心態,學好C語言,用C語言來編寫一個按要求的系統。

對於未來,近程下個學期,我覺得我還有許多方面需要提高。

首先我要繼續學習好C語言的基礎知識,然後能在電腦上熟練的運用。能寫出一些程序,上網的時候多看一些優秀的教程和優秀的代碼,遇到問題是多和同學討論,並且多弄出幾套方案,多練習自己結局問題的能力和與同學合作的能力。

總之,這一切都成為我記憶裡面的一個篇章,更是C語言編程上的一個里程碑。

c語言心得體會範文5

在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們學習它,有助於我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。

在這個星期里,我們專業的學生在專業老師的帶領下進行了c語言程序實踐學習。在這之前,我們已經對c語言這門課程學習了一個學期,對其有了一定的了解,但是也僅僅是停留在了解的范圍,對裡面的好多東西還是很陌生,更多的在運用起來的時候還是感到很棘手,畢竟,萬事開頭難嘛。

由於時間的關系,我們的這次實踐課程老師並沒有給我們詳細的介紹,只是給我們簡單的介紹了幾個比較重要的實際操作。包括了程序模塊處理。簡單界面程序。高級界面程序。程序的添加修改。用程序做一元線性回歸處理以及用c語言程序來畫粒度分布圖等這幾樣比較重要的時間操作。

上機實驗是學習程序設計語言必不可少的實踐環節,特別是c語言靈活、簡潔,更需要通過編程的實踐來真正掌握它。對於程序設計語言的學習目的,可以概括為學習語法規定、掌握程序設計方法、提高程序開發能力,這些都必須通過充分的實際上機操作才能完成。

學習c程序設計語言除了課堂講授以外,必須保證有不少於課堂講授學時的上機時間。因為學時所限,課程不能安排過多的統一上機實驗,所以希望學生有效地利用課程上機實驗的機會,盡快掌握用c語言開發程序的能力,為今後的繼續學習打下一個良好的基礎。為此,我們結合課堂講授的內容和進度,安排了12次上機實驗。課程上機實驗的目的,不僅僅是驗證教材和講課的內容、檢查自己所編的程序是否正確,課程安排的上機實驗的目的可以概括為如下幾個方面:

1.加深對課堂講授內容的理解

課堂上要講授許多關於c語言的語法規則,聽起來十分枯燥無味,也不容易記住,死記硬背是不可取的。然而要使用c語言這個工具解決實際問題,又必須掌握它。通過多次上機練習,對於語法知識有了感性的認識,加深對它的理解,在理解的基礎上就會自然而然地掌握c語言的語法規定。對於一些內容自己認為在課堂上聽懂了,但上機實踐中會發現原來理解的偏差,

這是由於大部分學生是初次接觸程序設計,缺乏程序設計的實踐所致。

學習c語言不能停留在學習它的語法規則,而是利用學到的知識編寫c語言程序,解決實際問題。即把c語言作為工具,描述解決實際問題的步驟,由計算機幫助我們解題。只有通過上機才能檢驗自己是否掌握c語言、自己編寫的程序是否能夠正確地解題。

通過上機實驗來驗證自己編制的程序是否正確,恐怕是大多數同學在完成老師作業時的心態。但是在程序設計領域里這是一定要克服的傳統的、錯誤的想法。因為在這種思想支配下,可能你會想辦法去"掩蓋"程序中的錯誤,而不是盡可能多地發現程序中存在的問題。自己編好程序上機調試運行時,可能有很多你想不到的情況發生,通過解決這些問題,可以逐步提高自己對c語言的理解和程序開發能力。

2.熟悉程序開發環境、學習計算機系統的操作方法

一個c語言程序從編輯、編譯、連接到運行,都要在一定的外部操作環境下才能進行。所謂"環境"就是所用的計算機系統硬體、軟體條件,只有學會使用這些環境,才能進行程序開發工作。通過上機實驗,熟練地掌握c語言開發環境,為以後真正編寫計算機程序解決實際問題打下基礎。同時,在今後遇到其它開發環境時就會觸類旁通,很快掌握新系統的使用。

3.學習上機調試程序

完成程序的編寫,決不意味著萬事大吉。你認為萬無一失的程序,實際上機運行時可能不斷出現麻煩。如編譯程序檢測出一大堆錯誤。有時程序本身不存在語法錯誤,也能夠順利運行,但是運行結果顯然是錯誤的。開發環境所提供的編譯系統無法發現這種程序邏輯錯誤,只能靠自己的上機經驗分析判斷錯誤所在。程序的調試是一個技巧性很強的工作,對於初學者來說,盡快掌握程序調試方法是非常重要的。有時候一個消耗你幾個小時時間的小小錯誤,調試高手一眼就看出錯誤所在。

通過這次為數不多的幾天計算機實踐學習,我們了解了一些關於c語言的知識,理解鞏固了我們c語言的理論知識,著對我們將來到社會工作將會有莫大的幫助。同時它讓我知道,只要你努力,任何東西都不會太難。

c語言心得體會範文6

1、引言

《C語言程序設計》是各大高校理工類專業的一門重要的必修課程,由於C語言使用靈活,數據類型繁多,結構復雜,因此學生在學習該課程時都或多或少的感覺頭疼,學習不得要領。這就要求教師在教學中需要貫穿先進的教學理念,採用適合的教學方法。本文針對C語言教學中存在的問題,結合多年的教學經驗,提出幾點教學方法和體會。

2、C語言教學中存在的問題

2.1學生學習熱情不高

C語言課程的開設對象一般為大一學生,想讓他們馬上接受程序設計的思想幾乎是不可能的。另外他們從高年級同學那裡得知C語言學習難度大,就會產生學習C語言這門課程的懼怕心理。還有一部分學生認為學習C語言對自身的專業沒有什麼用處,因此產生了厭學的情緒。

2.2傳統教學方式存在弊端

以教師為中心的灌輸式教學方法忽視了學生的「學」,學生處於被動接受狀態,缺少教師和學生的互動,學生學習的主動性、積極性難以發揮。雖然近年來C語言程序設計課程多媒體課件教學得到廣泛普及,在某種程度上激發了學生的學習興趣,但仍然沒有脫離傳統教學方式,缺少教學目標的針對性,由「照本宣科」變為「照片(幻燈片)宣科」,沒有從根本上解決師生交互匱乏的現實[1]。

2.3學生學習方法不得當

由於大一學生還不是很適應大學的學習方式,很多時候還沿用高中時候學數學、英語等科目的方法來學習C語言,一些學生只重視理論知識,以為光靠背一背、做做題就能學好,忽視了實踐環節的重要性,從而導致了一部分學生學不得法,效率極低。

3、幾點教學體會

針對上述存在的問題,分別提出幾點體會,可以歸納為:「一個目標」、「兩個關鍵」、「三步實踐」。

3.1樹立一個目標

這是針對學生的學習態度提出的。做一件事情如果沒有一個明確的目標。就很難提起興趣,遇到困難也很容易放棄,當然也無法做好。學習C語言也不例外。如果想激發學生的學習興趣,讓學生喜歡學、主動學,就必須讓學生明確為什麼要學習C語言,明確一個學習的目標。事實上,學習C語言對於任何專業的學生都有莫大的好處,可以鍛煉邏輯思維能力,對以後的專業課的學習有很好的輔助作用,也會對以後學習其他編程語言打下良好的基礎,正所謂」萬變不離其宗」,如果真正掌握精了程序設計思想,具備了真正解決實際問題的能力,語言再更新可程序設計的本質不會變[2]。當然,從更實用的角度來看,可以把「通過國家二級考試」作為一個為之努力實現的目標,不僅對以後就業很有幫助,讓學習有了興趣和動力,有了克服困難的決心,取得事半功倍的效果。

c語言心得體會範文7

在初學C語言的一個學期後,我們進行了C語言實訓階段,嘗試自己編寫一個比較復雜的程序系統。在為期兩周的時間中,我們同組的同學共同的感受是:C語言實訓和平時上課所接觸的程序是有很大不同的,所經受的考驗和克服的困難是平時所無法比擬的。好在同組的搭檔們精誠合作,分工明確,有問題共同解決,攻克了C語言實訓的復雜程序。在這里,我作為其中的參與者,自然感觸良多。

剛開始接觸到C的時候,我已經學過一些有關VB的內容,這個在演算法和思維上稍微有點幫助。回想本學期的學習,首先,最基本的,是C的數據格式,讓我們知道整數,浮點數以及字元常量在C中的運用。然後,在學會了數據轉化,以及熟練的可以對各種數據處理之後,我開始進行有關數據結構,像數組,結構體等的學習,因為有的東西從現有的知識來看都是非常簡單的,還沒有聯繫到指針等等一些復雜的概念。可是,僅僅學會這些是遠遠不夠的,C語言中,還有很多更加經典、重要、實用的知識。

說說函數。雖說很多程序語言都有函數這一內容,但我覺得C語言的函數是最有魅力的了。學習函數的方法是比較簡單的,只有兩個字「牢記」,即:牢記函數的功能,牢記函數的用途以及如何輸入輸出。函數從本質上講是一段通用程序,用它可以幫助我們節約很多編程的時間,學習C語言的「高人」都說,一個聰明的編程者在編寫程序前往往總是先找自己所編寫的程序中有多少是可以用函數來代替的。比如,大家可以作一個比較字元串的實驗,用C語言中的strcmp()函數只要一句話,而自己編寫的話,30句都很難實現,可想而知函數的實用和快捷。在我們C語言實訓的代碼中,函數更是得到了充分的應用,可以說,實訓題目的復雜代碼,就是用無數個函數的調用和嵌套積累出來的。

要注意的是,有的同學剛剛開始的時候,都是被一些大的程序激勵的,所以當開始的時候看到繁瑣的數據轉化和簡單的演算法,都覺得很無聊,都想自己做幾個自己滿意的程序來看看,雖然這種想法很好,但是,我們說,沒有基礎,純粹是搬照一些現成設計方法,是不足取的。要知道,程序設計講究的是個人的思維的,假如剛開始就被一些現成的思想束縛住,以後就會覺得很無趣。

我們知道,指針其實是C語言的靈魂,許多的數據結構在我們學到這里之前都可以說是精通了。所以我們的任務就是,讓數據結構在指針中運行。當然,剛剛開始接觸到這些新的東西,是一件非常痛苦的事情,所以我們一定要用非常形象的思維去看待指針,不能太固化。所以,新的東西,比如結構體在指針中的表現方法,數組及多維數組在結構體中的運用,都一點一點的加了進來,同時豐滿了我們對原來C的數據機構,數據表示的理解。當我們完成了這三步的學習,我們已經可以自豪的說,我們的基礎都扎實了,可以進一步的學習有關演算法,設計概念等等深層次的東西了。

但是,指針,結構體,這些太抽象的東西,在學習C語言的時候我們就有點「似懂非懂」,可是在眼下的C語言實訓中,像這么重要的C語言知識,一定要達到能熟練掌握,實際運用的程度。在實訓的大程序中,結構體在指針中的表現方法,數組及在結構體中的運用等具體的技術環節,都得到了體現,不會指針,我們的工作是沒法展開的。所以,在實訓期間,大家在鞏固基本知識的基礎上,逐塊攻克實訓課題,克服了困難,自信心得到了提高。

最後,談談我們組的程序軟體。商店商品管理系統,是一個比較利於應用,解決實際問題,方便實際管理的程序。設計代碼比較復雜,結構比較嚴謹。在程序編寫的1周左右的時間里,組員們遇到了上述的困難,包括程序設計構思,甚至是指針等某些知識點的欠缺,導致的工作中出現的困難。但是,當大家一起團結協作,解決了這些困難之後,發現自己也可以編寫復雜的、應用性的程序了,更發現自己對C語言這門學科的興趣也提高了。

當然,我們編寫的商店商品管理系統,還存在很多疏漏和不合理之處。比如,程序復雜冗長,如果時間充裕,我們將在不改變程序運行結果的基礎上,簡化程序,使每一句更加精闢,總體上更加簡化。另外,在程序的外觀上,我們由於時間問題,沒有做更多的修飾,運行起來顯得比較死板、枯燥乏味。如果增添一些色彩和其他效果,我們的程序也許會更加完美。

⑧ C語言掃雷點到空白地方一次打開一大片的演算法求解

能把代碼再多給點嗎?

那8個遞歸其實可以用兩個for來做的

voidClickBlank(intx,inty){
inti,j;
if(isBlank(x,y)){
ShowAroundBlock(x,y);
for(i=-1;i<=1;i++){
for(j=-1;j<=1;j++){
if(i==0&&j==0)continue;
ClickBlank(x+i,y+j);
}
}
}
}

而且你應該設訪問標記,已經ClickBlank的格子不應再調用ClickBlank