C語言程序設(shè)計部分習(xí)題及例題參考程序_第1頁
C語言程序設(shè)計部分習(xí)題及例題參考程序_第2頁
C語言程序設(shè)計部分習(xí)題及例題參考程序_第3頁
C語言程序設(shè)計部分習(xí)題及例題參考程序_第4頁
C語言程序設(shè)計部分習(xí)題及例題參考程序_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、C語言程序設(shè)計部分例題及課后習(xí)題參考程序1.編程計算如下分段函數(shù):y=2x+3 x10 4x 0x105x-6 x0參考程序#include int main()float x,y;printf(input x:);scanf(%f,&x);if(x=10)y=2*x+3;else if(x=0)y=4*x;elsey=5*x-6;printf(y=%.2fn,y);2編程將從鍵盤輸入的百分制成績轉(zhuǎn)換為等級分,轉(zhuǎn)換方法如下: 90以上(大于或等于90,下同)為A,80分以上為B,70分以上為C,60分以上為D,60分以下,即低于60分為E。參考程序#include int main()floa

2、t score;char rank;printf(input a score:);scanf(%f,&score);if(score100|score0)printf(invalid score inputn);exit(-1);switch(int)score/10)case 10:case 9:rank=A;break;case 8:rank=B;break;case 7:rank=C;break;case 6:rank=D;break;default:rank=E;printf(%.2f:%cn,score,rank);return 0;3.編程判斷以從鍵盤輸入的三個數(shù)為邊長,是否能構(gòu)成

3、三角形。參考程序#include int main()float a,b,c;printf(input a,b,c:);scanf(%f%f%f,&a,&b,&c);if(a0 & b0 & c0 & a+bc & a+cb & b+ca)printf(%.2f,%.2f,%.2f)能圍成三角形n,a,b,c);elseprintf(%.2f,%2.2f,%.2f)不能圍成三角形n,a,b,c);4.編程實現(xiàn)將從鍵盤輸入的一個正整數(shù)逆序輸出,如輸入1234,輸出3421參考程序#include int main()int n;printf(input a number:);scanf(%d,&

4、n);doprintf(%d,n%10);n/=10;while(n!=0);return 0;5.輸入一個110范圍內(nèi)的整數(shù),計算該數(shù)的階乘。參考程序#include int main()int n,s=1,i;printf(input a number(110):);scanf(%d,&n);for(i=2;i=n;i+)s*=i;printf(%d!=%dn,n,s);return 0;6.從鍵盤輸入的一行字符,統(tǒng)計其含有多少個字符?!緟⒖汲绦颉?include int main()char ch;int cnt=0;printf(input a char line:);ch=getch

5、ar();while(ch!=n)cnt+;ch=getchar();printf(%dn,cnt);return 0;7.打印乘法口訣表?!緟⒖汲绦颉?include int main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%d*%d=%-3d,j,i,i*j);printf(n);return 0;8.在屏幕上打印如下規(guī)律的圖形,具體行數(shù)由鍵盤輸入。 * * * * *【參考程序】#include int main()int i,j,n;printf(請輸入打印圖形的行數(shù):);scanf(%d,&n);for(i=1;i=n;i+)fo

6、r(j=1;j=n-i;j+)printf( );for(j=1;j=2*i-1;j+)printf(*);printf(n);return 0;9.從鍵盤輸入一個正整數(shù),編程判斷其是否為素數(shù)(質(zhì)數(shù)).【參考程序】#include int main()int i,n;printf(請輸入一個正整數(shù):);scanf(%d,&n);for(i=2;i*i=n;i+)if(n%i=0)break;if(i*i=n|n=1)printf(%d不是一個素數(shù).n,n);elseprintf(%d是一個素數(shù).n,n);return 0;10.從鍵盤輸入100個整數(shù),求其中正整數(shù)的和?!緟⒖汲绦颉?inclu

7、de #define N 100int main()int n,s=0,i;for(i=1;i=N;i+)printf(請輸入第%d個整數(shù):,i);scanf(%d,&n);if(n0)continue;s+=n;printf(%dn,s);return 0;11.從鍵盤輸入1000個學(xué)生某門課程的百分制成績,分別統(tǒng)計其中80分以上(即大于或等于80)、60分以上及低于60分的人數(shù)?!緟⒖汲绦颉?include #define N 1000int main()int m,n,k,i;float score;m=n=k=0;for(i=1;i100|score=80)m+;else if(sco

8、re=60)n+;elsek+;printf(%d:%d:%dn,m,n,k);return 0;12.運用如下公式計算圓周率的近似值,當(dāng)最后一項的絕對值小于10-6時,停止計算。4=1-13+15-17+-1n-112n-1+【參考程序】#include int main()double pi=0.0,t=1.0;int sgn=1;while(t)pi+=sgn/t;sgn=-sgn;t+=2;printf(Pi=%.6lfn,4*pi);return 0;13.古代某工地需要搬運磚塊,已知男人每人每次搬3塊,女人每人每次搬2塊,小孩兩人每次抬一塊,現(xiàn)有45人一次正好搬完全部磚塊,請問男人

9、、女人、小孩各幾人?【參考程序】#include int main()int w,m,c;for(m=0;m=15;m+)for(w=0;w=22;w+)c=45-m-w;if(m*3+w*2+c*.5=45)printf(%d:%d:%dn,m,w,c);return 0;14.從鍵盤輸入兩個正整數(shù)到m、n中,求它們的最大公約數(shù)和最小公倍數(shù)。【參考程序】#include int main()int m,n,m1,n1,r;printf(請輸入兩個正整數(shù):);scanf(%d%d,&m,&n);m1=m;n1=n;r=m%n;while(r!=0)m=n;n=r;r=m%n;printf(gc

10、d(%d,%d)=%dn,m1,n1,n);printf(lcm(%d,%d)=%dn,m1,n1,m1*n1/n);return 0;14.編程計算如下式子的值,直到n等于100。1-12+13-14+-1n-11n+【參考程序】#include int main()double s=0.0,t=1.0;int sgn=1;while(t=100)s+=sgn/t;sgn=-sgn;t+=1;printf(s=%.6lfn,s);return 0;15.計算如下規(guī)律式子的值。其中a與n的值都是由鍵盤輸入確定。如當(dāng)a為2,n為3時,該式子表示的含義為2+22+222,故結(jié)果為246。a+aa+

11、aaa+aaaa(n個a)【參考程序】#include int main()int a,n,s=0,t;printf(input a,n:);scanf(%d%d,&a,&n);t=a;while(n0)s+=t;t=t*10+a;n-;printf(%dn,s);return 0;16.計算如下式子的值。1+32+54+76+【參考程序】#include int main()int n;float s=0.0;for(n=2;n=100;n+=2)s+=(float)(n+1)/n;printf(%.6fn,s);return 0;17.如數(shù)列第1項為2,此后各項的值均為其前一項的2倍再加3

12、,編程計算該數(shù)列的前10項之和。【參考程序】#include int main()int n,s=0,i;n=2;for(i=1;i=3;i+)s+=n;n=n*2+3;printf(%dn,s);return 0;18.現(xiàn)要求將1角錢換成1分、2分或5分的硬幣,請問有多少種換法,并輸出每一種換法?!緟⒖汲绦颉?include int main()int one,two,five,cnt=0;for(five=0;five=2;five+)for(two=0;two=0)printf(%d:%d:%dn,one,two,five);cnt+;printf(一共有%d種換法n,cnt);retu

13、rn 0;20.編程統(tǒng)計并輸出200到300以內(nèi)的全部素數(shù)?!緟⒖汲绦颉?include int main()int m,i,k=0;for(m=201;m300;m+=2)for(i=3;i*im)k+;printf(%8d,m);if(k%5=0)printf(n);printf(n200到300之間一共有%d個素數(shù)n,k);return 0;21.打印所有“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個三位數(shù),其各位數(shù)字的立方和等于該數(shù)自身。如153【參考程序】#include int main()int m,n,k;for(m=1;m=9;m+)for(n=0;n=9;n+)for(k=0;k=

14、9;k+)if(m*m*m+n*n*n+k*k*k=m*100+n*10+k)printf(%5d,m*100+n*10+k);printf(n);return 0;22.輸出200到300之間滿足如下條件的數(shù),即各位數(shù)字之和為12,數(shù)字之積為42.【參考程序】#include int main()int m,n;for(m=0;m=9;m+)for(n=0;n=9;n+)if(m+n=10&m*n=21)printf(%5d,200+m*10+n);printf(n);return 0;23.編程將一個正整數(shù)進(jìn)行質(zhì)因數(shù)分解,例如輸入90,須在屏幕上打印出90=2*3*3*5【參考程序】#in

15、clude int main()int m,n;scanf(%d,&m);printf(%d=,m);n=2;while(m!=1)while(m%n=0)printf(%d,n);if(m!=n)printf(*);m/=n;n+;printf(n);return 0;24.輸入一行字符,分別統(tǒng)計其中英文字母、空格、數(shù)字及其他字符的個數(shù)?!緟⒖汲绦颉?include int main()char ch;int letter,space,digit,other;letter=space=digit=other=0;printf(input a char line:);ch=getchar();

16、while(ch!=n)if(ch=a&ch=A&ch=0&ch=9)digit+;else if(ch= )space+;elseother+;ch=getchar();printf(%d:%d:%d:%dn,letter,digit,space,other);return 0;25.編程輸出1000以內(nèi)的全部完數(shù)。所謂完數(shù),是指該數(shù)恰好等于他的全部真因子的和。如6=1+2+3【參考程序】#include int main()int m,i,t;for(m=2;m=1000;m+)t=1;for(i=2;i*i=m;i+)if(m%i=0)t+=i;if(i*i!=m)t+=m/i;if(t

17、=m)printf(%dn,m);return 0;26.從鍵盤輸入10個整數(shù),求這些整數(shù)的總和及平均值,并統(tǒng)計不低于平均值的元素個數(shù)?!緟⒖汲绦颉?include #define N 5int main()int aN,i,cnt=0;float aver;printf(請輸入%d個整數(shù):,N);aver=0.0;for(i=0;iN;i+)scanf(%d,&ai);aver+=ai;for(i=0;i=aver/N)cnt+;printf(這%d個整數(shù)的和是%.0f,平均值是%.2fn,N,aver,aver/10);printf(不低于平均值的數(shù)有%d個n,cnt);return 0;

18、27.設(shè)有存放于數(shù)組中一組整數(shù),現(xiàn)從鍵盤輸入一個整數(shù),在數(shù)組中查找該數(shù),如果數(shù)組中含有該數(shù),則輸出其全部出現(xiàn)位置,否則輸出“*不存在”,*代表該數(shù)值?!緟⒖汲绦颉?include #define N 10int main()int aN=16,35,48,29,56,43,93,64,90,48;int n,sgn,i;printf(請輸入待查找的整數(shù):);scanf(%d,&n);sgn=0;for(i=0;iN;i+)if(ai=n)sgn=1;printf(%d在數(shù)組中的%d位置出現(xiàn).n,n,i+1);if(sgn=0)printf(%d不存在n,n);return 0;28.設(shè)有一存在

19、有10個隨機數(shù)的數(shù)組,請編程找出其中的最大數(shù)及其在數(shù)組中的位置?!緟⒖汲绦颉?include #include #include #define N 10int main()int aN,i,k;srand(time(NULL);for(i=0;iN;i+)ai=rand();printf(%6d,ai);k=0;for(i=1;iak)k=i;printf(n最大值是%d,它是數(shù)組的第%d個數(shù)n,ak,k+1);return 0;29.現(xiàn)有一未排序的整型數(shù)組,要求用選擇法將該數(shù)組按由大到小的順序排序。【參考程序】#include #define N 10int main()int aN,i,

20、k,j,t;printf(請輸入%d個整數(shù):,N);for(i=0;iN;i+)scanf(%d,&ai);for(j=0;jN-1;j+)k=j;for(i=j+1;iak)k=i;t=aj;aj=ak;ak=t;printf(排序后的數(shù)組:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;30.現(xiàn)有一數(shù)組,其元素已按由大到小的順序排列,現(xiàn)從鍵盤輸入一個數(shù),插入到該數(shù)組中,要求插入后的數(shù)組元素依然由大到小排列。【參考程序】#include #define N 10int main()int aN+1=98,96,87,78,72,64,56

21、,51,43,36;int n,i;printf(插入前的數(shù)組:n);for(i=0;i=0;i-)if(ain)ai+1=ai;elsebreak;ai+1=n;printf(插入后的數(shù)組:n);for(i=0;i=N;i+)printf(%5d,ai);printf(n);return 0;31. 設(shè)有存放于一維數(shù)組中一組整數(shù),且已按由小到大順序排序,現(xiàn)從鍵盤輸入一個整數(shù),在數(shù)組中查找該數(shù),如果數(shù)組中含有該數(shù),則輸出該數(shù)的出現(xiàn)位置,否則輸出“*不存在”,*代表該數(shù)值?!緟⒖汲绦颉?include #define N 10int main()int aN=93,90,64,56,50,48,

22、43,35,29,16;int n,sgn,top,bott,mid;printf(請輸入待查找的整數(shù):);scanf(%d,&n);sgn=0;top=0;bott=N-1;while(topn)top=mid+1;elsebott=mid-1;if(sgn=0)printf(%d不存在n,n);elseprintf(%d在第%d個數(shù)位置被發(fā)現(xiàn).n,n,mid+1);return 0;32.按如下格式打印楊輝三角形,具體行數(shù)由鍵盤輸入。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1【參考程序】#include #define N 20int main

23、()int yangNN,n,i,j;printf(請輸入要打印的的行數(shù):);scanf(%d,&n);for(i=0;in;i+)yangi0=yangii=1;for(i=2;in;i+)for(j=1;ji;j+)yangij=yangi-1j+yangi-1j-1;for(i=0;in;i+)for(j=0;jn-i-1;j+)printf(%3c, );for(j=0;j=i;j+)printf(%6d,yangij);printf(n);return 0;33.編程實現(xiàn)從一字符串中刪除指定的字符。【參考程序】#include #define N 80int main()char s

24、trN,ch,i,j=0;printf(請輸入一個字符串:);gets(str);printf(請輸入待刪除的字符:);ch=getchar();for(i=0;stri!=0;i+)if(stri!=ch)strj+=stri;strj=0;printf(刪除指定字符后的字符串:%sn,str);return 0;34.現(xiàn)有若干字符串存放于一個二維數(shù)組中,每行存放一個字符串,現(xiàn)要求用冒泡法將這些字符串按由小到大排序,即按字符母順排序。【參考程序】#include #include #define N 80#define M 6int main()char strMN,tempN,i,j;pr

25、intf(請輸入%d個字符串:,M);for(i=0;iM;i+)gets(stri);for(i=0;iM-1;i+)for(j=0;j0)strcpy(temp,strj);strcpy(strj,strj+1);strcpy(strj+1,temp);printf(排序后的字符串:n);for(i=0;iM;i+)puts(stri);return 0;35.現(xiàn)有一個英文句子,請編程統(tǒng)計其中的單詞數(shù),已知單詞之間用空格分隔(空格數(shù)大于等于1),不考慮單詞是否為合法英語單詞,特別提醒,第一單詞之前也可能有若干空格?!緟⒖汲绦颉?include #define N 80int main()c

26、har strN,i,cnt;printf(請輸入一個英文句子,以回車結(jié)束:);gets(str);if(str0= |str0=0)cnt=0;elsecnt=1;for(i=0;stri!=0;i+)if(stri= &stri+1!= &stri+1!=0)cnt+;printf(該句子一共含有%d個單詞n,cnt);return 0;36.現(xiàn)有一實型一維數(shù)組,請編程分別找出其中的最大值和最小值,并將最大值與數(shù)組的最后一個元素交換,最小值與數(shù)組的第一個元素交換。【參考程序】#include #define N 10int main()float aN,t;int ma,mi,i;prin

27、tf(請輸入%d個實數(shù):);for(i=0;iN;i+)scanf(%f,&ai);ma=mi=0;for(i=1;iama)ma=i;if(aiami)mi=i;t=a0;a0=ami;ami=t;if(ma=0)ma=mi;t=ama;ama=aN-1;aN-1=t;printf(處理后的數(shù)組:);for(i=0;iN;i+)printf(%6.2f,ai);printf(n);return 0;37.編程求一方陣的兩條對角線元素和(包括主副對角線)【參考程序】#include #define N 5int main()int aNN,i,j,s=0;printf(請輸入一個方陣:n);f

28、or(i=0;iN;i+)printf(請輸入方陣的第%d行元素:,i+1);for(j=0;jN;j+)scanf(%d,&aij);for(i=0;iN;i+)s+=aii;for(i=0;iN;i+)if(i!=N-i-1)s+=aiN-i-1;printf(該方陣的對角元素的和為%dn,s);return 0;38.編程將一個一維數(shù)組中的元素顛倒次序,即第1元素與最后一個元素交換位置,第2個元素倒數(shù)第2個元素交換位置,依此類推。【參考程序】#include #define N 10int main()int aN,i,t;printf(請輸入%d個整數(shù):,N);for(i=0;iN;i

29、+)scanf(%d,&ai);for(i=0;iN/2;i+)t=ai;ai=aN-i-1;aN-i-1=t;printf(顛倒后的數(shù)組:);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;39.用篩法求100以內(nèi)的全部素數(shù)?!緟⒖汲绦颉?include #define N 100int main()int aN,i,j;for(i=0;iN;i+)ai=i+1;a0=0;for(i=0;i*i=N;i+)if(ai!=0)for(j=i+1;jN;j+)if(aj%ai=0)aj=0;printf(%d以內(nèi)的全部素數(shù):n,N);for(i=0

30、;iN;i+)if(ai!=0)printf(%5d,ai);printf(n);return 0;40.對于從鍵盤輸入的英文句子,將其中的空格用*替換?!緟⒖汲绦颉?include #define N 81int main()char strN,i;printf(請輸入一個英文句子:);gets(str);for(i=0;stri!=0;i+)if(stri= )stri=*;printf(替換后的字符串:);puts(str);return 0;41.請寫一個函數(shù)用于統(tǒng)計在一個一維數(shù)組中出現(xiàn)指定數(shù)值的次數(shù),要求一維數(shù)組及指定數(shù)值都是由主函數(shù)通過參數(shù)傳遞?!緟⒖汲绦颉?include #de

31、fine N 10int myseek(int a,int len,int n)int i,cnt=0;for(i=0;ilen;i+)if(ai=n)cnt+;return cnt;int main()int numN,n,i,count;printf(請輸入%d個整數(shù):,N);for(i=0;iN;i+)scanf(%d,&numi);printf(請輸入待統(tǒng)計其出現(xiàn)次數(shù)的數(shù):);scanf(%d,&n);count=myseek(num,N,n);printf(%d一共出現(xiàn)%d次.n,n,count);return 0;42.編寫一個函數(shù),用于判斷給定的整數(shù)是否為素數(shù),如是則返回1,否則

32、返回0,并寫一主函數(shù)調(diào)用上述函數(shù),輸出3100之間的所有素數(shù)?!緟⒖汲绦颉?include int isprime(int n)int i;for(i=2;i*i=n;i+)if(n%i=0)return 0;return 1;int main()int i;for(i=3;i100;i+=2)if(isprime(i)=1)printf(%5d,i);printf(n);return 0;43.編寫了遞歸函數(shù)求Fibonacci數(shù)列的第n項,其中n由參數(shù)傳遞,并在主函數(shù)中調(diào)用該函數(shù)輸出數(shù)列的前20項?!緟⒖汲绦颉?include long fib(int n)if(n=1|n=2)retur

33、n 1;return fib(n-1)+fib(n-2);int main()int i;for(i=1;i21;i+)printf(%l8d,fib(i);printf(n);return 0;44.編寫一函數(shù),實現(xiàn)用冒泡法將數(shù)組元素按由大到小排列,其中排序的數(shù)組及參與排序的元素個數(shù)由參數(shù)傳遞。【參考程序】#include #define N 10void bubble_sort(int arr,int n)int i,j,t;for(i=0;in-1;i+)for(j=0;jn-i-1;j+)if(arrjarrj+1)t=arrj;arrj=arrj+1;arrj+1=t;int mai

34、n()int aN,i;printf(請輸入%d個整數(shù):,N);for(i=0;iN;i+)scanf(%d,&ai);bubble_sort(a,N);printf(排序后的數(shù)組:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;45.編寫一函數(shù),實現(xiàn)用選擇法將數(shù)組元素按由小到大排列,其中排序的數(shù)組及參與排序的元素個數(shù)由參數(shù)傳遞?!緟⒖汲绦颉?include #define N 10void select_sort(int arr,int n)int i,j,t,k;for(i=0;in-1;i+)k=i;for(j=i+1;jn;j+)if(arrjarrk)k=j;t=arrk;arrk=arri;arri=t;int main()int aN,i;printf(請輸入%d個整數(shù):,N);for(i=0;iN;i+)scanf(%d,&ai);select_sort(a,N);printf(排序后的數(shù)組:n);for(i=0;iN;i+)printf(%5d,ai);printf(n);return 0;46.編寫一個函數(shù),其原型為void delete_char(char str,char ch),功能是從參數(shù)str指定的字符串刪除由ch指定的字符?!緟⒖汲绦颉?include #define N 81void d

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論