浙江大學(xué)遠程教育程序設(shè)計基礎(chǔ)(C)作業(yè)_第1頁
浙江大學(xué)遠程教育程序設(shè)計基礎(chǔ)(C)作業(yè)_第2頁
浙江大學(xué)遠程教育程序設(shè)計基礎(chǔ)(C)作業(yè)_第3頁
浙江大學(xué)遠程教育程序設(shè)計基礎(chǔ)(C)作業(yè)_第4頁
浙江大學(xué)遠程教育程序設(shè)計基礎(chǔ)(C)作業(yè)_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、程序設(shè)計基礎(chǔ)(c)作業(yè)第章 語言的基本構(gòu)成一、選擇題1( a )是構(gòu)成c語言程序的基本單位。(a)函數(shù) (b)過程 (c)子程序 (d)文件2( b )是c語言提供的合法的數(shù)據(jù)類型關(guān)鍵字。(a)float (b)signed (c)integer (d)char3以下選項中不合法的用戶標(biāo)識符是( a )。(a)abcc (b)file (c)main (d)printf4以下選項中不合法的用戶標(biāo)識符是( b )。(a)l23 (b)printf (c)a (d)dim5合法的語言長整型常數(shù)是( b )。(a)l (b)5712700 (c)0.054838743 (d)2.1869e10 c語

2、言中,要求運算數(shù)必須是整型的運算符是( a )。(a)% (b) / (c) (d)!以下選項中正確的整型常量是( b )。(a)12. (b)20 (c)l,000 (d)0458以下選項中不正確的實型常量是( b )。(a)2.607e1 (b)0.8103e2. (c)77.77 (d)456e2c語言中運算對象必需是整型的運算符是( d )。(a) (b) + (c) * (d) % 二、程序調(diào)試題1 編輯、調(diào)試以下程序步驟1:在visual c+環(huán)境下新建文件可用開始程序microsoft visual c+6.0 microsoft visual c+6.0 文件 新建文件 c+

3、sourse file,輸入文件名ex1-1.c,程序代碼如下:include /*文件預(yù)處理,包含標(biāo)準(zhǔn)輸入輸出庫,程序可調(diào)用輸入、輸出函數(shù)*/int add(int x,int y) int z; z=x+y; return z; int main( ) int add(int,int); /* 函數(shù)的說明,告訴系統(tǒng)在主函數(shù)中要調(diào)用add函數(shù) */int a,b,c; /* 變量的定義*/scanf(%d %dn,&a,&b);c=add(a,b); /* 函數(shù)調(diào)用 */ printf(%d+%d=%dn,a,b,c); /* 調(diào)用系統(tǒng)輸出函數(shù)printf,%d為格式控制符,依次用后面的變量

4、值填充,以整數(shù)形式輸出 */請思考文件ex1-1.c由幾個函數(shù)構(gòu)成?調(diào)用了那幾個系統(tǒng)函數(shù)?此程序中用到了哪幾個保留字?哪幾個用戶自定義標(biāo)識符?步驟3:編譯并運行程序,程序運行時輸入兩個整數(shù),20 40 ,觀察程序運行的結(jié)果。答案:1、由2個函數(shù)組成;2、調(diào)用了scanf,printf兩個系統(tǒng)函數(shù);3、用到 int ,main,return,scanf,print;4、add,a,b,c,z,x,y;5、20+40=602 編輯、調(diào)試以下程序步驟1:在visual c+環(huán)境下新建文件可用開始程序microsoft visual c+6.0 microsoft visual c+6.0 文件 新建

5、文件 c+ sourse file,輸入文件名ex1-2.c步驟2:在文本編輯器中輸入以下c程序#include /*文件預(yù)處理,包含標(biāo)準(zhǔn)輸入輸出庫,程序可調(diào)用輸入、輸出函數(shù)*/#includeint main( ) int and(int,int); /* 函數(shù)的說明,告訴系統(tǒng)在主函數(shù)中要調(diào)用and函數(shù) */ int or(int,int); /* 函數(shù)的說明,告訴系統(tǒng)在主函數(shù)中要調(diào)用and函數(shù) */int a,b,c; /* 變量的定義*/scanf(%d %d,&a,&b);c=and(a,b); /* 函數(shù)調(diào)用 */ printf(%d & %d=%dn,a,b,c); /*調(diào)用系統(tǒng)輸

6、出函數(shù)printf,%d為格式控制符,依次用后面的變量值填充,以整數(shù)形式輸出 */c=or(a,b); /* 函數(shù)調(diào)用 */ printf(%d | %d=%dn,a,b,c); 步驟3:文件 新建文件 c+ sourse file,輸入文件名ex1-2-2.c,源程序代碼為:int and(int a,int b) int c; c=a&b; return c;步驟4:文件 新建文件 c+ sourse file,輸入文件名ex1-2-3.c,源程序代碼為:int or(int a,int b) int c; c=a|b; return c;步驟5:點擊編譯圖標(biāo),編譯程序1-2.c 步驟4:

7、點擊執(zhí)行圖標(biāo) ,執(zhí)行程序1-2.c ,當(dāng)程序運行時,鍵盤輸入20 40,按回車。20 4020 & 40=120 | 40=1您可以輸入其它的整數(shù),觀察程序的執(zhí)行結(jié)果。答案:10 2010 & 20 =110 | 20 =1第章輸入輸出程序設(shè)計1 用printf輸出一個中空的五角星。代碼:#include void main( ) printf();2 仿照例子2.2,定義一個字符數(shù)組,從鍵盤輸入一字符串,然后輸出的程序。代碼:#include void main( ) char string300; printf(請輸入字符串:n); gets(%s,string); printf(您輸入的

8、字符串:%sn,string);3 從鍵盤輸入十六進制整數(shù),轉(zhuǎn)化為八進制數(shù)輸出。代碼:#include void main( ) int i; scanf(%x,&i); printf(%on,i);4 只定義兩個整型數(shù)據(jù)并賦值,實現(xiàn)兩個整型數(shù)的互換。代碼:#include void main( ) int a=10,b=20; printf(初始值:a=%d,b=%dn,a,b); a = ab; b = ba; a = ab; printf(交換值:a=%d,b=%dn,a,b);5 從鍵盤上輸入一個整數(shù),分別輸出8、16進制數(shù)的程序。代碼:#include void main( ) in

9、t i; scanf(%d,&i); printf(八進制:%o,十六進制:%xn,i,i);6 從鍵盤上輸入一個整數(shù),分別輸出它的個位數(shù),十位數(shù),百位數(shù)。代碼:#include void main( ) int i; scanf(%d,&i); printf(個位數(shù):%d,十位數(shù):%d,百位數(shù):%dn,i%10,(i/10)%10,(i/100)%10);7 以下程序輸出結(jié)果是( )。#includevoid main() int i=010,j=10; printf(%d,%dn,+i,j- ); 答案:9,108 運行程序,屏幕提示“您是一個學(xué)生嗎”,您輸入y或n進行回答,屏幕輸出您的選

10、項。代碼:#includevoid main() char a; printf(您是一個學(xué)生嗎?(y/n)n); scanf(%c,&a); if(a=y) printf(%cn,a); else if(a=n) printf(%cn,a); else printf(回答錯誤n); 9 從鍵盤輸入一個角度x,求10*sin(x)的值。#include#includevoid main() double x; scanf(%lf,&x); printf(10*sin(x)=%lfn,10*sin(x);第章循環(huán)程序設(shè)計1執(zhí)行語句for(i=0;i+5;);后,變量i 的值是( a )。(a)6

11、(b)5 (c)4 (d)02若int i=0;下列語句計算1+2+10的是( c )。(a)while(s+=i); (b)for(;i=10;i+,s+=i)(c)for(;i=10;s+=i,i+)(d)for(;i9;i+,s+=i)3若int i,x; 則語句 for(i=x=0;i9;i+=+x);的循環(huán)體要執(zhí)行( 4 )次。10以下不是死循環(huán)的語句是( d )。(a)for(;x+); (b)while(1)x+;(c)doi+;while(1) (d)for(x=-10;x+;)4以下for語句的循環(huán)次數(shù)是多少?int i,j=3;for(;i=j;i-,j-) printf(

12、%d,i);答案:3次5下面的語句顯示輸出6行6列的整數(shù)數(shù)組h的主對角線上的所有元素,請補充完整:for(int i=0;i 6 ; i+ )printf(%d, hii )6寫出以下程序運行的結(jié)果,此程序?qū)崿F(xiàn)了什么功能?#includevoid main() int a10=2,4,0,-5,10,6,-8,9,6,7; int i, count=0; for(i=0;i10;i+) if(ai=0) count+; else continue;printf(%dn , count);答案:0。 數(shù)組a里有幾個0。7寫出以下程序的功能。#includevoid main()int a10=2

13、,4,0,-5,10,6,-8,9,6,7,tmp,k;for (k=0;k10/2;k+) tmp=ak; ak=a10-k-1;a10-k-1=tmp;答案:把數(shù)組倒置.8寫出以下程序運行后的輸出結(jié)果。#includevoid main() int i,j; for(i=0;i6;i+) for(j=0;ji;j+)printf( );for(j=0;j2*(5-i)-1;j+)printf(*);printf(n); 答案:* * * * *9請改正下列程序的錯誤,改正后的程序?qū)懺谟疫叺目瞻滋?,并上機調(diào)試檢驗。(1)#includevoid main( ) int i,s;i=1; s=

14、0;while(i=100); s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);代碼:#includevoid main( ) int i,s; i=1; s=0; while(i=100) s=s+i; i+; printf(1+2+3+.+99+100=%dn,s);(2)#includevoid main( ) int i,s;i=1;s=0;while(i=100) s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);代碼:#includevoid main( ) int i,s;i=1;s=0;while(i=100

15、) s=s+i; i+; printf(1+2+3+.+99+100=%dn,s);(3)#includevoid main( ) int i=1,s;while(i=100) ; s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);代碼:#includevoid main( ) int i=1,s=0;while(i=100) s=s+i; i+; printf(“1+2+3+.+99+100=%dn”,s);10 輸入一個基數(shù),例如輸入9,輸出為:求1*3*9的值。輸出為:1*3*5*7*9=945(?945 and 45)答案:#includevoid m

16、ain( ) int x,i=0,s=0; scanf(%d,&x); while(i=x) if(i=1) printf(%d,i); s+=i; else if(i%2!=0) printf(+%d,i); s+=i; i+; printf(=%dn,s);11 輸入一個510之間的整數(shù)n,求1!+2!+3!+n!。例如輸入5,輸出為:1!+2!+3!+5!=153 答案:#includeint jiecheng(int x)int i,sum=1;for(i=1;i=x;i+) sum*=i;return sum;void main( ) int n,i=1,sum=0; printf(

17、輸入一個510之間的整數(shù):n); scanf(%d,&n); while(n10) printf(輸入一個510之間的整數(shù):n); scanf(%d,&n); while(i=n) if(i=1) printf(%d!,i); sum+=jiecheng(i); else printf(+%d!,i); sum+=jiecheng(i); i+; printf(=%dn,sum);12在屏幕上輸出以下內(nèi)容1 12 123 1234 12345 123456 1234567 12345678 123456789 答案:#includevoid main( ) int i=1,j; while(i

18、=9) for(j=1;j=i;j+) printf(%d,j); printf(n); i+; 12 求2+4+6+98+100的和,用多種for表達式來完成。答案:形式一:#include void main( ) int i=0,sum=0; for(;i=100;i+=2) sum+=i; printf(2+4+.+98+100=%dn,sum);形式二:#include void main( ) int i=0,sum=0; for(;i=100;) sum+=i; i+=2; printf(2+4+.+98+100=%dn,sum);形式三:#include void main(

19、) int i=0,sum=0; for(;) sum+=i; i+=2; if(i100) break; printf(2+4+.+98+100=%dn,sum);形式四:#include void main( ) for(int i=2,sum=0;i=100;sum+=i, i+=2); printf(2+4+.+98+100=%dn,sum);14輸入一行字符,統(tǒng)計它有多少個字母?答案: #include void main( ) char string100,c; int total = 99,count=0,scount=0; while(count=a & c=a & c=z)

20、scount+; count+; printf(%s count=%dn,string,scount);第章分支程序設(shè)計1輸入若干整數(shù)給x,使用if語句輸出x的絕對值,當(dāng)輸入0時結(jié)束。 答案:#include#includevoid main( ) double x; scanf(%lf,&x); while(1) if(x!=0) printf(fabs(%lf)=%lfn,x,fabs(x); scanf(%lf,&x); else break; 2輸入一批數(shù),輸出比相鄰數(shù)大的數(shù),當(dāng)輸入0時結(jié)束。 答案:#include#includevoid main() int a100,i,n; p

21、rintf(請輸入數(shù)組到個數(shù):n); scanf(%d,&n); for(i=0;in;i+) scanf(%d,&ai); for(i=0;iai+1) printf(%d ,ai); if(i=n-1) if(ai-10 & iai+1&aiai-1) printf(%d ,ai); 3將輸入字符的大寫字符轉(zhuǎn)換成小寫字符輸出,小寫字符原樣輸出。答案:#include void main( ) char string10; scanf(%s,string); int i; for(i=0;i=a & stringi=z) printf(%c,stringi-32); else printf(

22、%c,stringi); 4輸入一批字符,按回車時結(jié)束,統(tǒng)計小寫字符、大寫字符、數(shù)字字符、或其它字符的個數(shù)。 答案:#includevoid main( ) ; int total = 99,count=0,bcount=0,scount=0,ncount=0,ocount=0; while(count=a & c=a & c=0 & c=9) ncount+; else ocount+; count+; printf(%s 小寫字符:%d,大寫字符:%d,數(shù)字字符:%d,其它字符:%dn,string,scount,bcount,ncount,ocount);5編寫程序,計算分段函數(shù):答案:

23、#includevoid main( ) double x,y; scanf(%lf,&x); while(x=10) printf(x!=10 n); scanf(%lf,&x); if(x10) y=3/(x-10); else y=2*x; printf(y=%lfn,y);6根據(jù)輸入的百分制按五分制的成績輸出。百分制與五分制之間的關(guān)系見下表。百分制五分制90 100580 89470 79360 692601答案:#includevoid main( ) int x,y; scanf(%d,&x); while(x100 | x 0) printf(0=x=100 n); scanf(

24、%d,&x); if(x=90) y=5; else if(x=80) y=4; else if(x=70) y=3; else if(x=60) y=2; else y=1; printf(y=%dn,y);7、用switch完成:讀入一個實數(shù)x,再輸入一整數(shù),若輸入是1,則計算sin(x),若輸入2,則計算cos(x),若輸入3,則計算tan(x),若輸入其他值,則顯示錯誤信息。答案:#include#includevoid main( ) int s; double x=0.3; scanf(%d,&s); switch(s) case 1: printf(sin(x)=%lfn,sin

25、(x); break; case 2: printf(cos(x)=%lfn,cos(x); break; case 3: printf(tan(x)=%lfn,tan(x); break; default: printf(錯誤:請輸入1-3的數(shù)字!); break; 8、用switch完成:輸入星期1 到星期5,輸出它們對應(yīng)的顏色星期1:blue星期2:red星期3:white星期4:yellow星期5:green答案:#include void main( ) int s; scanf(%d,&s); switch(s) case 1: printf(星期1:bluen); break;

26、case 2: printf(星期2:redn); break; case 3: printf(星期3:whiten); break; case 4: printf(星期4:yellown); break; case 5: printf(星期5:greenn); break; default: printf(錯誤:請輸入1-5的數(shù)字!); break; 9、用switch完成:從鍵盤輸入a、b、c、d四個等級中的一個,轉(zhuǎn)化輸出等級輸出a優(yōu)秀b良好c中等d及格e不及格答案:#include void main( ) switch(getchar() case a: printf(優(yōu)秀n); br

27、eak; case b: printf(良好n); break; case c: printf(中等n); break; case d: printf(及格n); break; case e: printf(不及格n); break; default: printf(錯誤:請輸入a-e的字符!); break; 第章數(shù)組及其應(yīng)用.從鍵盤輸入12個數(shù),分別為:900,2,3,58,34,76,87,72,90,20,78,30,找出最大和最小數(shù)。答案:#include void main( ) int a12,i=0; while(i12) scanf(%d,&ai); i+; int maxa

28、=a0,mina=a0; for(i=1;imaxa) maxa = ai; if(ai mina) mina = ai; printf(max=%d,min=%d,maxa,mina); .采用遍歷查找,在數(shù)組asize=2, 3,20,58, 72, 76,78,87,90,900中,找出偶數(shù)。答案:#include #define size 10void main( ) int asize=2, 3,20,58, 72, 76,78,87,90,900; int i; printf(asize=2, 3,20,58, 72, 76,78,87,90,900中偶數(shù):n); for(i=1;

29、i10;i+) if(ai%2=0) printf(%d,ai); .采用折半查找,在數(shù)組asize=2, 3,20,58, 72, 76,78,87,90,900中,找到87,然后進行刪除。答案:#include #define size 10void main( ) int asize=2, 3,20,58, 72, 76,78,78,90,900; int i,j=0,k,newsize; newsize=size; k=newsize; printf(刪除78前的數(shù)組:); for(i=0;inewsize;i+) if(i=newsize-1) printf(%dn,ai); els

30、e printf(%d,ai); i=(j+k)/2; while(j78) k=i-1; else if(ai78) j=i+1; else for(j=i;jnewsize-1;j+)/*找到后刪除 并且繼續(xù)查找是否有*/ aj=aj+1; newsize-; k=newsize; j=0; i=(j+k)/2; printf(刪除78后的數(shù)組:); for(i=0;inewsize;i+) if(i=newsize-1) printf(%dn,ai); else printf(%d,ai); 第章函數(shù)及其應(yīng)用練習(xí)與實踐一、閱讀程序,寫出程序運行的結(jié)果。1寫出以下程序的執(zhí)行結(jié)果。#incl

31、udefloat aver(int a) int k,sum=0;float ave;for(k=0;k10;k+) sum+=*(a+k); ave=(float)sum/10;return (ave);int main( ) float ave;static b=78,89,98,76,78,45,88,81,92,85;ave=aver(b);printf(ave=%fn,ave);提示:數(shù)組b的首地址傳遞給形參a,*(a+k)就是數(shù)組元素bk.答案:81.0000002閱讀程序,寫出程序的執(zhí)行結(jié)果。#include void abc( char str )int a, b ;for(a

32、 = b = 0 ; stra!=0; a+ )if(stra!= c)strb+ = stra;strb=0;int main( )char str =abcdef ;abc(str);printf(str =%s , str );return 0;提示:數(shù)組str的首地址傳遞給形參str,stra就是實參中的數(shù)組元素stra,當(dāng)數(shù)組元素不為c時進行復(fù)制。答案:str =abdef3寫出以下程序的執(zhí)行結(jié)果。#includeint sort(int b,int n,int x)int k;for(k=n-1;k=0;k-)if(bkx)bk+1=bk;elsebreak;bk+1=x;retu

33、rn 0; int main( )int i,j;static int a5=8,5,4,1,6;int b8;b0=a0;for(i=1;i5;i+)sort(b,i,ai);for(j=0;j=i;j+) printf(%d ,bi);printf(n);return 0; 提示:循環(huán)體中if(bkx)bk+1=bk;elsebreak;如果bkx成立,執(zhí)行語句bk+1=bk;表示數(shù)組元素b向后移,不滿足時插入x,即從大到小排序。答案:5 5 4 4 4 1 1 1 11 1 1 1 1 4寫出以下程序的執(zhí)行結(jié)果。#includeint fun(int x) int p; if(x=0|x

34、=1) return 3; else p=x-fun(x-2); return p;int main( )printf(n%d,fun(9);return 0; 提示:fun(9)=9-fun(7),.,fun(1)=3答案:75寫出以下程序的執(zhí)行結(jié)果,并說明其作用是什么?#includeint f(int n)if(n=10)f(n/10);printf(%d,n%8);return 0;int main( )f(1234);printf(n);return 0; 提示:在函數(shù)f中,程序運行借助了堆棧,依次入棧的數(shù)據(jù)分別為1234、123、12,最后n=1,n對8取余輸出,然后數(shù)據(jù)依次出棧對

35、8取余輸出。答案:1432。作用?二、程序設(shè)計1編寫一個函數(shù),計算x的n次的平方。 提示:for(y=1,i=0;in;i+) y=y*x;答案:#include int main( )int x,n,y,i;printf(please input x and n:n);scanf(%d %d,&x,&n);for(y=1,i=0;in;i+) y=y*x; printf(x的n次的平方:%dn,y); 2編寫一個函數(shù),計算對角線上元素之和。提示:for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; 答案:#include int main( )

36、int s,i,j,n=3;int a33 = 3,5,6,7,4,6,4,9,4; for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; printf(s=%dn,s); 3編寫一個函數(shù)int invert(char str ),將一個字符串的內(nèi)容顛倒過來。提示:先求字符串str的長度n,for(i=0;in/2;i+)ai與an-1-i交換答案:#include int invert(char str)int n =strlen(str); int i; char temp; for(i=0;in/2;i+) temp = stri; str

37、i=strn-i-1; strn-i-1=temp; void main() char a12=1c32323cvwd; printf(invert before:%sn,a); invert(a); printf(invert after:%sn,a);4編寫函數(shù),刪除字符串中,從指定位置m開始的n個字符。刪除成功,函數(shù)返回被刪除字符串;否則返回空的值。提示:for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0;答案:#includeint cutstring(int m,int n,char str) int l =strlen(str)

38、; if(m+n-1=l) return 0; int k,i; char nstrn; for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i=0; return 0; void main()int m,n;char str11 = ddksosekci; printf(%sn,str); printf(please input m and n:n); scanf(%d %d,&m,&n); cutstring(m,n,str); printf(%sn,str); 5編寫一個程序,從鍵盤輸入的字符串,刪去非數(shù)字字符,轉(zhuǎn)換成整型數(shù)輸出。 提示:for(s=0 , i=0 , j=0 ; stri;i+) if(stri=0&stri=9) s=s*10+stri-0; 答案:#include void main() char str11; int s,i,j; for(i=0;i=0&stri=9) s=s*10+stri-0; printf(%dn,s);6用遞歸的方法編寫一個函數(shù)sum(int n),求1至n的累加和。 提示:f(n)=n

溫馨提示

  • 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

提交評論