實(shí)驗(yàn)四 循環(huán)結(jié)構(gòu)程序設(shè)計(jì) (一)2.編程,輸入一批整數(shù),先求出其中的偶數(shù)和及奇數(shù)和,然后輸出偶數(shù)和與奇數(shù)和的差.輸入輸出示例:輸入一批整數(shù):10 11 20 33 Ctrl+ZSub=-14提示:從鍵盤輸入Ctrl+Z,表示一批數(shù)據(jù)輸入結(jié)束思考:如何從輸入的數(shù)中找出一個(gè)最小的數(shù)include int main(){ int sub=0,n; char c; do { scanf("%d",&n); if (n%2==0) sub+=n; else sub-=n; } while((c=getchar())!='\n'); printf("sub=%d\n",sub); return 0;}思考題#include int main(){ int i=0,num,min; char c; do { scanf("%d",&num); if (i==0) min=num; i++; if(num<=min) min=num; } while((c=getchar())!='\n'); printf("最小數(shù)%d\n",min);}3.編程,輸入1個(gè)正實(shí)數(shù)eps,計(jì)算并輸出下式的值,十到最后一項(xiàng)的絕對值小于eps。
輸入輸出示例:Input eps:0.00001S = 0.866977思考:如果條件改為前后2項(xiàng)的絕對值的差小于eps,如何編程include int main(){ int f=1,i=1; float s=0,eps; printf("input eps: "); scanf("%f",&eps); while ((1/i)>=eps)【思考題】while((1-i/1)>=eps); { s=s+f*1/i; f=-f; i+=4; } printf("s=%f",s); fflush(stdin); getchar(); return 0;} 1. 編程,輸入1個(gè)實(shí)數(shù)x,計(jì)算并輸出下式的值,直到最后一項(xiàng)小于10-5要求定義和調(diào)用函數(shù)fact(n)計(jì)算n的階乘,以及定義和調(diào)用函數(shù)mypow(x,n)計(jì)算xn輸入輸出示例:X=2S=3.761949提示:輸入不同的正整數(shù)和負(fù)整數(shù)驗(yàn)證結(jié)果思考:如何計(jì)算的值includeconst double e = 1e-5;int fact(int n){ int i; int ans; ans = 1; for (i = 1 ; i <= n ; i++) { ans = ans * i; } return ans;}double mypow(double x, int n){ int i; double ans; ans = 1; for (i = 0 ; i < n ; i++) { ans = ans * x; } return ans;}int main(){ double x; double item; double s; int i; int sign=1; scanf("%lf",&x); s = 1; i = 2; do { item = mypow(x,i) / (double)fact(i); //s = s + sign*item; i = i + 2; s = s + item; // sign=-sign; }while(item > e); printf("s = %f\n",s);}思考題在原題上變動(dòng)2. 編程,輸入一個(gè)整數(shù),求它的各位數(shù)字之和及位數(shù)。
例如123的各位數(shù)字之和是6,位數(shù)是3.輸入輸出示例:輸入一個(gè)整數(shù):-12345-12345有5位數(shù),各位數(shù)字之和是15提示:n表示一個(gè)整數(shù),則n%10取個(gè)位數(shù),n=n/10去掉個(gè)位數(shù),組成一個(gè)新數(shù)思考:如果要把每位數(shù)字轉(zhuǎn)換為字符輸出,如何編程思考題不會做)#include void main(){ int a,i=0,sum=0; scanf("%d",&a); while(a!=0) { sum+=(a%10); a/=10; i++; } printf("%d位數(shù), 各位數(shù)字之和為%d\n",i,sum);}3. 改錯(cuò),輸入2個(gè)整數(shù),分別將其逆向輸出輸入輸出示例:123 -321123的逆向是321-321的逆向是-123源程序(有錯(cuò)誤的程序)#includeint fun(int n){ int m,y; y=0; if(n<0) m=n; else m=-n; while (m==0) 改為(m!=0) { y=y*10+m/10; 改為m=m%10; m=m/10; } if(n>=0) return y;改為-y else return –y; 改為y}void main(){ int n,m; scanf(“%d%d”,&n,&m); printf(“%d的逆向是%d\t”,n,fun(n)); printf(“%d的逆向是%d\t”,m,fun(m));}提示:模仿1調(diào)試程序,在變量窗口中觀察變量值的變化,讀者還可以在Watch窗口輸入不同變量的值來驗(yàn)證程序的正確性。
實(shí)驗(yàn)報(bào)告要求將以上各題的源程序、運(yùn)行結(jié)果,以及實(shí)驗(yàn)中遇到的問題和解決問題的方法,以及實(shí)驗(yàn)過程中的心得體會,寫在實(shí)驗(yàn)報(bào)告上。