中國石油大學C語言上機題答案(2015版)答案_最全最詳細(共75頁)_第1頁
中國石油大學C語言上機題答案(2015版)答案_最全最詳細(共75頁)_第2頁
中國石油大學C語言上機題答案(2015版)答案_最全最詳細(共75頁)_第3頁
中國石油大學C語言上機題答案(2015版)答案_最全最詳細(共75頁)_第4頁
中國石油大學C語言上機題答案(2015版)答案_最全最詳細(共75頁)_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中國(zhn u)石油大學c語言上機題答案(d n)大全(2014版)最全最詳細(xingx)1.1 Hello world.讓我們用C語言向世界問好。最早的程序基本也是這個樣子的:程序一:#include void main() printf(Hello world.n);程序二:#include int main() printf(Hello world.n); return 0;上面的程序你任意模仿一個,看看是否可以通過?如果你能通過這個簡單的程序,那就讓我們繼續(xù)完成后面的習題吧。 輸入:無輸出:Hello world.#includeint main() printf(Hello wo

2、rld.n);1.2 Welcome to Beijing.讓我們來練習如何顯示多行文字。 輸入:無輸出:就是下面的那段文字。#includevoid main()printf(Welcomen);printf(ton);printf(Beijing.n);1.3 練習最簡單的printf和scanfprintf函數(shù)和scanf函數(shù)是C語言中最常用的函數(shù)之一,下面讓我們練習一下吧。 輸入:整型變量x的值。輸出:輸出整型變量x對應的十進制、八進制和十六進制形式。認真觀察-1的八進制和十六進制輸出,請想想是為什么。#include int main()int x;scanf(%d,&x);prin

3、tf(x=%d,x);printf(x=%o,x);printf(x=%xn,x);return 0;1.4 練習兩個(lin )整數(shù)之間的運算背景(bijng):基本(jbn)練習。輸入:接受兩個整數(shù),每個整數(shù)之間使用空格分隔。例如輸入格式為:123 444輸出:分別輸出進行+、-、*、/、*之后的運行結(jié)果。#includeint main()int x,y; scanf(%d%d,&x,&y); printf(%d+%d=%dn,x,y,x+y); printf(%d-%d=%dn,x,y,x-y); printf(%d*%d=%dn,x,y,x*y); printf(%d/%d=%dn,

4、x,y,x/y); printf(%d%d=%dn,x,y,x%y); return 0;1.5 學習打印你的第一個圖形背景:我們已經(jīng)學習了printf函數(shù),這里給出了一個小程序,它運行的結(jié)果是輸出一個由星號(*)組成的4*4的正方形。程序如下:#include int main() printf(*n); printf(*n); printf(*n); printf(*n); return 0;要求:按照上面的程序范例,編寫一個小程序,要求輸出的是 4 行由*號組成的等腰三角形。輸入:無。輸出:指定圖形。#include int main() printf( *n); printf( *n)

5、; printf( *n); printf(*n); return 0;2.1 整型數(shù)的表示(biosh)范圍編寫一個(y )循環(huán)程序,輸入 N 值,輸出(shch) N 的階乘。關于循環(huán)程序怎么編寫,可以參考教材第3章P66頁的例題4.2和第5章P82的例題5.1的內(nèi)容。注意整型數(shù)的表示范圍,如果當輸入的 N 比較大時,例如 N 等于 20 時,輸出怎么是負數(shù)了?自己想明白吧!#includevoid main()int N,i;int sum=1;N=2;scanf(%d,&N);if(N=16)for (i=1;i=17)printf(N is too big!n);2.2 求正弦函數(shù)值

6、已知求正弦 sin(x) 的近似值的多項式公式為: sin(x) = x - x3/3! + x5/5! - x7/7!+ + (-1)n x2n+1/(2n+1)! + 編寫程序,要求輸入 x (單位是弧度)和,按上述公式計算 sin(x) 的近似值,要求計算的誤差小于給定的。 此題當然要用到循環(huán)語句,到第5章去找個貓來照著畫吧,循環(huán)的終止條件就是本次計算出來的正弦函數(shù)值和上次計算的值的差小于給定的。求兩個值的差時,要求出其絕對值,使用庫函數(shù)fabs(),頭文件在math.h里。友情提示:給定的誤差值越小,計算的精度越高,但是要注意嘍,給的精度太高,你的程序會成為死循環(huán)。如果出現(xiàn)死循環(huán)的情況

7、,可以用+鍵退出程序。#include #include int main() float x,eps,s,y=0,y0,t; int n,j; scanf(%f%f,&x,&eps); n=t=j=1; s=x; do y0=y; if (n%2=0) y=y-s/t; else y=y+s/t; s*=x*x; t*=(j+1)*(j+2); j+=2; n+; while(fabs(y0-y)eps);printf(%fn,sin(x);system(PAUSE); return 0;2.3 判斷(pndun)輸入的字符的類型我們將字符(z f)分為五類:大寫字母、小寫字母、數(shù)字、控制字

8、符、其他字符。編寫程序,從鍵盤輸入一個字符(z f),輸出字符所屬的類型:大寫字母時輸出capital letters, 小寫字母時輸出small letters,數(shù)字是輸出figures,其他字符時輸出 others。#includevoid main()char c; c = getchar ( ); if (c = 0 & c = A & c = a & c = z) printf (small lettersn); else printf (othersn);3.1 找零錢 假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 種硬幣,在 給顧客找硬幣時,一般都會盡可能地選用硬

9、幣個數(shù)最小的方法。 例如,當要給某顧客找 7 角 2 分錢時,會給他一個 5 角, 2 個 1 角 和 1 個 2 分的硬幣。試編寫一個程序,輸入的是要找給顧客的零 錢(以分為單位),輸出的是應該找回的各種硬幣數(shù)目,并保 證找回的硬幣數(shù)最少。#include int main() int x1,x2,x3,x4,x5; int x; scanf(%d,&x); x1=x/50; x2=x%50/10; x3=x%50%10/5; x4=x%50%10%5/2; x5=x%50%10%5%2/1; printf(%dn,x1); printf(%dn,x2); printf(%dn,x3); p

10、rintf(%dn,x4); printf(%dn,x5); return 0; 3.2 計算(j sun)時鐘的夾角背景:鐘面上的時針和分針之間的夾角(ji jio)總是在 0 度 359 度之間。舉例來說,在十二點的時候(sh hou)兩針之間的夾角為 0 度,而在六點的時候夾角為 180 度,在三點的時候為 90 度。本題要解決的是計算 0:00 到 12:00之間任意一個時間的夾角。輸入: 每組測試數(shù)據(jù)包含兩個數(shù)字:第一個數(shù)字代表小時 ( 大于等于 0 小于 12) ,第二個數(shù)字代表分 ( 在區(qū)間 0, 59 上 ) 。 輸出: 對應每組測試數(shù)據(jù),用常用格式顯示時間以及這個時候時針和分

11、針間的最小夾角,精確到小數(shù)點后一位。友情提示:以表中心到12點的連線為基準,分針每走1分鐘是6度,時針與基準的夾角每個小時也是30度,從整點開始,每過1分鐘時針再增加0.5度。 提示:時鐘夾角計算公式|5.5m-30h|,h為時針,m為分針。求浮點型絕對值的函數(shù)為fabs,需要包含math.h頭文件#include stdio.h#include math.hint main()int h,m;double angle;scanf(%d%d,&h,&m);angle=fabs(5.5*m-30*h);if(angle180)angle=360-angle;printf(At %d:%02d t

12、he angle is %.1f degrees.n,h,m,angle);3.3 照貓畫貓:計算圓柱的側(cè)面積及體積如果已知圓柱的底面半徑 r ,以及高 h ,則可計算出圓柱的側(cè)面積 s=2rh ,體積 v= r 2 h 。其中 =3.1415926 輸入 第一行輸入圓柱的底面半徑 r第二行輸入(shr)圓柱的高 h 輸出(shch) s=,v= 要求 1. 所有變量都定義為雙精度類型2. 結(jié)果精確到小數(shù)點后兩位#include stdio.h #define n 3.1415926 int main() float r,h,s,v; printf; scanf(%f%f,&r,&h); s=

13、2*n*r*h; v=n*r*r*h; printf(s=%6.2f,v=%6.2fn,s,v); 3.4 分離整數(shù) 任意從鍵盤上輸入一個三位正整數(shù),要求正確地分離出它的個位、十位和百位,并分別在屏幕上輸出。比如輸入的三位正整數(shù) #include stdio.hint main()int x,hundreds,tens,units;printf;scanf(%d,&x);hundreds=x/100;tens=x%100/10;units=x%100%10;printf(units=%d,tens=%d,hundreds=%dn,units,tens,hundreds);3.5 雞兔同籠已知籠

14、中有頭h個,有腳f條,問籠中雞兔各有多少只? 輸入:頭和腳的數(shù)目輸出:兔子和雞的數(shù)目(輸出語句為:printf(rabbit=%d,chicken=%d,rabbit,chicken);)Sample輸入:10 20輸出:rabbit=0,chicken=10#include stdio.hint main()int chicken,rabbit,f,h;scanf(%d%d,&h,&f);rabbit=(f-2*h)/2;chicken=(4*h-f)/2;printf(rabbit=%d,chicken=%dn,rabbit,chicken);4.1 溫度(wnd)轉(zhuǎn)換背景(bijng):

15、 經(jīng)常出國旅行的驢友都知道,需要時時了解當?shù)氐臍鉁貭顩r,但不少國家采用(ciyng)了不同的溫度計量單位:有些使用華氏溫度標準(F),有些使用攝氏溫度(C)。現(xiàn)在,請你根據(jù)溫度轉(zhuǎn)換公式設計一個溫度轉(zhuǎn)換程序,可以進行溫度轉(zhuǎn)換。如果輸入攝氏溫度,顯示轉(zhuǎn)換的華氏溫度;如果輸入華氏溫度,顯示轉(zhuǎn)換的攝氏溫度。溫度轉(zhuǎn)換的公式為:F(C95)32 ;C(F32)59 ;式中F-華氏溫度,C-攝氏溫度。輸入: 第一個數(shù)據(jù)(1 或 2 )確定轉(zhuǎn)換的類型:華氏轉(zhuǎn)攝氏(1);攝氏轉(zhuǎn)華氏(2);第二個數(shù)據(jù)是相應需要轉(zhuǎn)換的溫度值。 輸出: 相應的轉(zhuǎn)換后的溫度值(保留小數(shù)點后 2 位)。#include void mai

16、n() int lx; double f,c; scanf(%d,&lx); if(lx=1) scanf(%lf,&f); c=(f-32)*5/9; printf(The Centigrade is %.2fn,c); else scanf(%lf,&c); f=(c*9/5)+32; printf(The Fahrenheit is %.2fn,f); 4.2 分段函數(shù)有一分段函數(shù),y=f(x)。當x小于6時,y=x-12;當x大于等于6且小于15時,y=3x-1;當x大于等于15時,y=5x+9.從鍵盤上輸入一個整數(shù)x,輸出對應的y值。 #include void main()int

17、x,y;scanf(%d,&x);if(x6)y=x-12;else if(x15)y=3*x-1;elsey=5*x+9;printf(%dn,y);return 0;4.3 整數(shù)(zhngsh)位數(shù)判斷 輸入一個(y )不多于5位的正整數(shù),要求(yoqi): (1)求它是幾位數(shù);(2)逆序打印出各位數(shù)字。#include #include #define SIZE 5intmain(void) int bit_count;/位數(shù) long int input_num;/輸入數(shù) int resultSIZE;/存放各個位的數(shù) int i; scanf(%ld, &input_num); if

18、 (input_num 99999) printf(Invalid inputn); exit(1); for( bit_count = 0; input_num; +bit_count) resultbit_count = input_num % 10; input_num /= 10; printf(%dn,bit_count); for(i = 0; i bit_count; +i) printf(%d,resulti); printf(n); exit(0);4.4 四位數(shù)拆分輸入一個四位數(shù),判斷千位、百位、十位和個位數(shù)字之和是否為偶數(shù),如果是,輸出Yes,如果不是,輸出No;如果不是

19、四位數(shù),輸出Invalid data。 #includevoid main() int x,a,b,c,d,e; scanf(%d,&x); if(x/1000=1) printf(Invalid datan); else a=x/1000; b=x%1000/100; c=x%1000%100/10; d=x%1000%100%10; e=(a+b+c+d)%2; if(e=0) printf(Yesn); else printf(Non); 4.5 磨磨你的砍柴刀:判斷(pndun)三角形的形狀要求(yoqi):輸入三角型的三條邊,判斷三角形的形狀。假設輸入的三邊邊長均0。輸入(shr):

20、三角型的3條邊的長度(int型)。輸出:等邊三角形:equilateral triangle.等腰三角形:isoceles triangle.不構成三角形:non-triangle.一般三角形:triangle.#includevoid main() float a,b,c; scanf(%f%f%f,&a,&b,&c); if(a+bc|b+ca|c+a。輸入其他字符時原樣輸出。 友情提示:整數(shù)之間運算的結(jié)果要取整,例如5/2的結(jié)果是2,而5.0/2.0對小數(shù)四舍五入的結(jié)果就是3.0了。所以輸入大寫英文字母時的輸出要仔細考慮。#include int main() char ch; int

21、a; ch=getchar(); if(ch=97&ch=65&ch=48&ch=57) ch=ch/10+ch; putchar(ch); else putchar(ch); printf(n); 4.7 判斷(pndun)某年某月的天數(shù)一年有365天,有的月份(yufn)有31天,有的有30天,2月份(yufn)閏年的時候是29天,非閏年的時候是28天?,F(xiàn)在要求從鍵盤上輸入一個年份和月份,輸出其對應的天數(shù)。#include main() int year,month,days; scanf(%d %d, &year,&month); switch(month) case 1: case 3

22、: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11:days=30;break; case 2:if(year % 4 =0) & (year % 100 !=0) |(year % 400=0) days=29; else days=28; printf(%dn,days);4.8 花多少錢買衣服周末商場促銷呢,某品牌服裝既可以買套裝,也可以買單件。若買的不少于套,每套元;不足套的每套元,只買上衣每件元,只買褲子每條元。編寫程序,輸入計劃購買的上衣數(shù)量 a 和褲子

23、的數(shù)量 b ,計算并輸出應該付的款 m 。#includevoid main() int a,b,y; scanf(%d%d,&a,&b); if(b=a&b50) y=90*b+(a-b)*60; if(b=50) y=80*b+(a-b)*60; if(ab&a50) y=90*a+(b-a)*45; if(a=50) y=80*a+(b-a)*45; printf(%dn,y);4.9 到郵局(yuj)去寄包裹你去郵局給朋友寄禮物。發(fā)現(xiàn)郵局對郵寄包裹的費用是這樣規(guī)定(gudng)的:如果包裹長寬高任意一個尺寸超過米,或重量超過千克,不予郵寄;對可以郵寄的包裹每件收手續(xù)費 0.2 元,不同

24、重量的郵資(yuz)按下表計算: 重量(千克) 收費標準(元) 小于 . 大于等于但不超過 . 大于等于但不超過 . 編寫程序,輸入包裹的長、寬、高尺寸和重量,輸出所需的郵資(輸出結(jié)果中包含兩位小數(shù)即可),超出尺寸或重量的輸出 Error” .#includevoid main() float a,b,c,m,y; scanf(%f,%f,%f,%f,&a,&b,&c,&m); if(a1|b1|c1|m30) printf(Errorn); else if(m10) y=0.80*m+0.2; else if(m20) y=0.75*m+0.2; else y=0.70*m+0.2; pri

25、ntf(%.2fn,y); 4.10 輸出(shch)星期幾的英文表示輸入(shr)用數(shù)字(1-7)表示的星期幾,輸出星期幾的英文表示,輸入(shr)的數(shù)字有誤,輸出單詞Error(回車)。#includevoid main() int a; scanf(%d,&a); switch(int)(a) case 1:printf(Mondayn);break; case 2:printf(Tuesdayn);break; case 3:printf(Wednesdayn);break; case 4:printf(Thursdayn);break; case 5:printf(Fridayn);

26、break; case 6:printf(Saturdayn);break; case 7:printf(Sundayn);break; default:printf(Errorn); 5.1輸出一行星號問題描述編寫程序在一行中輸出 N 個星號。輸入星號個數(shù)值N輸出一行中N個星號#include int main()int N,i;scanf(%d,&N);for(i=1;i=N;i+)printf(*);printf(n);5.2 打印平行四邊形問題描述輸入圖形的高 n ,輸出如下例( n=5 )所示的圖形 .*輸入(shr)整數(shù)(zhngsh)n例如(lr) 5輸出由*組成的高為5的平行四

27、邊形#include int main()int N,i,j;scanf(%d,&N);for(i=1;i=N;i+)for(j=1;ji;j+)printf( );for(j=1;j=N;j+) printf(*); printf(n);5.3 編程計算問題描述編寫程序,輸入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-.+1/n (保留四位小數(shù))輸入n的值輸出上述算式的求和結(jié)果(結(jié)果保留四位小數(shù))輸入樣例1輸出樣例sum=1.0000#include int main()int n,i,j,sign=-1;double f, sum=0;scanf(%d,&n);for

28、(i=1;i=n;i+)f=1.0/i;sign=-sign;sum=sum+sign*f; printf(sum=%.4lfn,sum);5.4 分數(shù)(fnsh)序列問題(wnt)描述有一個(y )分數(shù)序列:,輸入整數(shù)n,求出其前n項的和。輸入整數(shù)n輸出上述分數(shù)序列的前n項之和提示:輸出語句格式為 printf(sum=%16.10fn,s);輸入樣例1輸出樣例sum= 2.0000000000#include int main()int i,n,k;double f,sum=0,a=1.0,b=1.0; scanf(%d,&n); for(i=1;i=n;i+) k=a;a=b;b=a+k

29、; f=b/a;sum=sum+f; printf(sum=%16.10lfn,sum); 5.5 求e的值問題描述編寫程序,從鍵盤輸入整數(shù) n , 求 e 的值。e=1+1/1!+1/2!+1/3!+.+1/n! 注意:用 double 型數(shù)據(jù)計算。輸入整數(shù)n輸出e的值提示:輸出(shch)語句 printf(e=%16.10fn,e); 輸入(shr)樣例2輸出(shch)樣例e= 2.5000000000#include void main()int n,i,j;double k,f,sum=1; scanf(%d,&n); for(i=1;i=n;i+) for(j=1,k=1;j=i

30、;j+) k=k*j; f=1.0/k; sum=sum+f; printf(e=%16.10lfn,sum); 5.6 最大公約數(shù)問題描述輸入兩個正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)輸入兩個正整數(shù)m和n輸出m和n的最大公約數(shù)和最小公倍數(shù)輸入樣例2 8輸出樣例the greatest common divisor is 2the least common multiple is 8#include int main() int m,n,r,t,M,N,a,b,c; scanf(%d%d,&m,&n); if(mn) t=m; m=n; n=t; a=m; b=n; while(r=m%

31、n)!=0) m=n; n=r; printf(the greatest common divisor is %dn,n); M=a/n; N=b/n; c=M*N*n; printf(the least common multiple is %dn,c); return 0; 5.7 水仙花數(shù)問題(wnt)描述輸出所有(suyu)的水仙花數(shù)。所謂的水仙花數(shù)是指一個3位數(shù),其各位數(shù)字立方和等于該數(shù)本身(bnshn)。例如153是一水仙花數(shù),因為153=13+53+33輸入無輸出所有的水仙花數(shù) 提示:輸出語句 printf(%dn,n);#include void main()int i,a,b

32、,c,d; for(i=100;i=999;i+) a=i/100; b=(i%100)/10; c=i%10; d=a*a*a+b*b*b+c*c*c;if(i=d)printf(%dn,i);5.8 完數(shù)問題描述一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為完數(shù)。例如,6的因子為1,2,3,且6=1+2+3,因此6是完數(shù)。輸入一個正整數(shù)n輸出判斷n是否為完數(shù)。如果是,則輸出Yes和它的所有因子;否則,輸出No輸入樣例6輸出(shch)樣例Yes,its factors are 1 2 3#include int main()int a,i,sum=0;scanf(%d,&a); for(i=

33、1;ia;i+)if(a%i=0) sum=sum+i;if(sum=a)printf(Yes,its factors are ); for(i=1;ia;i+)if(a%i=0)printf( %d,i);printf(n);else printf(Non);5.9 素數(shù)(s sh)問題(wnt)描述輸入兩個正整數(shù)m和n,求出m,n區(qū)間的所有素數(shù)輸入兩個整數(shù)m和n輸出m,n區(qū)間的所有素數(shù)輸入樣例2 10輸出樣例2 3 5 7#include int main()int m,n,i,j;scanf(%d%d,&m,&n);for(i=m;i=n;i+)for(j=2;ji;j+)if(i%j=

34、0) break;if(j=i) printf( %d,i);printf(n); return 0;5.10 回文(hu wn)數(shù)問題(wnt)描述輸入一個正整數(shù),判斷(pndun)是否為回文數(shù)。輸入一個正整數(shù)n輸出如果是,輸出Yes,否則輸出No輸入樣例12321輸出樣例Yes#include int main()int a,b,c;scanf(%d,&a);c=a;b=0;while(c0)b=b*10+(int)c%10;c=c/10;if(a=b) printf(Yesn);else printf(Non);5.11 貪吃的猴子問題描述有一只猴子,第一天摘了若干個桃子 ,當即吃了一半

35、,但還覺得不過癮 ,就又多吃了一個。第2天早上又將剩下的桃子吃掉一半,還是覺得不過癮,就又多吃了兩個。以后每天早上都吃了前一天剩下的一半加天數(shù)個(例如,第5天吃了前一天剩下的一半加5個)。到第n天早上再想吃的時候,就只剩下一個桃子了。輸入天數(shù)n輸出第一天的桃子個數(shù)。提示:輸出語句為 printf(Themonkeygot%dpeachsinfirstday.n,sum);輸入樣例5輸出(shch)樣例Themonkeygot114peachsinfirstday.提示(tsh):問題(wnt)分析:總共 t0日 吃掉 剩余1 t0/2+1 t0-(t0/2+1)=t0/2-1 t1=t0/2-

36、1 =t0=(t1+1)*2 2 t1/2+2 t1-(t1/2+2)=t1/2-2 t2=t1/2-2 =t1=(t2+2)*2.n-1 tn-2/2+(n-1) tn-2-(tn-2/2+(n-1)=tn-2/2-(n-1) tn-1=tn-2/2-(n-1) = tn-2= (tn-1+n-1)*2n 1 0 tn-1=1#include int main()int n,i;double sum;scanf(%d,&n);i=n,sum=1;for(;i1;i-)sum=(sum+(i-1)*2; printf(The monkey got %.0lf peachs in first d

37、ay.n,sum); return 0;5.12 馬戲團觀眾人數(shù)問題描述一個馬戲團表演, n 個座位全滿,全部門票收入是 120 元,現(xiàn)在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。根據(jù)總?cè)藬?shù),計算出男人、女人和小孩各多少人。輸入總?cè)藬?shù) n輸出男人、女人和小孩人數(shù),若 n 人無法滿足條件,則輸出“No outputn”#include int main()int n,x,y,z,tag=0;scanf(%d,&n);for(x=0;x=n;x+)for(y=0;y=n;y+)for(z=0;z=n;z+)if(x+y+z=n&50*x+20*y+1*z=1200)tag=1;p

38、rintf(%d %d %dn,x,y,z);if(tag=0) printf(No outputn); return 0;5.13 迭代法問題(wnt)描述用迭代法求。求平方根的迭代(di di)公式為:要求(yoqi)前后兩次求出的x的差的絕對值小于10-5。輸入a輸出的值輸入樣例4輸出樣例Thesquarerootof4.00is2.00000#include #include int main()double i,a,sq,d;scanf(%lf,&a);d=a;for(sq=1;)i=sq;sq=(sq+a/sq)/2;if(fabs(sq-i)=0.00001)printf(The

39、 square root of %.2lf is %.5lfn,d,sq);break;5.14 cos(x)-x=0利用(lyng)以下所示的簡單迭代方法求方程:cos(x)-x=0的一個(y )實根。 xn+1=cos(xn) 迭代(di di)步驟如下: (1)輸入數(shù)據(jù)給x1; (2)x0=x1,把x1的值賦給x0; (3)x1=cos(x0),求出一個新的x1; (4)若x0-x1的絕對值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2); (5)所求x1就是方程cos(x)-x=0的一個實根,輸出x1,輸出語句為printf(x=%lf,x);。提示:本題x0和x1定義為dou

40、ble類型#include #include int main()double a,b,i;scanf(%lf,&b);for(i=1;)a=b;b=cos(a);if(fabs(a-b)=0.000001)printf(x=%lfn,b);break;5.15 求一個三位數(shù),其值等于其各位階乘之和問題描述編寫程序,求某三位數(shù),該數(shù)值的大小正好是組成這個數(shù)的三個位上的數(shù)字階乘之和。輸入無輸出滿足上述條件的三位數(shù)。提示:輸出格式為 printf(%dn,num);#include void main()int a,b,c,d,i,j,k,l,x,y,z;for(i=100;i1000;i+)a=

41、i/100;b=(i%100)/10;c=i%10; for(j=1,x=1;j=a;j+) x=x*j; for(k=1,y=1;k=b;k+) y=y*k; for(l=1,z=1;l=c;l+) z=z*l; if(x+y+z=i) printf(%dn,i);6.1 誰能出線(ch xin)背景(bijng):電視臺舉辦(jbn)“超級學生”才藝大賽,由于報名人數(shù)狂多,所以要先進行分組預賽。按規(guī)定,每10名學生為一個預賽小組,評委打出分數(shù)(0100分),各小組第一名可以進入下一輪;如果有多名學生得分相同都是第一名,則可同時進入下一輪。輸入: 按順序給出一個小組10個人的最后得分(int

42、)。輸出: 能夠出線的學生序號(09)。#include #define N 10int main()int i,max=0,j;int aN;for(i=0;i=max)max=ai; for(j=0;jN;j+) if(aj=max) printf(%dn,j); return 0;6.2 統(tǒng)計素數(shù)的個數(shù)求出2 到 m 之間 ( 含 m,m=1000) 所有素數(shù)并放在數(shù)組 a 中。輸入:正整數(shù)m輸出:從小到大的所有素數(shù),及個數(shù)(素數(shù)輸出的時候用%4d來控制)如:輸入:10輸出:2 3 5 74#include #define N 10int main()int i,j,m,count=0;

43、int aN;scanf(%d,&m);for(i=2;i=m;i+)for(j=2;ji;j+)if(i%j=0) break;if(i=j) count+;printf(%4d,i);printf(n%dn,count); return 0;6.3 冒泡法排序(pi x)冒泡排序(BubbleSort)的基本概念是:依次比較(bjio)相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)(d sh)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在

44、第二趟:仍從第一對數(shù)開始比較(因為可能由于第2個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實在整個數(shù)列中是第二大的數(shù))。如此下去,重復以上過程,直至最終完成排序。 由于在排序過程中總是小數(shù)往前放,大數(shù)往后放,相當于氣泡往上升,所以稱作冒泡排序。編寫程序,對輸入的十個數(shù)按照從小到大排序#include #define N 10int main()int i,j,t;int aN;for(j=0;jN;j+)scanf(%d,&aj);for(i=0;iN;i

45、+)for(j=1;jN-i;j+)if(ajaj-1)t=aj-1; aj-1=aj;aj=t;for(j=0;jN;j+)printf( %d,aj);printf(n); return 0;6.4 插入法排序(pi x)如果一個數(shù)組中保存的元素(yun s)是有序的(由小到大),向這個數(shù)組中插入一個數(shù),使得插入后的數(shù)組元素依然保持有序。 定義(dngy)一個數(shù)組,長度為11,初始元素為10個,按照從小到大的方式輸入,然后輸入一個要插入的元素,使得插入后仍然有序。#include int main()int i,j,n,m;int a11;for(i=0;i0;i-)if(aiai-1)m

46、=ai;ai=ai-1; ai-1=m; for(i=0;i11;i+) printf( %d,ai); printf(n);return 0;6.5 求各位數(shù)字組成的最大數(shù)任意輸入一個自然數(shù),輸出該自然數(shù)的各位數(shù)字組成的最大數(shù)。例如,輸入 1593 ,則輸出為 9531 。輸入: 自然數(shù) n輸出: 各位數(shù)字組成的最大數(shù)#include int main()int i,j,n,count=0,t,m;int a100;scanf(%d,&n);for(i=0;n0;i+)m=n%10;ai=m;count+;n=n/10;for(i=0;icount;i+)for(j=1;jaj-1) t=a

47、j-1; aj-1=aj; aj=t; for(i=0;icount;i+) printf(%d,ai); printf(n);return 0;6.6 數(shù)組逆序輸出(shch)問題(wnt)描述從鍵盤(jinpn)上輸入一個數(shù)組(10個元素),將原數(shù)組逆序重新排列后輸出。要求輸出每個元素時以一個空格隔開。提示:用第一個與最后一個交換。#include #define N 10int main()int j;int aN;for(j=0;jN;j+) scanf(%d,&aj);for(j=0;jN;j+) printf(%d ,a9-j);printf(n); return 0;6.7 求最

48、大值問題描述要求從鍵盤輸入10個整型數(shù)據(jù),找出其中的最大值并顯示出來。輸入范例3 0 54 -710 27 32767 10 1 500 2輸出范例32767提示(tsh)先假定(jidng)第一個元素時最大值,然后和其他的元素一個一個的進行比較,直到找到最大值。#include #define N 10int main()int j,t;int aN;for(j=0;jN;j+) scanf(%d,&aj);for(j=0;jN-1;j+)if(aj+1aj) t=aj; aj=aj+1; aj+1=t; printf(%dn,aj); return 0;6.8二維數(shù)組 程序定義了44 的二

49、維數(shù)組,請編寫程序,給二維數(shù)組賦值,并使數(shù)組下半三角(snjio)元素中的值乘以n 。 例如: 數(shù)組中的值為 假設n為10,則輸出結(jié)果如下:(輸出的數(shù)按照4位寬度來輸出,即%4d)#include #define N 4int main()int i,j,n;int aNN;for(i=0;iN;i+)for(j=0;jN;j+) scanf(%d,&aij);scanf(%d,&n);for(i=0;iN;i+)for(j=0;ji+1;j+)aij=aij*n;for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n); return 0;6

50、.9 在屏幕(pngm)上顯示楊輝三角形楊輝三角形,又稱賈憲三角(JiXin snjio)形,帕斯卡三角形,是 HYPERLINK /view/1923263.htm t _blank 二項式系數(shù)(xsh)在 HYPERLINK /view/5670.htm t _blank 三角形中的一種幾何排列。其實,中國 HYPERLINK /view/2357690.htm t _blank 古代數(shù)學家在數(shù)學的許多重要領域中處于遙遙領先的地位。中國古代數(shù)學史曾經(jīng)有自己光輝燦爛的篇章,而 HYPERLINK /view/18626.htm t _blank 賈憲三角的發(fā)現(xiàn)就是十分精彩的一頁。楊輝三角有如

51、下性質(zhì):1、每行數(shù)字左右對稱,由1開始逐漸變大,然后變小,回到1。 2、第n行的數(shù)字個數(shù)為n個。 3、每個數(shù)字等于上一行的左右兩個數(shù)字之和。編寫程序,輸入正數(shù)n, 將所有數(shù)據(jù)存儲到二維數(shù)組中,并在屏幕上顯示對應的楊輝三角形(注意數(shù)據(jù)之間的空格)。例如:n=5 圖形如下:11 11 2 11 3 3 11464 11 5 10 10 5 1#include int main()int i,j,n;int a100100;scanf(%d,&n);for(i=0;in+1;i+)ai0=1;aii=1;for(i=2;in+1;i+)for(j=1;ji;j+)aij=ai-1j-1+ai-1j;

52、for(i=0;in+1;i+)for(j=0;ji+1;j+)printf(%3d,aij);printf(n); return 0;6.10 求二維數(shù)組周邊(zhu bin)元素之和編寫一個(y )程序,求出45的二維數(shù)組周邊(zhu bin)元素之和。輸入:二維數(shù)組元素輸出:周邊元素之和 如:輸入:1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 輸出:61#include int main()int i,j,sum=0;int a45;for(i=0;i4;i+)for(j=0;j5;j+) scanf(%d,&aij);for(i=0;i4;i+) su

53、m=sum+ai0+ai4; sum=sum+a01+a02+a03+a33+a31+a32; printf(%dn,sum); return 0;6.11 存儲并輸出一個矩陣編程,輸入 n ,存儲并輸出如下例( n=5 )所示的 圖形。 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1#include int main()int i,j,k,n;int a100100;scanf(%d,&n);for(i=0;in;i+)for(j=0;ji+1;j+)aij=1;for(i=0;in;i+)for(j=i;jn;j+)aij=j-i+1;

54、for(i=0;in;i+) for(j=0;jn;j+)printf( %d,aij);printf(n); return 0;6.12 給數(shù)組中的元素(yun s)按順序編號對數(shù)組 a10 中的十個整數(shù)從小到大進行連續(xù)編號,輸出各個(gg)元素的編號。要求不能改變數(shù)組 a 中元素的順序,且相同的整數(shù)(zhngsh)要具有相同的編號。例如數(shù)組是: A=(5,3,4,7,3,5,6,8,9,10) 則輸出為: (4,1,3,7,1,4,6,8,9,10) #include int main()int i,j,t;int a10,b10;for(i=0;i10;i+)scanf(%d,&ai);

55、bi=ai;for(i=0;i10;i+)for(j=1;j10-i;j+) if(bjbj-1) t=bj-1; bj-1=bj; bj=t; for(i=0;i10;i+)for(j=0;j10;j+) if(ai=bj) printf(%3d,j+1);break;printf(n);return 0;6.13 矩陣(j zhn)加法 方陣(fn zhn)階數(shù)為n(n100),例如(lr)當n=3時,矩陣int a33,矩陣int b33。 矩陣的數(shù)據(jù)由用戶輸入。輸出新的矩陣c=a+b。 輸出格式: c00 c01 c02 c10 c11 c12 c20 c21 c22 每兩個數(shù)字之間有

56、1個空格關于輸入方陣階數(shù)n矩陣a:a00 a01 a02a10 a11 a12a20 a21 a22矩陣b:b00 b01 b02b10 b11 b12b20 b21 b22關于輸出矩陣c:c00 c01 c02c10 c11 c12c20 c21 c22注意:輸出時每行最后不能有空格#include int main()int i,j,n;int a100100,b100100,c100100;scanf(%d,&n);for(i=0;in;i+)for(j=0;jn;j+)scanf(%d,&aij);for(i=n;in+n;i+)for(j=0;jn;j+)scanf(%d,&bi-n

57、j);for(i=0;in;i+)for(j=0;jn;j+)cij=bij+aij; for(i=0;in;i+) for(j=0;jn-1;j+) printf(%d ,cij);printf(%dn,cin-1); return 0;6.14 矩陣(j zhn)轉(zhuǎn)置 在數(shù)學上,矩陣是指縱橫排列的二維數(shù)據(jù)表格,最早來自于方程組的系數(shù)(xsh)及常數(shù)所構成的方陣。這一概念由19世紀(shj)英國數(shù)學家凱利首先提出。矩陣概念在生產(chǎn)實踐中也有許多應用,比如矩陣圖法以及保護個人帳號的矩陣卡系統(tǒng)(由深圳網(wǎng)域提出)等等?!熬仃嚒钡谋疽庖渤1粦?,比如監(jiān)控系統(tǒng)中負責對前端視頻源與控制線切換控制的模擬設備

58、也叫矩陣。 設A為nn階矩陣(即n行n列),第i 行j 列的元素是a(i,j),即:A=a(i,j)定義A的轉(zhuǎn)置為這樣一個nn階矩陣B,滿足B=a(j,i),即 b (i,j)=a (j,i)(B的第i行第j列元素是A的第j行第i列元素),記A=B。(有些書記為AT=B,這里T為A的上標) 直觀來看,將A的所有元素繞著一條從第1行第1列元素出發(fā)的右下方45度的射線作鏡面反轉(zhuǎn),即得到A的轉(zhuǎn)置。輸入:有n+1行(2 n10),第一行是一個整數(shù)n,代表矩陣為n行n列。后面n行表示矩陣的取值輸出:轉(zhuǎn)置后的矩陣#include int main()int i,j,n;int a100100,b10010

59、0;scanf(%d,&n);for(i=0;in;i+)for(j=0;jn;j+)scanf(%d,&aij);for(i=0;in;i+)for(j=0;jn;j+)bji=aij; for(i=0;in;i+) for(j=0;jn-1;j+) printf(%d ,bij); printf(%dn,bin-1);return 0;6.15求一系列整數(shù)(zhngsh)中出現(xiàn)最多的數(shù)字給定一系列整數(shù)(zhngsh),對每個整數(shù)的每一位數(shù)字統(tǒng)計09各個(gg)數(shù)字的出現(xiàn)次數(shù),求出現(xiàn)次數(shù)最多的數(shù)字。輸入:有兩行,第一行是整數(shù)n(1=n=100),表示有n個整數(shù);第二行是n個整數(shù)值輸出:出現(xiàn)次

60、數(shù)最多的數(shù)字d(如果d不唯一,要列出全部)及其出現(xiàn)的次數(shù)輸入樣例:11233輸出樣例:出現(xiàn)次數(shù)最多2次的數(shù)字是 3#include int main()int i,n,max;int a100,b10=0;scanf(%d,&n);for(i=0;i0) bai%10+; ai=ai/10; max=b0;for(i=1;i10;i+) if(maxbi) max=bi; printf(出現(xiàn)次數(shù)最多%d次的數(shù)字是,max); for(i=0;i10;i+) if(max=bi) printf( %d,i); printf(n);return 0;6.16 裝箱問題假設有n項物品,大小分別為s1

溫馨提示

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

評論

0/150

提交評論