大一上語言19 1上半部分習(xí)題_第1頁
大一上語言19 1上半部分習(xí)題_第2頁
大一上語言19 1上半部分習(xí)題_第3頁
大一上語言19 1上半部分習(xí)題_第4頁
大一上語言19 1上半部分習(xí)題_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

課程內(nèi)容第一章程序設(shè)計和C語言第二章數(shù)據(jù)對象與計算第三章變量、函數(shù)和控制結(jié)構(gòu)第四章基本程序設(shè)計技術(shù)第五章C程序結(jié)構(gòu)(函數(shù))第六章數(shù)組第七章指針第八章文件和輸入輸出第九章結(jié)構(gòu)和其它數(shù)據(jù)機制第十章程序開發(fā)技術(shù)第十一章標(biāo)準(zhǔn)庫重點控制結(jié)構(gòu)順序、選擇、循環(huán)結(jié)構(gòu)函數(shù)定義、聲明及調(diào)用從問題到程序的編程思想程序的函數(shù)分解模塊化程序設(shè)計難點循環(huán)遞歸基本輸入、輸出語句程序=數(shù)據(jù)結(jié)構(gòu)+算法

程序程序規(guī)定了計算機執(zhí)行的動作和動作的順序。算法:解決問題的方法和步驟算法的幾個特性有窮性確定性-無二義可執(zhí)行性有0個或多個輸入有0個或多個輸出從問題到程序的程序設(shè)計思想也體現(xiàn)了算法的重要性要點1:運算符及表達式?已經(jīng)學(xué)習(xí)哪幾種運算符及表達式?優(yōu)先級關(guān)系?自增、自減運算符算術(shù)運算符關(guān)系運算符邏輯運算符位運算符條件運算符賦值運算符逗號運算符要點2:C語言的基本數(shù)據(jù)類型C語言的基本數(shù)據(jù)類型有哪些?什么是常量?如何定義?什么是變量?如何定義?變量的存貯類型有哪幾種?auto,register,static,extern變量從作用域的角度分哪幾種?全局變量、局部變量要點3:條件if語句條件if語句有幾種形式?Ifelse和switch開關(guān)語句的差別?要點4:循環(huán)語句循環(huán)語句有幾種形式?循環(huán)結(jié)構(gòu)的三要素是什么?如何從循環(huán)中跳出?要點5:函數(shù)如何定義函數(shù)?函數(shù)聲明的意義及原則?如何調(diào)用函數(shù)?參數(shù)傳遞和函數(shù)返回值過程中類型不匹配時的轉(zhuǎn)換原則?如何理解值參數(shù)?要點6:基本輸入輸出語句getchar()putchar()scanf()printf()數(shù)的批量輸入輸出:基本輸入輸出+循環(huán)結(jié)構(gòu)第二章習(xí)題講解1.指出下面的字符序列不是合法的標(biāo)識符:_abc x+-3x1Xf_1__4Eoof___A$*24x__x__2bg—1 ____ Iam2.手工計算下列表達式的值1)125+01252)0XAF–0XFA3)24*3/5+64)36+-(5–23)/45)35*012+27/4/7*(12-4)210-7520403503.在下列表達式的計算過程中,在哪些地方將發(fā)生類型轉(zhuǎn)換,各是從什么類型轉(zhuǎn)換到什么類型,表達式計算的結(jié)果是什么?1)3*(2L+4.5f)–012+442)3*(int)sqrt(34)–sin(6)*5+0x2AF3)cos(2.5f+4)–6*27L+1526–2.4L第三章習(xí)題講解2.設(shè)a=1,b=2,c=3,則u的值為:u=a?b:c;u=(a=2)?b+a:c+a;3.設(shè)a=1,b=2,c=0,則下列表達式的值為:a&&!((b||c)&&!a)!(a&&b)||c?a||b:a&&b&&c!(a+b<c)&&b<=c*a-bu=2u=41004.程序執(zhí)行時將在哪些地方發(fā)生類型轉(zhuǎn)換,程序打印的值是什么? intf(intn,floatm){ return(m+n)/4; } intmain(){ floaty=3; printf(“%d\n”,f(y,y+1)); return0;}18.定義函數(shù)doubletmax(double,double,double),返回三個數(shù)中的最大的。doubletmax(doublex,doubley,doublez){ doublemax=x; if(y>max)max=y; if(z>max)max=z; returnmax;}10.四邊形的邊長為a,b,c,d及一對對角之各angel,求四邊形的面積。doubleQuaArea(doublea,doubleb,doublec,doubled,doublee){ doubles=(a+b+c+d)/2.; doublearea; area=sqrt((s-a)*(s-b)*(s-c)*(s-d)- a*b*c*d*cos(e)*cos(e)); returnarea;}有問題嗎?補充題1:用if語句寫程序判斷是否為閏年

intRuiNian(intyear){ if(year%400==0 ||year%4==0&&year%100!=0) return1; else return0;}補充題2.求分段函數(shù)

y=xx<12x-11<=x<10-3x-11x>=10#include<stdio.h>intmain(){ doublex,y; printf("pleaseinputx\n"); scanf("%lf",&x); if(x<1){ y=x; printf("%lf",y); } elseif(1<=x&&x<10){ y=2*x-1; printf("%lf\n",y); } else{ y=3*x-11; printf("%lf\n",y); } return0;}有問題嗎?補充題3給一個不多于3位的正整數(shù),要求出它是幾位數(shù);分別輸出每一位數(shù)字按新逆序輸出各位數(shù)字,例如原數(shù)為321,應(yīng)輸出123算法思想:設(shè)a是整數(shù)變量;如果a<0或者a>999則輸入錯誤如果a>=0并且a<10則輸出a是個位數(shù)如果a>=10并且a<100則輸出a是十位數(shù)個位數(shù)是a%10十位數(shù)是a/10如果a>=100并且a<1000則輸出a是百位數(shù)個位數(shù)是a%10十位數(shù)是a/10%10百位數(shù)是a/100#include<stdio.h>

//程序分析intmain(){ intx,a,b,c,d;scanf("%d",&x); if(x/100>=10||x<0) printf("Inputerror!\n"); elseif(x/100>0){ a=x/100; b=x/10%10; c=x-a*100-b*10; d=c*100+b*10+a; printf("three,%d,%d,%d,%d\n",a,b,c,d);/*百位數(shù),十位數(shù),個位數(shù),逆序*/ } elseif(x/10>0){ a=x/10; b=x%10; d=b*10+a; printf("two,%d,%d,%d\n",a,b,d);/*十位數(shù),個位數(shù),逆序*/ } else{ a=x; printf("one,%d,%d\n",a,a);/*個位數(shù),逆序*/ } return0;}#include<stdio.h>intGradeIf(int);intGradeSwitch(int);intmain(){ intn; printf("Inputthemarkfrom0to99\n"); while(scanf("%d",&n)==1) {// GradeIf(n); GradeSwitch(n); } return0;}補充題4.從鍵盤輸入學(xué)生的考試成績,利用計算機將學(xué)生的成績劃分等級并輸。90-99為A級,80-89為B級,70-79為C級,60-69為D級,0-59為E級。intGradeIf(intn){ if(n>99||n<0) printf("inputerror!\n"); elseif(n>=90) printf("ThegradeisA!\n"); elseif(n>=80) printf("ThegradeisB!\n"); elseif(n>=70) printf("ThegradeisC!\n"); elseif(n>=60) printf("ThegradeisD!\n"); else printf("ThegradeisE!\n"); return0;}intGradeSwitch(intn){ if(n>99||n<0) n=-1; else n=n/10; switch(n) { case-1:printf("Inputerror!\n");break; case9:printf("ThegradeisA!\n");break; case8:printf("ThegradeisB!\n");break; case7:printf("ThegradeisC!\n");break; case6:printf("ThegradeisD!\n");break; default:printf("ThegradeisE!\n"); } return0;}14.求100以內(nèi)正整數(shù)的立方和longCubeSum(intn){ longsum=0; inti=1; while(i<=n) { sum=sum+i*i*i; i++; } returnsum;}15.寫一個函數(shù),取3個參數(shù)m,n,k輸出m,m+k,m+2k,…直至最后一個不大于n的數(shù)voidPrintNum(intm,intn,intk){ while(m<=n) { printf(“%d\n”,m); m=m+k; }}16.自定義函數(shù)doublepower(doublex,intn),求出x的n次冪。doublePower(doublex,intn){ doubleexp=1; while(n>=1) { exp*=x; n--; } returnexp;}22.寫一個程序打印1至100之間的被6或7整除的數(shù);修改這個程序使得它之打出被6或7之一整除的數(shù)。intmain(){ inti=0; while(i<=100) { if((i%6==0&&i%7!=0)||(i%6!=0&&i%7==0)) printf("%d\n",i); } return0;}第四章習(xí)題講解4.寫函數(shù)計算1!+2!+…+k!longSumFactor(intn){ inti=1; longf=1,sum=0; while(i<=n) { f=f*i; sum=sum+f; i++; } returnsum;}9.用公式編程求圓周率的近似值#include<math.h>#definePI3.1415doublePai(void){ intn=1; doublesum=0.0; while(fabs(PI-sqrt(6*sum))>=1e-4) { sum=sum+1.0/(n*n); n++; } printf("Thenumberoftermsare%d.\n",n); returnsqrt(6*sum);}12.求利用公式反正弦函數(shù)的近似值doubleasinh(doublex){ inti,n=10,sign=-1; doubleterm,sum; term=x; sum=x; for(i=1;i<=n;i++) { term=term*x*x*(2*i-1)/(2*i); sum+=sign*term/(2*i+1)*(2*i-1); sign=-sign; } returnsum;}14.輾轉(zhuǎn)相減求最大公約數(shù)intgcd(intm,intn){ if(m<n) returngcd(n,m); elseif(m==n) returnm; else returngcd(m-n,n);}intgcd1(intm,intn){ intr,t; if(m<n){t=m;m=n;n=t;} if(n==0)returnm; for(r=m-n;r!=0;r=m-n){ m=n;n=r; if(m<n){t=m;m=n;n=t;}}returnn;}16.求水仙花數(shù)voidmethod1(void){ inti,j,k; for(i=1;i<=9;i++) for(j=0;j<=10;j++) for(k=0;k<=10;k++) if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) printf("%d是水仙花數(shù)\n",i*100+j*10+k);}voidmethod2(void){ inti,m,n,l; for(i=100;i<=999;i++) { m=i/100; n=i/10%10; l=i%10; if(i==m*m*m+n*n*n+l*l*l) printf("%d是水仙花數(shù)\n",i); }}19.寫程序讀入一系列數(shù),求最大數(shù)和次大數(shù)。inttmax(void){ intn,m,max1,max2; printf("Pleaseinputsomeintegers.\n"); scanf("%d%d",&n,&m); if(m>n) { max1=m; max2=n; } else { max1=n; max2=m; } while(scanf("%d",&n)==1) { if(max1<n){max2=max1;max1=n;} elseif(max2<n){max2=n;} } printf("\nmax1=%d,max2=%d\n",max1,max2); return0;}21.求折線段的面積doubleFigureArea(void){ doubley1,y2,area=0.0; printf("Pleaseinputaseriespositivefloatnumber.\n"); if(scanf("%lf",&y2)!=1)return0; while(scanf("%lf",&y1)==1) { area+=(y1+y2)/2.0; y2=y1; } returnarea;}補充題1:打印如下圖案1121123211234321123211211voidFigure(intn){inti,j;for(i=1;i<=n;i++){ for(j=n-i;j>=1;j--) printf(""); for(j=1;j<=i;j++) printf("%d",j);for(j=i-1;j>=1;j--) printf("%d",j); printf("\n");}for(i=1;i<n;i++){for(j=1;j<=i;j++) printf(""); for(j=1;j<=n-i;j++) printf("%d",j); for(j=n-1-i;j>=1;j--) printf("%d",j); printf("\n");}}補充題2:用遞歸的方法求N階勒讓德多項式的值,遞歸公式為doublepn(intn,doublex){ doublevalue; if(n==0) value=1; elseif(n==1) value=x; else value=((2*n-1)*x*pn(n-1,x)-(n-1)*pn(n-2,x))/n; returnvalue;}補充題3:學(xué)生成績管理系統(tǒng)菜單調(diào)用學(xué)生成績管理系統(tǒng)求計科0905班學(xué)生高級語言成績設(shè)計課的最高分、最低分、平均分和不及格的人數(shù)voidScoreInfSys(){ doublebiggest,smallest,sum,score; intcount=1,fail=0; scanf(“%lf”,&sum); biggest=smallest=sum; if(sum<60)fail++; while(scanf(“%lf”,&score)==1) { if(score>biggest)biggest=score; if(smallest<score)smallest=score; sum+=score; count++; if(score<60)fail++; } printf(“bigest=%f,smallest=%f,average=%f,fail=%d\n”, biggest,smallest,sum/count,fail);}voidCountCh(void){ intch; inti=0,j=0,k=0,m=0; while((ch=getchar())!='\n') { if((ch>=65&&ch<=90)||(ch>=97&&ch<=122)) i++; elseif(ch>=48&&ch<=57) j++; elseif(ch=='') k++; else m++; } printf("Charaters:%d,Numbers:%d,Spaces:%d,Others:%d\n",i,j,k,m);}補充題4.輸入一行字符,分別統(tǒng)計出其中英文字母、空格、數(shù)字和其它字符的個數(shù)。第五章習(xí)題講解作業(yè)1.讀程序?qū)懡Y(jié)果#include<stdio.h>intf1(int),f2(int);voidmain(){inti;for(i=2;i<5;i++)printf("f1(%d)=%d\t",i,f1(i));printf("\n");for(i=2;i<5;i++)printf("f2(%d)=%d\t",i,f2(i));printf("\n");}intf1(intx){intf=1;f*=x;returnf;}intf2(intx){staticintf=1;f*=x;returnf;}結(jié)果為:

f1(2)=2

f2(2)=2f2(3)=6f2(4)=24f1(3)=3f1(4)=4作業(yè)2.閱讀下列程序?qū)懡Y(jié)果#include<stdio.h>inta=3,b=5;intmax(inta,intb){intc;c=a>b?a:b;returnc;}voidmain(){inta=8;printf(“%d”,max(a,b));}結(jié)果:810.用牛頓迭代法求方法ax^3+bx^2+cx+d=0在1附近的一個實根,系數(shù)a,b,c,d的值依次為1,2,3,4由主函數(shù)輸入,求出根后由主函數(shù)輸出。牛頓迭代法:設(shè)r是f(x)=0的根,選取x0作為r初始近似值,過點(x0,f(x0))做曲線y=f(x)的切線L,L的方程為y=f(x0)+f'(x0)(x-x0),求出L與x軸交點的橫坐標(biāo)x1=x0-f(x0)/f'(x0),稱x1為r的一次近似值,過點(x1,f(x1))做曲線y=f(x)的切線,并求該切線與x軸的橫坐標(biāo)x2=x1-f(x1)/f'(x1)稱x2為r的二次近似值,重復(fù)以上過程,得r的近似值序列{Xn},其中Xn+1=Xn-f(Xn)/f'(Xn),稱為r的n+1次近似值。//牛頓迭代法求方程的根#include<stdio.h>doublef(doublea,doubleb,doublec,doubled,doublex);doublefd(doublea,doubleb,doublec,doubled,doublex);doubleroot(doublea,doubleb,doublec,doubled);voidmain(){ doublea,b,c,d,x; printf("輸入方和的系數(shù)a,b,c,d\n"); scanf("%lf,%lf,%lf,%lf",&a,&b,&c,&d); x=root(a,b,c,d); printf("方程的根為:%lf\n",x); printf("當(dāng)x為%lf時,函數(shù)的值為%lf\n",x,f(a,b,c,d,x));}程序代碼doublef(doublea,doubleb,doublec,doubled,doublex){ return(a*x*x*x+b*x*x+c*x+d);}doublefd(doublea,doubleb,doublec,doubled,doublex){ return(3*a*x*x+2*b*x+3);}doubleroot(doublea,doubleb,doublec,doubled){ doublex1=1.2,x0; intn=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論