第一篇:長整數(shù)加減運算實驗報告
長整數(shù)加減的運算
一、需求分析
問題描述:
設計一個實現(xiàn)任意長的整數(shù)進行加法運算的演示程序
基本要求:
利用雙向循環(huán)鏈表實現(xiàn)長整數(shù)的存儲,每個結點含一個整型變量。任何整型變量的范圍是 -(2 15 -1)~(2 15 -1)。輸入輸出形式:按照中國對于長整數(shù)的表示習慣,每四位是一組,組間用逗號隔開
更高要求:
(1)長整數(shù)的減法
(2)多個長整數(shù)的連續(xù)加減法,并帶括號等。具體方式可以參見表達式的求值部分,利用棧
測試數(shù)據(jù):
(1)0;0;應輸出“0”
(2)-2345,6789;-7654,3211;應輸出“-1,0000,0000”
(3)-9999,9999;1,0000,0000,0000;應輸出“9999,0000,0001”(4)1,0001,0001;-1,0001,0001;應輸出“0”(5)1,0001,0001;-1,0001,0000;應輸出“1”
(6)-9999,9999,9999;-9999,9999,9999;應輸出“-1,9999,9999,9998”(7)1,0000,9999,9999;1;應輸出“1,0001,0000,0000”
一、概要設計
1.數(shù)據(jù)結構
此實驗采用的數(shù)據(jù)結構是雙向循環(huán)鏈表。這樣可以很容易的找到他的前驅以及它的后繼。節(jié)點采用結構體類型,代碼如下:typedef struct Node // 雙向鏈表的結構體定義
{
int data;
struct Node *prior;struct Node *next;}DLNode;
2.使用函數(shù)
1)void ListInitiate(DLNode **head)
操作結果:初始化一個頭結點為head的雙向循環(huán)鏈表; 2)int ListLength(DLNode *head)
操作結果:計算以head為頭結點的鏈表的長度 3)int ListInsert(DLNode *head,int i,int x)
操作結果:將節(jié)點數(shù)據(jù)為x的節(jié)點插到第i個位置上去。4)int abs(int x)
操作結果:絕對值函數(shù),返回x的絕對值。5)int InputNumber(DLNode *head)
操作結果:將從鍵盤中接收數(shù)據(jù)并把得到的數(shù)據(jù)存入以head為頭結點的鏈表中。四位一存,中間以逗號區(qū)分,結束符為分號。6)void OutputNumber(DLNode *head,int sign)
操作結果:將以head為頭結點的鏈表中的所有數(shù)據(jù)輸出到顯示屏上,7)void add(DLNode *head1,DLNode *head2,DLNode *head3)操作結果:實現(xiàn)正數(shù)加正數(shù)的加法操作。8)int change(DLNode *head1,DLNode *head2)
操作結果:判斷存在倆個鏈表中的數(shù)的大小,如何head1中的數(shù)大于head2中的數(shù)那么返回值為0,反之返回值為1,相等時返回值為2; 9)void method(DLNode *head1,DLNode *head2,int x)
操作結果:計算正數(shù)乘以正數(shù)的乘法運算。
10)void minus(DLNode *head1,DLNode *head2,DLNode *head3)操作結果:計算正數(shù)減正數(shù)的減法運算。
11)void yunsuan(DLNode *head1,DLNode *head2,DLNode *head3,char ch)
操作結果:正數(shù),負數(shù),加法,減法。計算式共分為八種運算,在這之前我已經(jīng)實現(xiàn)了二種運算,那么這個函數(shù)就是把這八種運算按照一定的規(guī)則轉化成已經(jīng)實現(xiàn)的二種運算來實現(xiàn)完整的加減法運算。
12)void chengfa(DLNode *head1,DLNode *head2)
操作結果:在乘法中我只是實現(xiàn)了正數(shù)乘以正數(shù)的運算,那么這個函數(shù)就是通過調(diào)用method函數(shù)按照一定的規(guī)則來實現(xiàn)完整的乘法運算。13)void main()
操作結果:主函數(shù)。調(diào)用以上的各個函數(shù)來引導用戶進行長整數(shù)的加法運算,加法運算,乘法運算。
二、詳細設計
1.數(shù)據(jù)結構詳細設計
typedef struct Node // 雙向鏈表的結構體定義 {
int data;struct Node *prior;struct Node *next;}DLNode;雙向循環(huán)鏈表的節(jié)點由三個部分組成,第一是數(shù)據(jù)部分data存儲此節(jié)點的數(shù)據(jù),第二是此節(jié)點的前驅指針部分*prior指向此節(jié)點的前驅,第三是此節(jié)點的后繼指針部分*next指向此節(jié)點的后繼。數(shù)據(jù)部分我們約定它為整形變量,前驅后繼指針均為結構體Node類型。2.鏈表初始化函數(shù):
void ListInitiate(DLNode **head)//雙向鏈表的初始化 {
} if((*head=(DLNode *)malloc(sizeof(DLNode)))==NULL)exit(0);(*head)->prior=*head;(*head)->next=*head;
初始化之前需要定義一個類型為Node型的頭結點變量,經(jīng)過函數(shù)后完成鏈表的初始化即:頭節(jié)點的前驅指針指向自己,同時他的后繼指針也指向自己。3.計算已知的鏈表長度:
int ListLength(DLNode *head)//雙向鏈表的表長 {
DLNode *p=head;int size=0;while(p->next!=head){
} p=p->next;size++;return size;} 此函數(shù)計算的是已知鏈表的長度。主要思想:從頭結點開始尋找下一個節(jié)點,找到計數(shù)器加一。直到再次尋找到頭結點時停止,計算完畢。
4.插入函數(shù):
int ListInsert(DLNode *head,int i,int x)//雙向鏈表的數(shù)據(jù)插入,i表示是插入的第幾個元素 {
DLNode *p,*s;int j;p=head->next;j=0;while(p!=head&&j
} if(j!=i){
} if((s=(DLNode *)malloc(sizeof(DLNode)))==NULL)exit(0);s->data=x;s->prior=p->prior;//插入 p->prior->next=s;s->next=p;p->prior=s;return 1;printf(“n插入位置不合法!”);return 0;p=p->next;j++;
} 此函數(shù)是已知一雙向鏈表實現(xiàn)在第i個位置插入data為x的節(jié)點。函數(shù)需要注意的是在什么位置插入才是合法的,在就是在該節(jié)點指針時的順序不要搞錯。5.絕對值函數(shù):
int abs(int x){
} if(x<0)return-x;else return x;此函數(shù)是實現(xiàn)求一個整數(shù)的絕對值。設計這么一個函數(shù)主要是考慮到在存儲負數(shù)的時候頭結點應該變?yōu)檎麛?shù),然后通過其他手段變相實現(xiàn)那種運算。6.讀入數(shù)據(jù)并插入對應的鏈表函數(shù):
int InputNumber(DLNode *head)//讀入輸入的數(shù)據(jù) {
int input,i=0;//第i個節(jié)點 char c;scanf(“%d%c”,&input,&c);while(1){
if(input<0&&i==0)//輸入數(shù)為負且是第一個節(jié)點 {
} else if(input>=0&&i==0)//輸入數(shù)為正且是第一個節(jié)點 {
} else {
} if(head->next->data>=0){
} //input=-1*input;ListInsert(head,i,input);ListInsert(head,i,input);//非第一個節(jié)點 else head->data=1;//將長整數(shù)的符號保存在頭結點中 ListInsert(head,i,input);//插入數(shù)據(jù) head->data=0;//將長整數(shù)的符號保存在頭結點中 //input=abs(input);//取輸入數(shù)字的絕對值 ListInsert(head,i,input);//插入數(shù)據(jù)
}
} return 1;i++;if(c==';')break;//遇到數(shù)據(jù)輸入完成標志,跳出循環(huán) scanf(“%d%c”,&input,&c);此函數(shù)實現(xiàn)的是從鍵盤上得到數(shù)據(jù)根據(jù)三種情況進行不同的處理,判斷是否是頭結點,判斷是否是整數(shù),判斷輸入的字符是否是“;”分號。并且如果是正整數(shù)它的頭結點data等于1否則為0。
7.輸出函數(shù)
void OutputNumber(DLNode *head,int sign){ DLNode *r=head->next;while(r->data==0&&r!=head->prior){
r=r->next;} if(sign==1){
printf(“結果是:”);} else {
printf(“結果是:-”);}
printf(“%d”,r->data);
r=r->next;
while(r!=head)
{
if(r->data<10)
{
printf(“,000”);
printf(“%d”,r->data);
}
else if(r->data<100)
{
printf(“,00”);
printf(“%d”,r->data);
}
else if(r->data<1000){
//從表尾輸出數(shù)據(jù)元素
}
} printf(“n”);
} else { } r=r->next;
printf(“,%d”,r->data);printf(“,0”);printf(“%d”,r->data);此函數(shù)實現(xiàn)的是將最后的結果輸出到顯示屏上,經(jīng)過判斷數(shù)據(jù)的正負和數(shù)據(jù)的范圍來進行不同的處理,以保證在顯示屏上顯示的是正確的格式。
8.不完整加法函數(shù)(只可實現(xiàn)正數(shù)加上正數(shù))
void add(DLNode *head1,DLNode *head2,DLNode *head3){ int z=0;
if(p1==head1&&p2!=head2){
while(p2!=head2){
e=p2->data+z;if(e>=10000){ z=1;int e;DLNode *p1,*p2;p1=head1->prior;p2=head2->prior;while(p1!=head1&&p2!=head2){ e=p1->data+p2->data+z;
}
if(e>=10000){
} else z=0;ListInsert(head3,0,e);p1=p1->prior;p2=p2->prior;z=1;e=e%10000;
} else z=0;ListInsert(head3,0,e);p2=p2->prior;e=e%10000;} if(z==1)ListInsert(head3,0,z);} else if(p1!=head1&&p2==head2){
while(p1!=head1){ e=p1->data+z;
if(e>=10000){
} z=1;e=e%10000;else z=0;p1=p1->prior;ListInsert(head3,0,e);} if(z==1)ListInsert(head3,0,z);} else{ if(z==1)ListInsert(head3,0,z);} } 此函數(shù)實現(xiàn)的是兩個正數(shù)之間的相加運算,主要的算法和我們手算加法是一樣的,首先設置一個進位計數(shù)的變量,根據(jù)存儲的特點從低位開始相加帶上進位即可得出相應的位和,最后更新進位變量。處理邊界狀況:如果兩個鏈表一樣長同時他們最高位在計算完成時仍然會有進位,那么應該考慮到在數(shù)據(jù)的更高位插入一個1表示最后的計算結果,這樣才可以保證數(shù)據(jù)的完整性。9.判斷倆正數(shù)大小函數(shù):
int change(DLNode *head1,DLNode *head2){
int length1,length2,r=2;length1=ListLength(head1);DLNode *p1,*p2;p1=head1->next;p2=head2->next;length2=ListLength(head2);
if(length1>length2){
} else if(length1 } else { } return r;} int i=0;for(i=0;i } if(p1->data>p2->data){ } else if(p2->data>p1->data){ } else { } p1=p1->next;p2=p2->next;r=2;r=1;return r;break;r=0;return r;break;r=1;return r;r=0;return r;此函數(shù)實現(xiàn)的是判斷倆個正數(shù)的大小??紤]倆正數(shù)的在鏈表中所占存儲單元的多少,多的一定大,當他們一樣長時,一位一位的比較直到找到一個節(jié)點中的data比另一個鏈表的對應節(jié)點的data大為止。如果最后仍是一樣大那么這兩個數(shù)就是一樣大的。返回值為自己約定的參數(shù)r等于2表示倆數(shù)一樣大,等于1表示第二個數(shù)大,等于 0表示第一個數(shù)大。 10.乘法函數(shù): void method(DLNode *head1,DLNode *head2,int x){ void minus(DLNode *head1,DLNode *head2,DLNode *head3);DLNode *temp1;DLNode *temp2;DLNode *temp3;DLNode *temp4;DLNode *temp5;int e,z=0,i,j;ListInitiate(&temp1);ListInitiate(&temp2);ListInitiate(&temp3);ListInsert(temp2,0,0);DLNode *p1,*p2;p1=head1->prior;p2=head2->prior;for(i=0;i while(p1!=head1){ } if(z!=0)ListInsert(temp1,0,z);for(j=0;j } else z=0;ListInsert(temp1,0,e);p1=p1->prior;z=e/10000;e=e-z*10000;ListInitiate(&temp4);ListInsert(temp4,0,0);ListInitiate(&temp5); } p1=head1->prior;p2=p2->prior;}OutputNumber(temp2,x);此函數(shù)實現(xiàn)的是倆個整數(shù)的乘法運算。模仿手算乘法,乘數(shù)的每一位分別和被乘數(shù)相乘得到的結果相加,注意的是在每次乘完相加時注意把低位的空缺補上0,以保證數(shù)據(jù)可以按位相加。在每一位乘法時需要注意一定要加上低位的進位以及改變進位的值,這樣才能保證每一位誠出來的結果是正確的。11.減法函數(shù): void minus(DLNode *head1,DLNode *head2,DLNode *head3){ int z=0,x=-1;int e;DLNode *p1,*p2;p1=head1->prior;p2=head2->prior;x=change(head1,head2);if(x==0){ while(p1!=head1&&p2!=head2){ } p1->data=p1->data+z;p1->data=p1->data+z;if(p1->data>=p2->data){ } else { } e=10000+p1->data-p2->data;ListInsert(head3,0,e);z=-1;e=p1->data-p2->data;ListInsert(head3,0,e);p1=p1->prior;p2=p2->prior;z=0;p1=p1->prior;p2=p2->prior;while(p1!=head1){ e=p1->data; ListInsert(head3,0,e); p1=p1->prior;} else if(x==1){ p2=head1->prior;while(p1!=head2&&p2!=head1){ } p1->data=p1->data+z;p1->data=p1->data+z;if(p1->data>=p2->data){ } else { } e=10000+p1->data-p2->data;ListInsert(head3,0,e);z=-1;e=p1->data-p2->data;ListInsert(head3,0,e);p1=p1->prior;p2=p2->prior;z=0;p1=head2->prior;} p1=p1->prior;p2=p2->prior;while(p1!=head2){ e=p1->data;p1=p1->prior;ListInsert(head3,0,e);} head3->next->data=-1*head3->next->data;} else { } } head3->next->data=0;此函數(shù)實現(xiàn)的是兩個正數(shù)的減法運算。整個函數(shù)分為倆大部分,第一部分處理第一個數(shù)大于第二個數(shù),第而部分是處理第二個數(shù)大于第一個數(shù)。在這個為題上我自己想了好長 時間,感覺倆部分可以 結合成一部分,但是由于本人的知識所限沒有想出更好的辦法,這使得代碼量增加了足足一倍之多。仍然模仿手算減法,先找到倆數(shù)字中最大的那個,用大的減去小的。最后判斷符號位。12.整合八種情況函數(shù): void yunsuan(DLNode *head1,DLNode *head2,DLNode *head3,char ch){ DLNode *p1,*p2;p1=head1->next;p2=head2->next;if(head1->data==1&&head2->data==1){ } else if(head1->data==1&&head2->data==0){ } else if(head1->data==0&&head2->data==1){ } if(ch=='+'){ } else { } head1->next->data*=-1;head2->next->data*=-1;add(head1,head2,head3);head3->next->data*=-1;head1->next->data*=-1;minus(head2,head1,head3);if(ch=='+'){ } else { } head2->next->data*=-1;add(head1,head2,head3);head2->next->data*=-1;minus(head1,head2,head3);if(ch=='+')add(head1,head2,head3);else minus(head1,head2,head3); else { } } 此函數(shù)實現(xiàn)的是八種情況的整合。八種情況分別是正數(shù)加正數(shù)、正數(shù)加負數(shù)、正數(shù)減正數(shù)、正數(shù)減負數(shù)、負數(shù)加負數(shù)、負數(shù)加正數(shù)、負數(shù)減正數(shù)、負數(shù)減負數(shù)。此函數(shù)調(diào)用已經(jīng)做好的正數(shù)加正數(shù)和正數(shù)減正數(shù)函數(shù)判斷符號位,根據(jù)一定的規(guī)則實現(xiàn)八種運算。if(ch=='+'){ } { } head1->next->data*=-1;head2->next->data*=-1;minus(head2,head1,head3);head1->next->data*=-1;head2->next->data*=-1;add(head1,head2,head3);head3->next->data*=-1;else 13.整合乘法運算函數(shù): void chengfa(DLNode *head1,DLNode *head2){ int i;if((head1->next->data*head2->next->data)<0){ } else { } } 此函數(shù)實現(xiàn)的是乘法運算的完整運算。調(diào)用已經(jīng)實現(xiàn)的正數(shù)乘以正數(shù)的函數(shù)來計算函數(shù)值,在判斷最head1->next->data=abs(head1->next->data);head2->next->data=abs(head2->next->data);i=1;method(head1,head2,i);head1->next->data=abs(head1->next->data);head2->next->data=abs(head2->next->data);i=0;method(head1,head2,i); 終的函數(shù)符號,得到最和的結果。 14.主函數(shù): void main(){ } 此函數(shù)是主函數(shù)。主要的作用是為用戶做一個提示,如何完成自己想要的運算。同時調(diào)用各個函數(shù)實現(xiàn)運算。char ch,ch1;while(1){ } //int w=-1;DLNode *a,*b,*c;ListInitiate(&a);ListInitiate(&b);ListInitiate(&c);printf(“請輸入數(shù)A(以分號結束):”);InputNumber(a);//printf(“n”);printf(“請輸入數(shù)B(以分號結束):”);InputNumber(b);//w=change(a,b);printf(“請選擇操作符:<+,-,*>:n”);scanf(“%s”,&ch1);if(ch1=='+'||ch1=='-'){ } else if(ch1=='*')chengfa(a,b);else printf(“此版本不支持%c運算”,ch1);printf(“要繼續(xù)嗎?(y/n):”);scanf(“%s”,&ch);if(ch=='Y'||ch=='y'){ } else exit(0);printf(“n”);continue;yunsuan(a,b,c,ch1);OutputNumber(c,1); 三、調(diào)試分析 1.調(diào)試過程中遇到的問題 在函數(shù)編寫之前我首先寫出了所有函數(shù)的框架以及各個函數(shù)之間的關系,根據(jù)逐步求精的思想來完善整個程序。即使是這樣我仍然遇到了不少錯誤。 例如:在實現(xiàn)正數(shù)減正數(shù)時,我一開始沒有分為以上所說的倆個部分,而是把倆個部分整合到一起實現(xiàn)一個大函數(shù),但是在我運行調(diào)試時結果大不如人意,出現(xiàn)的都是匪夷所思的數(shù)字,我根本就推算不出這些數(shù)字是怎么來的。沒有辦法我只好在另辟途徑來完成函數(shù)的實現(xiàn)。于是我就分作兩個部分來實現(xiàn),這樣逐步追蹤可以使思緒更加清晰,所付出的代價是代碼量增加。 四、使用說明和測試結果 1.使用說明 用戶在使用該程序時,只需按照程序中的規(guī)定進行即可實現(xiàn)長整數(shù)的加減運算,具體使用步驟如下: 1)點擊運行按鈕,在DOS窗口下按照規(guī)定輸入的數(shù)字需要從低位開始數(shù)四位一組用逗號隔開。輸入第一個數(shù)字。2)同上輸入第二個數(shù); 3)選擇要對這兩個長整數(shù)進行的運算。 4)兩個操作數(shù)與運算符選擇完畢后,按回車鍵即可得到運算結果。2.測試結果 1)考慮邊界數(shù)字,輸入0和0做加法運算,輸出“0”,結果如下圖: 2)考慮加法進位(包括低位向高位的進位以及高位仍有進位情況),結果如下圖: 3)考慮減法進位并且數(shù)A小于數(shù)B以及數(shù)A大于數(shù)B,結果如下圖: 4)乘法結果為正數(shù)以及負數(shù)兩種情況,結果如下圖: 5)本試驗要求的數(shù)據(jù) 0、0; 輸出“0”(已證明) 2345,6789、-7654,3211; 輸出“1,0000,0000” 1,0000,0000,0000、9999,9999; 輸出“9999,0000,0001” 1,0001,0001、;1,0001,0001; 輸出“0” 五、心得體會 本次試驗是我感覺到了理論應用與實踐的意義,以前我們也做過類似的題目,所以在試驗中我感覺還是比較順利的但是還是花了我十七個小時左右才完成。根據(jù)模塊化思想來把握整體結構會使自己的思路更加清晰,更加明了。得到的東西往往是說不出來的只有自己心理面最清楚。 六、附錄 程序的完整代碼清單: #include int data;struct Node *prior;struct Node *next;}DLNode;void ListInitiate(DLNode **head)//雙向鏈表的初始化 { if((*head=(DLNode *)malloc(sizeof(DLNode)))==NULL)exit(0);(*head)->prior=*head; } int ListLength(DLNode *head)//雙向鏈表的表長 { } int ListInsert(DLNode *head,int i,int x)//雙向鏈表的數(shù)據(jù)插入,i表示是插入的第幾個元素 { } int abs(int x){ if(x<0)return-x;DLNode *p,*s;int j;p=head->next;j=0;while(p!=head&&j } if(j!=i){ } if((s=(DLNode *)malloc(sizeof(DLNode)))==NULL)exit(0);s->data=x;s->prior=p->prior;//插入 p->prior->next=s;s->next=p;p->prior=s;return 1;printf(“n插入位置不合法!”);return 0;p=p->next;j++;DLNode *p=head;int size=0;while(p->next!=head){ } p=p->next;size++;(*head)->next=*head;return size; } int InputNumber(DLNode *head)//讀入輸入的數(shù)據(jù) { } void OutputNumber(DLNode *head,int sign)//從表尾輸出數(shù)據(jù)元素 { DLNode *r=head->next;while(r->data==0&&r!=head->prior){ r=r->next;int input,i=0;//第i個節(jié)點 char c;scanf(“%d%c”,&input,&c);while(1){ } return 1;if(input<0&&i==0)//輸入數(shù)為負且是第一個節(jié)點 { } else if(input>=0&&i==0)//輸入數(shù)為正且是第一個節(jié)點 { } else { } i++;if(c==';')break;//遇到數(shù)據(jù)輸入完成標志,跳出循環(huán) scanf(“%d%c”,&input,&c);if(head->next->data>=0){ } //input=-1*input;ListInsert(head,i,input);ListInsert(head,i,input);//非第一個節(jié)點 else head->data=1;//將長整數(shù)的符號保存在頭結點中 ListInsert(head,i,input);//插入數(shù)據(jù) head->data=0;//將長整數(shù)的符號保存在頭結點中 //input=abs(input);//取輸入數(shù)字的絕對值 ListInsert(head,i,input);//插入數(shù)據(jù) else return x; } void add(DLNode *head1,DLNode *head2,DLNode *head3){ int z=0;int e;DLNode *p1,*p2;} if(sign==1){ } else { } printf(“%d”,r->data);r=r->next;while(r!=head){ } printf(“n”); if(r->data<10){ } else if(r->data<100){ } else if(r->data<1000){ } else { } r=r->next; printf(“,%d”,r->data);printf(“,0”);printf(“%d”,r->data); printf(“,00”);printf(“%d”,r->data);printf(“,000”);printf(“%d”,r->data);printf(“結果是:-”);printf(“結果是:”); p1=head1->prior;p2=head2->prior;while(p1!=head1&&p2!=head2) if(p1==head1&&p2!=head2){ while(p2!=head2){ e=p2->data+z;if(e>=10000){ } else z=0;ListInsert(head3,0,e);p2=p2->prior;z=1;e=e%10000;{ e=p1->data+p2->data+z; } if(e>=10000){ } else z=0;ListInsert(head3,0,e);p1=p1->prior;p2=p2->prior;z=1;e=e%10000;} if(z==1)ListInsert(head3,0,z);} else if(p1!=head1&&p2==head2){ while(p1!=head1){ e=p1->data+z; if(e>=10000){ } z=1;e=e%10000;else z=0;p1=p1->prior;ListInsert(head3,0,e);} if(z==1)ListInsert(head3,0,z);} else{ } int change(DLNode *head1,DLNode *head2){ int length1,length2,r=2;length1=ListLength(head1);DLNode *p1,*p2;p1=head1->next;p2=head2->next;if(length1>length2){ } else if(length1 } else { int i=0;for(i=0;i if(p1->data>p2->data){ } else if(p2->data>p1->data){ } else { p1=p1->next;p2=p2->next;r=1;return r;break;r=0;return r;break;r=1;return r;r=0;return r;if(z==1)ListInsert(head3,0,z);} length2=ListLength(head2); } void method(DLNode *head1,DLNode *head2,int x){ void minus(DLNode *head1,DLNode *head2,DLNode *head3);DLNode *temp1;DLNode *temp2;DLNode *temp3;DLNode *temp4;DLNode *temp5;int e,z=0,i,j;ListInitiate(&temp1);ListInitiate(&temp2);ListInitiate(&temp3);ListInsert(temp2,0,0);DLNode *p1,*p2;p1=head1->prior;p2=head2->prior;for(i=0;i while(p1!=head1){ } if(z!=0)ListInsert(temp1,0,z);for(j=0;j } else z=0;ListInsert(temp1,0,e);p1=p1->prior;z=e/10000;e=e-z*10000;ListInitiate(&temp4);ListInsert(temp4,0,0);ListInitiate(&temp5); } return r; } } r=2; } void minus(DLNode *head1,DLNode *head2,DLNode *head3){ int z=0,x=-1;int e;DLNode *p1,*p2;p1=head1->prior;p2=head2->prior;x=change(head1,head2);if(x==0){ while(p1!=head1&&p2!=head2){ } p1->data=p1->data+z;p1->data=p1->data+z;if(p1->data>=p2->data){ } else { } e=10000+p1->data-p2->data;ListInsert(head3,0,e);z=-1;e=p1->data-p2->data;ListInsert(head3,0,e);p1=p1->prior;p2=p2->prior;z=0; add(temp1,temp2,temp3);temp1=temp4;temp2=temp3;temp3=temp5;z=0;p1=head1->prior;p2=p2->prior;}OutputNumber(temp2,x);p1=p1->prior;p2=p2->prior;while(p1!=head1){ e=p1->data;p1=p1->prior;ListInsert(head3,0,e);} } } void yunsuan(DLNode *head1,DLNode *head2,DLNode *head3,char ch){ DLNode *p1,*p2;p1=head1->next;p2=head2->next;if(head1->data==1&&head2->data==1)else if(x==1){ p2=head1->prior;while(p1!=head2&&p2!=head1){ } p1->data=p1->data+z;p1->data=p1->data+z;if(p1->data>=p2->data){ } else { } e=10000+p1->data-p2->data;ListInsert(head3,0,e);z=-1;e=p1->data-p2->data;ListInsert(head3,0,e);p1=p1->prior;p2=p2->prior;z=0;p1=head2->prior;p1=p1->prior;p2=p2->prior;while(p1!=head2){ e=p1->data;p1=p1->prior;ListInsert(head3,0,e);} head3->next->data=-1*head3->next->data;} else { } head3->next->data=0; { } else if(head1->data==1&&head2->data==0){ } else if(head1->data==0&&head2->data==1){ } else { if(ch=='+'){ } { head1->next->data*=-1;head1->next->data*=-1;head2->next->data*=-1;add(head1,head2,head3);head3->next->data*=-1;if(ch=='+'){ } else { } head1->next->data*=-1;head2->next->data*=-1;add(head1,head2,head3);head3->next->data*=-1;head1->next->data*=-1;minus(head2,head1,head3);if(ch=='+'){ } else { } head2->next->data*=-1;add(head1,head2,head3);head2->next->data*=-1;minus(head1,head2,head3);if(ch=='+')add(head1,head2,head3);else minus(head1,head2,head3);else } void chengfa(DLNode *head1,DLNode *head2){ } void main(){ char ch,ch1;while(1){ //int w=-1;DLNode *a,*b,*c;ListInitiate(&a);ListInitiate(&b);ListInitiate(&c);printf(“請輸入數(shù)A(以分號結束):”);InputNumber(a);//printf(“n”);printf(“請輸入數(shù)B(以分號結束):”);InputNumber(b);//w=change(a,b);printf(“請選擇操作符:<+,-,*>:n”);scanf(“%s”,&ch1);if(ch1=='+'||ch1=='-'){ yunsuan(a,b,c,ch1);int i;if((head1->next->data*head2->next->data)<0){ } else { } head1->next->data=abs(head1->next->data);head2->next->data=abs(head2->next->data);i=1;method(head1,head2,i);head1->next->data=abs(head1->next->data);head2->next->data=abs(head2->next->data);i=0;method(head1,head2,i); } } head2->next->data*=-1;minus(head2,head1,head3); } } } else if(ch1=='*')chengfa(a,b);else printf(“此版本不支持%c運算”,ch1);printf(“要繼續(xù)嗎?(y/n):”);scanf(“%s”,&ch);if(ch=='Y'||ch=='y'){ } else exit(0);printf(“n”);continue;OutputNumber(c,1); 一、需求分析 設計一個實現(xiàn)任意長的整數(shù)間進行四則運算的程序,要求完成長整數(shù)的加、減運算,乘除運算可選做。在這里長整數(shù)沒有范圍限制,可任意長。運算后的進位、借位等都要進行正確處理,可實現(xiàn)動態(tài)的輸入,實時的輸出。 測試數(shù)據(jù):0、0; 輸出“0” 2345,6789、-7654,3211; 輸出“1,0000,0000” 1,0000,0000,0000、9999,9999; 輸出“9999,0000,0001” 1,0001,0001、;1,0001,0001; 輸出“0” 自選數(shù)據(jù):1,1111;1,1111 輸出“0” 二、概要設計 1、數(shù)據(jù)結構 利用雙向循環(huán)鏈表來實現(xiàn)對長整數(shù)的存儲。 選擇該數(shù)據(jù)結構來完成長整數(shù)的加減運算是因為 a.要對長整數(shù)進行運算,需要對長整數(shù)進行存儲,選擇用鏈表對長整數(shù)存儲。b.存儲的順序是從左到右,運算的順序則是從右到左,為操作方便選擇循環(huán)鏈表。 c.在運算過程中有進位和借位的操作。 2、使用算法 定義雙向循環(huán)鏈表,存儲數(shù)據(jù),進行計算。(默認較長的數(shù)作為被加數(shù)、被減數(shù)) 三、詳細設計 typedef struct DoubleNode //定義鏈表元素 void InitNode(DLNode **head)//初始化鏈表 int InsertNode(DLNode *head,int n,DataType x)//向鏈表第N個位置插入元素X int digit(int n)//判斷整數(shù)N有幾位 void PrintNode(DLNode *head)//打印鏈表 void DestroyNode(DLNode **head)//銷毀鏈表 void add(DLNode *h1,DLNode *h2)//兩數(shù)相加 void jian(DLNode *h1,DLNode *h2)//兩數(shù)相減 int main()//入口函數(shù) 四、調(diào)試分析 由于在程序設計時,對于指針的不了解,編程時使用雙重指針,無形中給自己增添了更多麻煩。老師在檢查的過程中指出并教導了這一點。 五、測試結果 1、輸入0和0做加法運算,輸出“0”,結果如下圖: 2、輸入2345,6789和-7654,3211做減法運算,輸出“1,0000,0000”,結果如下圖: 3、輸入1,0000,0000,0000和9999,9999做減法運算,輸出“9999,0000,0001”,結果如下圖: 4、輸入1,0001,0001和1,0001,0001做減法運算,輸出“0”,結果如下圖: 5、輸入1,1111和1,1111做減法運算,輸出“0”結果如下圖: 六、心得體會 本次實驗主要是針對雙向鏈表的練習,通過這次試驗我們大家對于雙向循環(huán)鏈表有了更深刻的記憶。另在講解的過程中,老師指出了我們在編程中存在的不足點,我們對于指針跟雙重指針有了更清晰的認識。在與同學的交流中,也更清楚的認清了 自己的不足,以后會更加努力的。 七、附錄 #include printf(“0”);printf(“%d”,p->data);p=p->next;} printf(“n”);} void DestroyNode(DLNode **head){ DLNode *p,*p1;p=(*head)->next;while(p!=*head){ p1=p;p=p->next;free(p1);} free(p);head=NULL;} void add(DLNode *h1,DLNode *h2)//兩數(shù)相加 { DLNode *p1=h1->prior,*p2=h2->prior;while(p1!=h1&&p2!=h2)//每個鏈表元素相加 { p1->data+=p2->data;p1=p1->prior;p2=p2->prior;} p1=h1->prior;while(p1!=h1->next)//處理鏈表元素 { if(p1->data>=10000){ p1->prior->data+=p1->data/10000;p1->data%=10000;} if(p1->data<0)//處理負數(shù) { if(h1->next!=0){ p1->prior->data-=1;p1->data+=10000;} } p1=p1->prior;} if(h1->next->data>=10000)//處理最前面的數(shù) { InsertNode(h1,0,h1->next->data/10000);h1->next->next->data%=10000;} if(h1->data<=-10000){ InsertNode(h1,0,h1->next->data/10000);h1->next->next->data%=-10000;} PrintNode(h1);} void jian(DLNode *h1,DLNode *h2)//兩數(shù)相減 { DLNode *p1=h1->prior,*p2=h2->prior;while(p1!=h1&&p2!=h2)//每個鏈表元素相減 { p1->data-=p2->data;p1=p1->prior;p2=p2->prior;} p1=h1->prior;while(p1!=h1->next)//處理鏈表元素 { if(p1->data>=10000){ p1->prior->data+=p1->data/10000;p1->data%=10000;} if(p1->data<0)//處理負數(shù) { if(h1->next!=0){ p1->prior->data-=1;p1->data+=10000;} } p1=p1->prior;} if(h1->next->data>=10000)//處理最前面的數(shù) { InsertNode(h1,0,h1->next->data/10000);h1->next->next->data%=10000;} if(h1->data<=-10000){ InsertNode(h1,0,h1->next->data/-10000);h1->next->next->data%=-10000;} PrintNode(h1);} int main()//入口函數(shù) { DLNode *head1,*head2;InitNode(&head1);InitNode(&head2);char data1[N],data2[N];char d1[10],d2[10];int i,j,k;int xun;while(1){ printf(“輸入數(shù)據(jù):n”);scanf(“%s %s”,data1,data2);InitNode(&head1);InitNode(&head2);i=0;k=0;while(data1[i]!=';')//將數(shù)1用鏈表儲存 { for(j=0;j<10;j++)d1[j]=0;j=0;while(data1[i]!=';'&&data1[i]!=',')d1[j++]=data1[i++];if(data1[i]==',')i++;if(data1[0]=='-')//處理正負數(shù) j=-(int)fabs(atoi(d1));//將字符串轉換成整數(shù) else j=atoi(d1);InsertNode(head1,k++,j);} i=0;k=0;while(data2[i]!=';')//將數(shù)2用鏈表儲存 { for(j=0;j<10;j++) d2[j]=0;j=0;while(data2[i]!=';'&&data2[i]!=',')d2[j++]=data2[i++];if(data2[i]==',')i++;if(data2[0]=='-')//處理正負數(shù) j=-(int)fabs(atoi(d2));else j=atoi(d2);InsertNode(head2,k++,j);} printf(“選擇加減法:1—加法,2-減法n”);scanf(“%d”,&xun);switch(xun){ case 1:if(strlen(data1)>strlen(data2))//較長的數(shù)作為被加數(shù) add(head1,head2);else add(head2,head1);break;case 2:if(strlen(data1)>strlen(data2))//較長的數(shù)作為被減數(shù) jian(head1,head2);else jian(head2,head1);break;default:break;} DestroyNode(&head1);DestroyNode(&head2);} return 0;} 《加減混合運算》教學設計 陜西省平利縣城關鎮(zhèn)小學 殷詩英 教學設想 根據(jù)小學生的特點在課的開始就運用情境導入新課喚起學 生的興趣激發(fā)學生的學習積極性再通過生活中具體的例子讓學生 觀察問題發(fā)現(xiàn)問題解決問題 這樣教學既尊重學生的選擇又能 達到教學目的體現(xiàn)了學生的主體地位, 最后讓學生進一步解決生活 中的問題把數(shù)學和實際生活聯(lián)系起來既運用了新知識解決實際問 題又體現(xiàn)了新《課標》的精神。 教材分析 本節(jié)內(nèi)容是學生學習了100以內(nèi)連加連減的基礎上教學 的教材安排了一個學生們生活中常見的公共汽車5路車停 在站點有乘客上車有乘客下車的情景為主題的加減混 合運算內(nèi)容包括“做一做”兩道練習都是對加減混合運算 的鞏固。本節(jié)內(nèi)容是以一幅情景圖反映數(shù)學問題有利于學 生將數(shù)學知識和生活實際結合起來并在生活中發(fā)現(xiàn)問題 解決問題從而發(fā)展學生解決問題的能力。 教學目標 1.掌握兩位數(shù)加減混合運算的豎式書寫方法能夠運用所 學的100以內(nèi)的減法知識解決生活中的一些簡單的實 際問題。 2.培養(yǎng)學生自學能力和嘗試精神。 3.通過創(chuàng)設生活化的情境使學生感受到數(shù)學與生活的密 切聯(lián)系。培養(yǎng)學生的數(shù)學情感和團結協(xié)作的好品質。 教學重點難點看懂圖意并能正確表達 教學方法情景設置導入法 小組合作交流和練習指導法 多媒體展示輔助教學法。 教學準備自制多媒體課件 教學手段多媒體課件 學習方式自主探索和小組合作交流相結合教學過程 一 情景導入多媒體展示 1小朋友幫老爺爺收西瓜圖 師提問看圖說說圖意你想提出什么數(shù)學問題呢怎樣解決 同桌交流解決方法。 匯報交流結果。說出這道題用連加計算 鞏固連加豎式計算方法。學生板演。 2老爺爺運西瓜圖 讓學生看圖提問老爺爺收了那么多西瓜準備怎么處理呢說說你看圖發(fā)現(xiàn)了那些數(shù)學信息猜猜老爺爺想讓我們幫他要解決什么問 題呢 學生討論解決問題的方法。 匯報交流。怎樣列式怎樣計算呢和前面的題比較一下說說這個 是用連減來解決的。 二 探究體驗 課件出示公共汽車停在站點情景圖。有乘客上車有乘客下 車 2引導學生仔細觀察說說你知道了什么你還想知道什么根 據(jù)學生回答師出示有關數(shù)據(jù) 引導學生根據(jù)看到的情景提出有關的數(shù)學問題。引導學生列出加減混合運算式 思考要想知道現(xiàn)在車上有多少人該怎樣列式 生說師板書67-25+28 67+28-25 5請學生說說列式的理由。讓學生弄清楚要求車上現(xiàn)在有多少人 就是要從原來車上的67人去掉下車的25人還要把上車的28人加 上揭示本節(jié)課題“加減混合運算” 引導學生探究加減混合算式的豎式計算方法。借助前面學過的連減計算方法類推出算是67-25+28的豎式寫法。同桌交流 師巡視指導點撥 組織全班交流計算方法方法讓學生自己選擇喜歡哪一種就用哪 一種師指導豎式計算。小結這節(jié)課我們學會了什么以后遇到這樣的問題我們能用我 們所學的數(shù)學知識來解決嗎 三 實踐應用 1組織學生完成第28頁“做一做” 兩名板演 56+34-20 78-24+39 生獨立完成集體訂正練習五 5題看誰算的又對又快 3奪紅旗游戲分小組每個成員依次按順序計算出結果看哪個小 組完成的又對又快 四 布置作業(yè) 練習五7題 板書設計 加減混合運算 67-25+28 67+28-25 通過這次“國培計劃”遠程項目的培訓,使我提高了認識,理清了思路,學到了新的教學理念,找到了自身的差距和不足。下面是小編整理的國培學習心得心得體會范文,歡迎借鑒!2016年國培學習心得體會一 在金秋十月,我有幸參加了國培計劃農(nóng)村骨干教師培訓學習。首先我要感謝領導給了我這個普通的小學數(shù)學教師這樣一個難得的學習機會,這次培訓給我留 下了深刻的印象?!坝癫蛔粒怀善?。人不學,不知禮?!边@次培訓收獲最大的是前輩們對我思想上的沖擊。每天的感覺是幸福而又充實的,因為每一天都要面對不 同風格的名師,每一天都能聽到不同類型的講座,每一天都能感受到思想火花的沖擊。 目前全方位的新課程改革很多時候讓我們無所適從,我們很多時候感到茫然,感到束手無策,而這次培訓學習猶如為我們打開了一扇窗,撥云見日,使我在一次次的感悟中豁然開朗。 綜觀目前我的教學,最注重的似乎就是學生的學習成績,簡單的說就是學生的考試分數(shù),它就是我們教師的生命。于是整天圍著學生轉,課內(nèi)效益不高,就利用課外補,花了大量時間,出現(xiàn)了學生累我更累的局面。 反思我的課堂,忽視了學生的心理特點和已有的數(shù)學經(jīng)驗。常常以成人的眼光審視嚴謹系統(tǒng)的數(shù)學,并以自己多年習慣了的教學方式將數(shù)學“成人化”地呈現(xiàn)在孩子們面前。 如何使我們的數(shù)學課堂愈發(fā)顯得真實、自然、厚重而又充滿著人情味,作為數(shù)學老師的我更要關注的是蘊藏在數(shù)學課堂中那些只可意會、不可言傳,只有身臨其境的教 師和孩子們才能分享的東西,要關注那些伴隨著師生共同進行的探究、交流所衍生的積極的情感體驗。我們不但要傳授知識,而且要善于以自身的智慧不斷喚醒孩子 們的學習熱情,點化孩子們的學習方法,豐富孩子們的學習經(jīng)驗,開啟孩子們的學習智慧。讓我們行動起來,做一位有心的“烹飪師”,讓每一節(jié)數(shù)學課都成為孩子 們“既好吃又有營養(yǎng)”的“數(shù)學大餐”! 此外,我還認識到:一節(jié)好的數(shù)學課,新在理念、巧在設計、贏在實踐、成在后續(xù)。一節(jié)好的數(shù)學課,要 做到兩個關注:一是:關注學生,從學生的實際出發(fā),關注學生的情感需求和認知需求,關注學生的已有的知識基礎和生活經(jīng)驗……是一節(jié)成功課堂的必要基礎。二 是:關注數(shù)學:抓住數(shù)學的本質進行教學,注重數(shù)學思維方法的滲透,讓學生在觀察、操作、推理、驗證的過程中有機會經(jīng)歷數(shù)學化的學習過程,使學生真正體驗到 數(shù)學,樂學、愛學數(shù)學。此外,我認識到:一節(jié)好的數(shù)學課,不要有“做秀”情結,提倡“簡潔而深刻、清新而厚重”的教學風格,展現(xiàn)思維力度,關注數(shù)學方法,體現(xiàn)數(shù)學課的靈魂,使數(shù)學課上出“數(shù)學味”!而教師的“裝糊涂、留空間”也是一種教學的智慧和方法。 我突然感到自己身上的壓力變大了,要 想不被淘汰出局,要想最終成為一名合格的骨干教師,就要更努力地提高自身的業(yè)務素質、理論水平、教育科研能力、課堂教學能力等。我覺得我還是一個小學生,要學的東西還很多,和新老師一樣,不能因為自己新而原諒自己教育教學上的不足,因為對學生來說小學教育也只有一次。而這就需要我付出更多的時間和精力,努 力學習各種教育理論,并勇于到課堂上去實踐,及時對自己的教育教學進行反思、調(diào)控我相信通過自己的不斷努力會有所收獲,有所感悟的。 在以后的教學中,我要做的是: 第一,自我反思。從以往的實踐中總結經(jīng)驗得失。 第二,不斷學習。讀萬卷書,行萬里路,讀書是提高自我素養(yǎng)的良好基奠。一桶水早已不能滿足學生的需求了,我要不斷學習,成為長流水。 第三,交流。他人直言不諱的意見與建議可能是發(fā)現(xiàn)不足、認識“廬山真面目”的有效途徑。要聽真言,要想聽真言,更要會聽真言,久而久之對我大有裨益。 百年大計,教育為本。教育大計,教師為本。我們必須是著眼于未來,采取科學的方法應對隨時出現(xiàn)的新問題,努力使自己適應新時代的教育。在今后的工作中還必須給自己定好位,必須走“學習——反思——研究——實踐”相結合的專業(yè)發(fā)展之路。 這次培訓讓我受益匪淺,感謝吉林省教育學院為我們提供這么好的學習空間,感謝“國培”為我們提供這么難得的學習機會,促使我在教育生涯的軌道上大步前進!2016年國培學習心得體會二 20xx年8月11日——8月21日,我有幸參加“國培計劃(2014)為期10天的培訓。重新回到校園學習,是一種全新的生活和體驗,與以往每天周而復始的繁瑣的工作相比,突然有一種別樣的感覺,每天有規(guī)律地學習、生活,洗去了我身上的浮躁,讓我回歸本真,靜心學習,潛心研修。 學習期間,讓我感受最深的是國家對學前教育的前所未有的重視,基于此,我才能有幸成為“國培計劃”的直接受益者,通過學習,我深深地感受到學前教育面臨的機遇與挑戰(zhàn)。20xx年7月,國務院頒布了《國家中長期教育改革和發(fā)展規(guī)劃綱要(20xx-20xx年)》,對新時期推動教育事業(yè)科學發(fā)展進行了戰(zhàn)略部署,描繪了未來教育改革發(fā)展的藍圖,為未來10年教育改革發(fā)展指明了方向。《規(guī)劃綱要》第一次專章部署了學前教育,突顯了國家對發(fā)展學前教育的高度重視,我深深地感受到自己肩負的壓力和使命,國家對我們的大力培養(yǎng),是讓我們通過專家引領和自主研修,達到自我成長,并學以致用,成為農(nóng)村學前教育改革和發(fā)展的開拓者、成為幼兒教師發(fā)展的引領者、成為教學和科研的示范者。面對這樣的使命,我不敢有絲毫的懈怠,抓緊每一分鐘的時間,努力地學習和思考,學習快要結束了,十天的培訓學習,讓我重新接受了一次系統(tǒng)的理論學習和專業(yè)提升的機會,我覺得自己的收獲是沉甸甸的。 培訓期間,師范學校的領導精心設計了豐富的學習內(nèi)容:我首先聆聽了賀紅山老師對《3——6歲兒童學習與發(fā)展指南》的詳細解讀,使《指南》中的那些平凡的文字都鮮活起來,讓我感到《指南》中的每一個字都值得認真去推敲和琢磨,也深刻感受到《指南》對幼教工作者重要的指導意義。特別是使我對幼兒園一日活動皆課程的含義有了更深的理解,讓我對自己原有的幼兒園課程的理解重新定位,幼兒園的課程不光包含集體、分組的教學活動、區(qū)域活動和游戲活動,幼兒在園的一日生活也是幼兒園課程的重要組成部分。賀紅山老師的《讓幼兒在與環(huán)境的對話中成長》講座,讓我對由環(huán)境生成課程、由課程創(chuàng)設環(huán)境、透過環(huán)境,看到孩子的學習過程有了更深的理解。雷曉芳老師的《一日生活活動與幼兒發(fā)展》講座,指導我在對觀摩幼兒園的一日生活活動時,有了理論的支撐,培訓學習更有的放矢。周利文和龍曉玲、楊卡佳三位一線園長的講座,更是獲益匪淺,周利文園長重點以科學領域為例講述了《集體教學活動設計與幼兒發(fā)展》,雖說說的都是大學學過的,但在面對老師提出的種種刁難的疑問,她的回答充分體現(xiàn)出她理論與實踐扎實的功底及個人深厚的內(nèi)涵、氣度,讓人心悅誠服。龍曉玲園長的《傳統(tǒng)游戲的現(xiàn)場教學》讓我在歡樂而輕松的音樂游戲中掌握了幼兒園音樂教育活動的設計與實施,音樂活動組織要點,明白了老師要充分激起幼兒的興趣,讓他們在活動中體驗到不斷攀升帶來的巨大愉悅。楊卡佳園長的《模范教師師德報告》講座使我對幼師的神圣的使命有了更深一步的認識,讓我對模范教師們肅然起勁,同時對于社會的認可感到深深的欣慰。唐烈瓊老師的講座,為我的幼兒園游戲教學問題與對策提供了理論的支撐和指導,進一步夯實了自己的幼教理論基礎,有效提升自己對幼兒園教學活動、區(qū)域活動的組織能力。而由長師送的兩個現(xiàn)場觀摩課《勺子哈哈鏡》、《圈圈魔術師》更是讓我對老師的激情和課堂把控能力深深震撼,她們表情之豐富,語言語氣之多變,動作夸張,無不彰顯著她們的智慧。還有許許多多讓我受益良多的東西,專家們精湛的理論知識,先進的理念和獨特的設計給我留下了深刻的印象,在情感的熏陶和思想的洗禮中努力實現(xiàn)著培訓學習與工作實踐的有效對接,將專家經(jīng)驗和自身所學有機結合,豐富了自己的專業(yè)知識,提高自身的綜合素質。 作為一名幼兒教師,我將會把這次培訓的所想、所得、所思融入今后的工作中,這既是學用結合的要求,也是自己肩負的責任。自己唯有進一步修心—修行—修能,才能真正做一名學以致用的實踐者、先進幼教理論的傳播者、教師專業(yè)成長的引領者。感謝這難得的培訓,感謝培訓專家的付出,使自己受益匪淺,啟迪良多,這是自己在幼教知識儲備上的又一次空中加油!2016年國培學習心得體會三 通過這次“國培計劃”遠程項目的培訓,使我提高了認識,理清了思路,學到了新的教學理念,找到了自身的差距和不足。我從中學習到了很多知識,而且在國培計劃中有幸傾聽了眾多專家和學者的精彩講解,使我對教學有了更多新的認識。 經(jīng)過這次的培訓令我感觸很大,下面將談談我的一些感受: 本次培訓給我許多思考,深刻的體會到自己有很多東西要去學習。怎樣成為一個受歡迎的數(shù)學老師呢?怎樣才能在教學過程中給學生營造一個良好的氛圍,建立平等、民主、信任的新型師生關系?怎樣才能……?我認為要解決的問題還很多,還需要自己不斷的積累,不斷的去學習。 首先,教育學生,從愛出發(fā)。平等的愛,理解的愛,尊重的愛,信任的愛,這些都是老師愛的真諦。不論在生活上,還是在學習上,都要給予學生必要的關心和幫助。只要有了問題時及時處理,處理的方法得當,注意和學生溝通,學生就會信任你,喜歡你。愛學生,還表現(xiàn)在老師對學生的尊重和信任,以及對學生的嚴格要求,又要注意對學生的個體差異,區(qū)別對待。對成績比較差的學生,我們老師要采用不同的教育方法,因材施教。師愛要全面、公平。 其次,如何使我們的數(shù)學課堂愈發(fā)顯得真實、自然、厚重而又充滿著人情味,作為數(shù)學老師的我更要關注的是蘊藏在數(shù)學課堂中那些只可意會、不可言傳,只有身臨其境的教師和孩子們才能分享的東西,要關注那些伴隨著師生共同進行的探究、交流所衍生的積極的情感體驗。我們不但要傳授知識,而且要善于以自身的智慧不斷喚醒孩子們的學習熱情,點化孩子們的學習方法,豐富孩子們的學習經(jīng)驗,開啟孩子們的學習智慧。讓我們行動起來,做一位有心的“烹飪師”,讓每一節(jié)數(shù)學課都成為孩子們“既好吃又有營養(yǎng)”的“數(shù)學大餐”! 最后,我還認識到:一節(jié)好的數(shù)學課,新在理念、巧在設計、贏在實踐、成在后續(xù)。一節(jié)好的數(shù)學課,要做到兩個關注:一是:關注學生,從學生的實際出發(fā),關注學生的情感需求和認知需求,關注學生的已有的知識基礎和生活經(jīng)驗……是一節(jié)成功課堂的必要基礎。二是:關注數(shù)學:抓住數(shù)學的本質進行教學,注重數(shù)學思維方法的滲透,讓學生在觀察、操作、推理、驗證的過程中有機會經(jīng)歷數(shù)學化的學習過程,使學生真正體驗到數(shù)學,樂學、愛學數(shù)學。此外,我認識到:一節(jié)好的數(shù)學課,不要有“做秀”情結,提倡“簡潔而深刻、清新而厚重”的教學風格,展現(xiàn)思維力度,關注數(shù)學方法,體現(xiàn)數(shù)學課的靈魂,使數(shù)學課上出“數(shù)學味”!而教師的 “裝糊涂、留空間”也是一種教學的智慧和方法。 通過這些天的學習,我從中學到了很多,不僅拓寬了我的視野,還豐富了我的實踐經(jīng)驗,更讓我的思想得到了升華,使我對數(shù)學教學有了更新的認識,更加熱衷于教育事業(yè)。今后,我會更加努力學習,為教育事業(yè)貢獻自己的一份力量。 2016年國培學習心得體會四 通過這次的國培學習,不論是教育教學理論或業(yè)務水平都有一定的提高?;仡櫴畮啄甑慕虒W工作,不管別人怎么看,我只覺得自己做的問心無愧。 在 教育工作中,我深深體會到教師的工作是神圣的,也是艱苦的,需要付出大量的精力和情感。熱愛學生,致力于培養(yǎng)學生健全的人格和健康的心理,樹立他們的自尊 心和自信心,以“愛”為核心,無論是優(yōu)秀學生,還是后進生,我都細心關愛,倍加呵護,從欣賞開始,從稱贊入手,欣賞、稱贊學生的每一個細微處,激發(fā)他們高 尚的動機,而且自身對知識充滿熱忱,不斷求新成長。當今的教師應該具備以下素養(yǎng): 一、能科學地施教知識,深入學習教育學、心理學、教育方法等方面的知識,把教育理論的最新研究成果引入教學過程,使教育教學的科學性和藝術性高度完整地統(tǒng)一起來。 二、熟練掌握了現(xiàn)代教育技術的操作和應用。積極參加現(xiàn)代教育信息技術的培訓,能夠利用現(xiàn)代教育技術,恰當有效地選擇教學方法和方式,直觀形象地展示教學內(nèi)容,使教學知識傳授與創(chuàng)新思維結合起來,培養(yǎng)學生的創(chuàng)新精神和創(chuàng)新能力。我積極參加鎮(zhèn)級的現(xiàn)代教育信息技術操作大賽及課件制作比賽均獲一等獎。 三、有創(chuàng)新的精神。積極開展教育和科學研究,探索新的科學的教育模式,在耕耘中拓寬視野,在執(zhí)教中提煉師藝,升華師技。形成自己獨特的教學風格:我以通過抽象 思維和邏輯推理的訓練,培養(yǎng)學生的數(shù)學思想為目的,善于啟發(fā),分析細膩層次分明,注重解題思路的傳授和解題技巧的總結。 四、有愛心。我始 終認為:教師就必須用教師的職業(yè)的愛去對待每一個孩子,在孩子有困難時,在孩子做錯事時,在孩子得到進步時,作為教師才能一視同仁的對待,教師的愛就是滲 透在平時的點滴中,貫穿在孩子成長的每一個階段。教師不僅要有這種做人的威望,人格的力量,令學生所敬佩,還要以最佳的思想境界,精神狀態(tài)和行為表現(xiàn),積 極地影響和教育學生,使他們健康成長。正如奧地利教育哲學家馬丁.布貝爾所說:“教師只能以他的整個人,以他的全部自發(fā)性才足以對學生的整個人起真實的影 響”。教師應把言傳和身教完美結合起來,以身作則,行為示范;熱愛學生,關心學生,建立平等的師生關系;儀表端莊、舉止文雅,以自己的言行和人格魅力來影 響學生。 很長一段時間內(nèi)“沒有教不好的學生,只有不會教的教師”這個極端的教育口號像枷鎖一樣天天束縛著我,使我常常生活在自責和愧疚之 中,使我天天懷疑自己的教育教學能力,我真的就認為我就是那個不會教的教師,否則為什么會有部分學生不會學習呢。后來通過學習相關理論及多方面的實踐探索 請教我才知道,它只是一種浪漫主義的宣傳鼓勵口號,而絕不是評價教師工作的客觀標準。 教育是一項繁瑣的工作,在日復一日的教學生活中,面 對一些頑劣的學生,恨鐵不成鋼的心理會左右自己的情緒,另外過于看重學生成績,偏離了素質教育的軌道,有時候會茫然不知所從,不能坦然面對學生的錯誤,影 響了與學生感情上的溝通和交流,也是存在的問題。因此怎樣克服工作中的急躁情緒,尊重每一個孩子,真正做到蹲下來給學生說話,還需要在以后的工作中進行調(diào) 整。 總之,在今后的教育教學工作中,我會認真遵循“教書育人”的工作準則,把書教好, 整數(shù)簡便運算工程車人體的人特大號 教學目的 1、使學生進一步理解減法性質,加法運算定律,乘法運算定律,除法性質.2、通過復習整理,提高學生的計算能力,發(fā)展思維能力和思維靈活性,溝通知識間的聯(lián)系。 .教學重點:理解運算的性質和定律.教學難點:溝通知識間的聯(lián)系和發(fā)展思淮能力.7教學過程: 一、導入揭示課題。 二、復習整理: (一)、整理加減法的簡便運算。 1、出示: 734+98 56+78+44 (63+71)+29(1)、學生練習 (2)、說說簡算的依據(jù).(2)、隨生回答板書。 2、出示: 385-199 836-265-35 412-73-312(1)、學生獨立練習。 (2)、較對方法同上.(二)、整理乘除法的簡便運算。 1、出示: 25×26×4 139×125×8 (200+2)×36 148×25(1)、學生討論 (2)、學生匯報計算方法 (3)、說說你是根據(jù)什么道理? 2、隨生回答板書。 3、出示:2700÷25÷4 225÷25(1)、學生討論 (2)、匯報計算方法 (3)、為什么? 隨生回答板書。 三、鞏固提高。 1、出示:想一想:下列各題怎樣計算較簡便。374-(74+83) 27-59+58 102×236-236×2 8÷7+6÷7 28÷9-10÷9 2300÷4÷23 4500×25÷45(1)、學生討論 (2)、同組同學互說簡算的根據(jù).(3)、問:這些方法與什么運算定律或運算性質有聯(lián)系.2、隨生回答板。 四、作業(yè)(略).板書設計(略) 三、整數(shù)簡便運算的整理課的設計思路及教后摘記: (一)、設計思路:、本課是在學生學習了應用積、商不變性質簡便運算之后系統(tǒng)復習、整理整數(shù)的加減乘除法的簡便計算方法。以歸納、概括、疏理運算性質和運算定律,溝通知識間的聯(lián)系,發(fā)展學生思維能力為指導思想。、學過程的設計努力體現(xiàn)學生的主體地位。師生協(xié)作、同學間的合作的教學方法。努力開發(fā)學生的智力,為發(fā)展思維能力、提高計算能力、拓展學生的知識。 (二)、教后摘記: 1、從整堂課的完成情況來看,教學目標達成,教學思想得以體現(xiàn),教師在教學中只充當“朋友”的角色,創(chuàng)設了融洽和諧的師生關系和活躍的課堂氣氛。 2、教學中實施了小組討論教法,針對學生所提出的向題充分展開討論,激發(fā)引導學習小組積極討論,培養(yǎng)了學生良好的思維能力,以及積極的個性心理品質,以發(fā)展性、主休性、民主性的原則也得以體現(xiàn)。使學生在與其他人的交往過程中學到了巧妙的計算方法,也使自己的見解得到別人的認可,體驗到成功的樂趣,同時也培養(yǎng)了團結的精神。課題:整數(shù)加減法的簡便算法 教學內(nèi)容:加減法的運算規(guī)律及其應用 教學目標: 1、使學生初步認識加數(shù)和加數(shù)交換位置和不變,與從一個數(shù)里連續(xù)減去兩個數(shù),等于從這個數(shù)里減去兩個數(shù)的和的運算規(guī)律。 2、學會應用這種規(guī)律進行簡便計算。 3、培養(yǎng)學生分析、綜合和抽象的思維能力,以及合理、靈活地進行計算的能力。教學過程: 一、復習引新 1、口算 48+52= 237+63= 74+26= 85+15= 128+175+25= 64+78+36= 439+302= 2、引入新課。剛才我們用簡便方法,很快算出這些題的得數(shù),這節(jié)課我們繼續(xù)學習加減法的一些簡便算法。(板書課題)通過學習,要能步認識減法運算中的一些規(guī)律,并能應用這些規(guī)律進行簡便計算,進一步提高計算的能力。 二、教學新課 1.教學減法的運算規(guī)律。(1)、出示題目,讀題。 指名學生口答解題算式,老師板書一種方法的算式和結果。 提問:第一種算法是怎樣想的?求還剩多少米,還可以怎樣算?(學生口答,老師板書算式和結果)第二種算法又是怎樣想的? 這兩種算法都是求的什么問題?從一個數(shù)里連續(xù)減去兩個數(shù),實際上就是從這個數(shù)里減去什么?所以兩種算法的結果怎樣?說明哪兩個式子相等?[板書:360—87一113=360一(87十113)] 提問:從360里減去87和113這兩個數(shù),等于從360里減去什么?(2)題組的計算、比較。用小黑板出示第68頁下面的題組。 請大家在課本上把這幾道算式計算一下,看看每組里的兩個算式的結果有什么關系,在o里填上適當?shù)姆枴?/p> 讓學生口答練習結果,老師在o里板書等號。 提問:從第一組兩個算式里可以看出從30里減去4和6兩個數(shù),等于從30里減去什么?第二組呢?第三組呢?(3)歸納運算規(guī)律。 在這三組算式里,每組算式之間都有什么共同特點?你發(fā)現(xiàn)了什么規(guī)律? 總結出運算規(guī)律,并讓學生看課本上的結語讀一讀。(4)根據(jù)規(guī)律填空。 563—174—26=563—(174o26)342—69—31=342—(o)1284一(600+7)=1284—600 o 7 324—(24+198)=324— o 456—102=456—100 o 2 提問:前兩題為什么o里都填加號?第三、四題為什么o里都填減號?為什么456一102等于456—100—27 說明:應用這一規(guī)律,可以使一些計算簡便。2.教學簡便算法。 出示例題。提問:這道題里兩個減數(shù)可以湊成怎樣的數(shù)?根據(jù)剛才學習的減法運算規(guī)律,怎樣算比較簡便?為什么? 誰再來說一說,這道題用簡便算法可以怎樣想? 按照這樣想的過程,黑板上的題怎樣算?(板書簡便算法的計算過程)小結:例1里兩個減數(shù)可以湊成整百數(shù),就先求出兩個減數(shù)的和200,再從724里減去這兩個減數(shù)的和。這樣算比較簡便。 (2)計算724——(224+30)。出示題目。 提問:這道題是724減去兩個數(shù)的和,大家看一看這三個數(shù),先算加法會簡便嗎?你發(fā)現(xiàn)從724里先減去哪個數(shù)比較簡便?為 什么?接下來再怎樣算?為什么還要用減法減去307 誰來說一說這道題怎樣計算?(老師板書計算過程)板書時結合提問:為什么等于724—224—307并說明這是把剛才的規(guī)律反過來應用。 小結:這道題是一個數(shù)減去兩個數(shù)的和,由于724減去224可以口算,所以就反過來應用剛才的規(guī)律,從724里先減去224,再減去30。這樣算比較簡便。 (評析:這里補充了這一類型的練習題進行講解,不僅使學生認識這一運算規(guī)律還可以反過來應用,加深了對這一規(guī)律的理解,還可以為下面例2的教學作好鋪墊,使學生進一步領會和掌握應用這一規(guī)律使計算簡便的關鍵。)(3)出示例2。提問:減數(shù)301接近幾百?可以看做哪兩個數(shù)的和?這樣,400—301就可以寫成400減去哪兩個數(shù)的和?[板書:=400一(300+1)]現(xiàn)在你能看出怎樣算比較簡便嗎?(板書計算過程)誰能說一說,這道題用簡便算法是怎樣想的? 追問:這里是怎樣用剛才學到的規(guī)律的?(反過來用)小結:當減數(shù)接近整百數(shù)又比整百數(shù)稍大一點時,可以把它看成是幾百加幾的和,反過來應用剛才的規(guī)律,先減去幾百,再減去幾,這樣算比較簡便。 三、鞏固練習1.“練一練” (1)指名兩人板演左邊兩題的連減題,其余學生做在課本上。集體訂正。提問學生是怎樣想的。 (2)指名兩人板演右邊兩題,其余學生做在課本上。集體訂正。提問學生是怎樣想的。 (3)提問:這里四道題的簡便算法,第一步得到的都是怎樣的數(shù)? 指出:這里應用減法的運算規(guī)律簡便計算,關鍵是看能不能先得到整百數(shù)再減。如果能先得到整百數(shù),就可以應用規(guī)律使計算簡便。 四、課堂小結 今天學習的減法運算的規(guī)律是什么?應用這個規(guī)律進行簡便計算時,關鍵要看什么? 簡便計算小練習 1、三年級3個班為學校修補圖書。一班修補了47本,二班修補了42本,三班修補了58本。三個班共修補圖書多少本?(用兩種方法解答) 2、2、學校買來新書254本。其中故事書86本,文藝書114本,其余的是科技書,科技書多少本?(用兩種方法解答) 3、一輛客車上有乘客54人,到達某站時,先下去28人,又上來36人。這時客車上有乘客多少人? 4、用簡便方法計算 (1)15+36+35 (2)18+19+12 (3)48+25+75 (4)18+46+54 5、用簡便方法計算 (1)145+67-45 (2)132+29-32 (3)116-48+84 (4)156+28-156 6、在□里填上適當?shù)臄?shù) (1)47+98=47+□-□ (2)177-97=177-□+□(3)78+201=78+□+□ (4)211-101=211-□-□ 7、在○里填上適當?shù)姆?/p> (1)739-(239+278)=739○239○278(2)968-257-143=968○(257○143)(3)645-(145+273)=645○145○273(4)898-543-257=898○(543○257) 8、用簡便方法計算(1)、100-54-46 (2)234-(134+45) (3)127+99 (4)232+208 9、用簡便方法計算 (1)2+4+6+8+10+11+12 (2)1+3+5+7+9+11+13+15 《乘法和加、減法混合運算》 姓名:苗秋艷職稱:中教二級單位:東街小學電話: 郵編: 教 *** 041600 案 蘇教版三年級數(shù)學:乘法和加、減法的混合運算教學設計 教學內(nèi)容: 蘇教版教科書 三年級(上冊)第34~35頁。教學目標: 1.讓學生結合解決問題的過程認識綜合算式,體會可以列綜合算式解決兩步計算的實際問題,并初步認識綜合算式;初步掌握含有乘法和加、減法的兩步式題的運算順序,并能按順序正確地計算。 2.使學生初步學會表達混合運算兩步式題計算過程的書寫格式,養(yǎng)成良好的學習習慣。 3.使學生在合作交流中,增強對數(shù)學學習的興趣和信心。教學重點: 會列綜合算式解決兩步計算的實際問題,掌握含有乘法和加、減法的兩步式題的運算順序。教學難點: 掌握含有乘法和加、減法的兩步式題的運算順序。教學過程: 一、創(chuàng)設問題情境,提出數(shù)學問題 1.創(chuàng)設情境,激趣導入。 談話:同學們,你們到文具店買過學習用品嗎?現(xiàn)在,老師就帶大家一起來逛逛這家文具店。課件呈現(xiàn)文具店場景。文具店里的商品可真不少,誰來說一說你都看到了哪些商品,每種商品的價格是多少元。2.提出問題。 談話:同學們看,來了一位小顧客,他要買什么呢? 課件:我要買3本筆記本和1個數(shù)包,你們能幫我算一算一共要用去多少錢嗎? 二、師生互動,解決第一個問題 1.運用已有經(jīng)驗,學生獨立解答。 談話:大家愿意幫忙嗎?好,趕快在練習本上算一算吧。請一名學生板演。(可能絕大多數(shù)學生用分步解答。)5×3=15(元)15+20=35(元) 談話:大家看這位同學做得對嗎?誰來說說你是怎樣想的,把你的思路講給大家聽一聽。(先算3本筆記本多少元,再加上1個書包的價錢,就是一共用去多少元)2.學生嘗試列綜合算式。 談話:同學們都是列兩個一步計算的算是做的,在數(shù)學上,這叫分步解答?,F(xiàn)在老師提一個新要求,大家能不能把這兩個算式合在一起列成一個綜合算式,有信心完成嗎?快再練習紙上試一試吧!指名板演,其余學生在練習本上列式。5×3+20 教師指出:這個算式就是一個綜合算式。會讀綜合算式嗎?(學生一般會讀5乘3加20) 3.觀察比較,體會區(qū)別和聯(lián)系。 談話:現(xiàn)在,請同學們把分步算式和綜合算式進行比較,找出相同和不同的地方。 學生以小組為單位,合作研究,然后在班內(nèi)匯報各自的發(fā)現(xiàn)。 小結:不論是分步算式,還是綜合算式,要解決這個問題,我們都要先求3本筆記本的價錢再加上1個書包的價錢。與剛才的兩個分步算式相比,綜合算式只是不過書寫的形式變了。由于綜合算式不只是乘法,也不單純是加法,它進行的是混合運算,這就是這節(jié)課我們要一起研究的新問題。(板書課題:混合運算)4.規(guī)范綜合算式的書寫格式。 談話:首先,混合運算有自己的書寫格式,大家想了解嗎? 講解:對齊算式的左端畫“=”,需要算幾步就畫幾個“=”。同時板書: 5×3+20 = = 5.學生嘗試計算并交流。 談話:對于混合運算,你能進行計算嗎?請大家試著做一下,算完后,在小組里互相說一說自己計算的順序,先算什么,再算什么。學生匯報,教師同時板演,完成板書: 5×3+20 = 15 +20 = 35 提問:為什么先算5×3?(因為要解決這個問題,現(xiàn)要求出3本筆記本一共多少元,就要先算5×3) 談話:解決問題別忘了在得數(shù)后面寫單位名稱,并寫出答語。(教師作相應板書)第一個問題,在同學們的努力下,順利解決了。 三、自主探索,解決第二個問題 談話:看,文具店理由來了一位小顧客,她要買什么呢? 課件:我要買2盒水彩筆,付給售貨員50元,應找回多少元呢? 談話:這個問題,請同學們先獨立列出綜合算式并計算。做完后,把你的解題思路以及計算的順序在小組里交流一下。 學生選組內(nèi)寫得最好的一份,用實物投影進行展示匯報。解題思路:用50元減去2盒水彩筆的價錢,就是應找回的錢數(shù)。計算順序:先算18×2=36,再算50-36 =14 教師征詢其他小組的意見,板書算式:50-18×2 談話:同學們真肯動腦筋,看來,綜合算式也能幫我們解決實際問題?,F(xiàn)在,我們一起計算。教師邊與學生交流,邊板書。 列出的算式下邊寫幾個等號? 先算什么?為什么先算18×2 在第一個等號后邊能只寫36嗎?怎樣寫? 誰能接著算下去? 板書: 50-18×2 =50-36 =14(元) 答:應找回14元。 四、嘗試歸納,建立模型 談話:(指著板書)請同學們看黑板上的這兩道算式,你能發(fā)現(xiàn)有什么共同點嗎? 學生觀察后自由發(fā)言。(算式中都有兩種運算,其中一種是乘法,另一種是加法或減法,都是先算乘法) 講述:這就是我們這節(jié)課所學習的含有乘法和加、減法的混合運算。(把課題補充完整)誰來說一說含有乘法和加、減法的混合運算的運算順序是怎樣的?讓學生看書第34頁,讀教科書上的結論。 五、應用鞏固,提高能力 1.做“想想做做”第1題。 課件逐題出示:16×6-9 38+4×15 80-23×3 先讓學生說說每道題的運算順序,再獨立在練習紙上寫出計算過程。提醒學生注意每一步的書寫格式。2.做“想想做做”第2題。先讓學生閱讀題目,找出題中的錯誤之處,再改正。然后指名說出題目的錯誤之處,并說出正確的運算過程和結果。3.做“想想做做”第3題。 六、課堂作業(yè) “想想做做”第3題和第5題。 七、全課總結 提問:今天我們學習的是什么內(nèi)容?你有哪些收獲? 板書設計: 乘法和加、減法的混合運算 5×3=15(元)5×3+20 15+20=35(元).=15+20 答:一共要用去35元。.=35(元) 50-18×2 =50-36 =14(元) 答:應找回14元。第二篇:長整數(shù)四則運算實驗報告
第三篇:加減混合運算
第四篇:整數(shù)簡便運算教案
第五篇:加減混合運算教案