中國(guó)石油大學(xué)C語言上機(jī)題答案(2015版)答案_最全最詳細(xì)_第1頁
中國(guó)石油大學(xué)C語言上機(jī)題答案(2015版)答案_最全最詳細(xì)_第2頁
中國(guó)石油大學(xué)C語言上機(jī)題答案(2015版)答案_最全最詳細(xì)_第3頁
中國(guó)石油大學(xué)C語言上機(jī)題答案(2015版)答案_最全最詳細(xì)_第4頁
中國(guó)石油大學(xué)C語言上機(jī)題答案(2015版)答案_最全最詳細(xì)_第5頁
已閱讀5頁,還剩70頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

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

2、.#include<stdio.h>int main() printf("Hello world.n");1.2 Welcome to Beijing.讓我們來練習(xí)如何顯示多行文字。 輸入:無輸出:就是下面的那段文字。#include<stdio.h>void main()printf("Welcomen");printf("ton");printf("Beijing.n");1.3 練習(xí)最簡(jiǎn)單的printf和scanfprintf函數(shù)和scanf函數(shù)是C語言中最常用的函數(shù)之一,下面讓我們練

3、習(xí)一下吧。 輸入:整型變量x的值。輸出:輸出整型變量x對(duì)應(yīng)的十進(jìn)制、八進(jìn)制和十六進(jìn)制形式。認(rèn)真觀察-1的八進(jìn)制和十六進(jìn)制輸出,請(qǐng)想想是為什么。#include <stdio.h>int main()int x;scanf("%d",&x);printf("x=%d,",x);printf("x=%o,",x);printf("x=%xn",x);return 0;1.4 練習(xí)兩個(gè)整數(shù)之間的運(yùn)算背景:基本練習(xí)。輸入:接受兩個(gè)整數(shù),每個(gè)整數(shù)之間使用空格分隔。例如輸入格式為:123 444輸出:分別輸

4、出進(jìn)行+、-、*、/、*之后的運(yùn)行結(jié)果。#include<stdio.h>int 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",x,y,x/y); printf("%d%d=%dn",x,y,x%y); retur

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

6、t;int main() printf(" *n"); printf(" *n"); printf(" *n"); printf("*n"); return 0;2.1 整型數(shù)的表示范圍編寫一個(gè)循環(huán)程序,輸入 N 值,輸出 N 的階乘。關(guān)于循環(huán)程序怎么編寫,可以參考教材第3章P66頁的例題4.2和第5章P82的例題5.1的內(nèi)容。注意整型數(shù)的表示范圍,如果當(dāng)輸入的 N 比較大時(shí),例如 N 等于 20 時(shí),輸出怎么是負(fù)數(shù)了?自己想明白吧!#include<stdio.h>void main()int N,i

7、;int sum=1;N>=2;scanf("%d",&N);if(N<=16)for (i=1;i<=N;i+)sum=sum*i;printf("%dn",sum);if(N>=17)printf("N is too big!n");2.2 求正弦函數(shù)值已知求正弦 sin(x) 的近似值的多項(xiàng)式公式為: sin(x) = x - x3/3! + x5/5! - x7/7!+ + (-1)n x2n+1/(2n+1)! + 編寫程序,要求輸入 x (單位是弧度)和,按上述公式計(jì)算 sin(x) 的近似

8、值,要求計(jì)算的誤差小于給定的。 此題當(dāng)然要用到循環(huán)語句,到第5章去找個(gè)貓來照著畫吧,循環(huán)的終止條件就是本次計(jì)算出來的正弦函數(shù)值和上次計(jì)算的值的差小于給定的。求兩個(gè)值的差時(shí),要求出其絕對(duì)值,使用庫函數(shù)fabs(),頭文件在math.h里。友情提示:給定的誤差值越小,計(jì)算的精度越高,但是要注意嘍,給的精度太高,你的程序會(huì)成為死循環(huán)。如果出現(xiàn)死循環(huán)的情況,可以用<Ctrl>+<Break>鍵退出程序。#include <stdio.h>#include <math.h>int main() float x,eps,s,y=0,y0,t; int n,j

9、; 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 判斷輸入的字符的類型我們將字符分為五類:大寫字母、小寫字母、數(shù)字、控制字符、其他字符。編寫程序,從鍵盤輸入一個(gè)字符,輸出字符所屬的類型:大寫字

10、母時(shí)輸出capital letters, 小寫字母時(shí)輸出small letters,數(shù)字是輸出figures,其他字符時(shí)輸出 others。#include<stdio.h>void main()char c; c = getchar ( ); if (c < 0x20) printf ("The character is a control charactern"); else if (c >= '0' && c <= '9') printf ("figuresn"); el

11、se if (c >= 'A' && c <= 'Z') printf ("capital lettersn"); else if (c >= 'a' && c <= 'z') printf ("small lettersn"); else printf ("othersn");3.1 找零錢 假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 種硬幣,在 給顧客找硬幣時(shí),一般都會(huì)盡可能地選用硬幣個(gè)數(shù)最小的

12、方法。 例如,當(dāng)要給某顧客找 7 角 2 分錢時(shí),會(huì)給他一個(gè) 5 角, 2 個(gè) 1 角 和 1 個(gè) 2 分的硬幣。試編寫一個(gè)程序,輸入的是要找給顧客的零 錢(以分為單位),輸出的是應(yīng)該找回的各種硬幣數(shù)目,并保 證找回的硬幣數(shù)最少。#include <stdio.h> 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",

13、x1); printf("%dn",x2); printf("%dn",x3); printf("%dn",x4); printf("%dn",x5); return 0; 3.2 計(jì)算時(shí)鐘的夾角背景:鐘面上的時(shí)針和分針之間的夾角總是在 0 度 359 度之間。舉例來說,在十二點(diǎn)的時(shí)候兩針之間的夾角為 0 度,而在六點(diǎn)的時(shí)候夾角為 180 度,在三點(diǎn)的時(shí)候?yàn)?90 度。本題要解決的是計(jì)算 0:00 到 12:00之間任意一個(gè)時(shí)間的夾角。輸入: 每組測(cè)試數(shù)據(jù)包含兩個(gè)數(shù)字:第一個(gè)數(shù)字代表小時(shí) ( 大于等于 0 小于 1

14、2) ,第二個(gè)數(shù)字代表分 ( 在區(qū)間 0, 59 上 ) 。 輸出: 對(duì)應(yīng)每組測(cè)試數(shù)據(jù),用常用格式顯示時(shí)間以及這個(gè)時(shí)候時(shí)針和分針間的最小夾角,精確到小數(shù)點(diǎn)后一位。友情提示:以表中心到12點(diǎn)的連線為基準(zhǔn),分針每走1分鐘是6度,時(shí)針與基準(zhǔn)的夾角每個(gè)小時(shí)也是30度,從整點(diǎn)開始,每過1分鐘時(shí)針再增加0.5度。 提示:時(shí)鐘夾角計(jì)算公式|5.5m-30h|,h為時(shí)針,m為分針。求浮點(diǎn)型絕對(duì)值的函數(shù)為fabs,需要包含math.h頭文件#include "stdio.h"#include "math.h"int main()int h,m;double angle;s

15、canf("%d%d",&h,&m);angle=fabs(5.5*m-30*h);if(angle>180)angle=360-angle;printf("At %d:%02d the angle is %.1f degrees.n",h,m,angle);3.3 照貓畫貓:計(jì)算圓柱的側(cè)面積及體積如果已知圓柱的底面半徑 r ,以及高 h ,則可計(jì)算出圓柱的側(cè)面積 s=2rh ,體積 v= r 2 h 。其中 =3.1415926 輸入 第一行輸入圓柱的底面半徑 r第二行輸入圓柱的高 h 輸出 s=< 圓柱的側(cè)面積 >,

16、v=< 圓柱的體積 > 要求 1. 所有變量都定義為雙精度類型2. 結(jié)果精確到小數(shù)點(diǎn)后兩位#include "stdio.h" #define n 3.1415926 int main() float r,h,s,v; printf; scanf("%f%f",&r,&h); s=2*n*r*h; v=n*r*r*h; printf("s=%6.2f,v=%6.2fn",s,v); 3.4 分離整數(shù) 任意從鍵盤上輸入一個(gè)三位正整數(shù),要求正確地分離出它的個(gè)位、十位和百位,并分別在屏幕上輸出。比如輸入的三位正整

17、數(shù) #include "stdio.h"int 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 雞兔同籠已知籠中有頭h個(gè),有腳f條,問籠中雞兔各有多少只? 輸入:頭和腳的數(shù)目輸出:兔子和雞的數(shù)目(輸出語句為:printf("rabbit=%d,c

18、hicken=%d",rabbit,chicken);)Sample輸入:10 20輸出:rabbit=0,chicken=10#include "stdio.h"int 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 溫度轉(zhuǎn)換背景: 經(jīng)常出國(guó)旅行的驢友都知道,需要時(shí)時(shí)了解當(dāng)?shù)氐臍鉁貭顩r,但

19、不少國(guó)家采用了不同的溫度計(jì)量單位:有些使用華氏溫度標(biāo)準(zhǔn)(F),有些使用攝氏溫度(C)。現(xiàn)在,請(qǐng)你根據(jù)溫度轉(zhuǎn)換公式設(shè)計(jì)一個(gè)溫度轉(zhuǎn)換程序,可以進(jìn)行溫度轉(zhuǎn)換。如果輸入攝氏溫度,顯示轉(zhuǎn)換的華氏溫度;如果輸入華氏溫度,顯示轉(zhuǎn)換的攝氏溫度。溫度轉(zhuǎn)換的公式為:F(C×95)32 ;C(F32)×59 ;式中F-華氏溫度,C-攝氏溫度。輸入: 第一個(gè)數(shù)據(jù)(1 或 2 )確定轉(zhuǎn)換的類型:華氏轉(zhuǎn)攝氏(1);攝氏轉(zhuǎn)華氏(2);第二個(gè)數(shù)據(jù)是相應(yīng)需要轉(zhuǎn)換的溫度值。 輸出: 相應(yīng)的轉(zhuǎn)換后的溫度值(保留小數(shù)點(diǎn)后 2 位)。#include <stdio.h> void main() int

20、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)。當(dāng)x小于6時(shí),y=x-12;當(dāng)x大于等于6且小于15時(shí),y=3x-

21、1;當(dāng)x大于等于15時(shí),y=5x+9.從鍵盤上輸入一個(gè)整數(shù)x,輸出對(duì)應(yīng)的y值。 #include <stdio.h>void main()int x,y;scanf("%d",&x);if(x<6)y=x-12;else if(x<15)y=3*x-1;elsey=5*x+9;printf("%dn",y);return 0;4.3 整數(shù)位數(shù)判斷 輸入一個(gè)不多于5位的正整數(shù),要求: (1)求它是幾位數(shù);(2)逆序打印出各位數(shù)字。#include <stdio.h>#include <stdlib.h>

22、;#define SIZE 5intmain(void) int bit_count;/位數(shù) long int input_num;/輸入數(shù) int resultSIZE;/存放各個(gè)位的數(shù) int i; scanf("%ld", &input_num); if (input_num < 0 | input_num > 99999) printf("Invalid inputn"); exit(1); for( bit_count = 0; input_num; +bit_count) resultbit_count = input_n

23、um % 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ù)拆分輸入一個(gè)四位數(shù),判斷千位、百位、十位和個(gè)位數(shù)字之和是否為偶數(shù),如果是,輸出Yes,如果不是,輸出No;如果不是四位數(shù),輸出Invalid data。 #include<stdio.h>void main() int x,a,b,c,d,e; scanf(&

24、quot;%d",&x); if(x/1000<1|x/10000>=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 磨磨你的砍柴刀:判斷三角形的形狀要求:輸入三角型的三條邊,判斷三角形的形狀。假設(shè)輸入的三邊邊長(zhǎng)均>0。輸入:三角型的3條邊的長(zhǎng)

25、度(int型)。輸出:等邊三角形:equilateral triangle.等腰三角形:isoceles triangle.不構(gòu)成三角形:non-triangle.一般三角形:triangle.#include<stdio.h>void main() float a,b,c; scanf("%f%f%f",&a,&b,&c); if(a+b<c|b+c<a|c+a<b) printf("non-triangle.n"); else if(a=b&&b=c) printf("e

26、quilateral triangle.n"); else if(a=b|b=c|a=c) printf("isoceles triangle.n"); else printf("triangle.n");4.6 字符加密輸出從鍵盤上輸入一個(gè)字符,進(jìn)行加密以后再輸出在屏幕上。加密規(guī)律是:輸入小寫英文字母時(shí),輸入a 輸出Z、輸入b輸出Y、輸入c輸出X、.、輸入z輸出A。輸入大寫英文字母時(shí),將該字母ASCII碼值再加上該值的1/2后輸出所對(duì)應(yīng)的字符,例如數(shù)字A的ASCII碼值是65,加上其值的1/2后是98(小數(shù)四舍五入),則輸出字符b。輸入數(shù)字時(shí)

27、,將該數(shù)字原ASCII碼值再加上該值十進(jìn)制的十位上的數(shù)后輸出,例如數(shù)字9的ASCII碼值是57,加上十位上的數(shù)5后是62,則輸出字符>。輸入其他字符時(shí)原樣輸出。 友情提示:整數(shù)之間運(yùn)算的結(jié)果要取整,例如5/2的結(jié)果是2,而5.0/2.0對(duì)小數(shù)四舍五入的結(jié)果就是3.0了。所以輸入大寫英文字母時(shí)的輸出要仔細(xì)考慮。#include <stdio.h> int main() char ch; int a; ch=getchar(); if(ch>=97&&ch<=122) ch=187-ch;putchar(ch); else if(ch>=65&a

28、mp;&ch<=90) a=ch%2; if (a=1) (char)a=(ch+1)/2+ch; else (char)a=ch/2+ch; putchar(a); else if(ch>=48&&ch<=57) ch=ch/10+ch; putchar(ch); else putchar(ch); printf("n"); 4.7 判斷某年某月的天數(shù)一年有365天,有的月份有31天,有的有30天,2月份閏年的時(shí)候是29天,非閏年的時(shí)候是28天?,F(xiàn)在要求從鍵盤上輸入一個(gè)年份和月份,輸出其對(duì)應(yīng)的天數(shù)。#include <std

29、io.h>main() int year,month,days; scanf("%d %d", &year,&month); switch(month) case 1: case 3: 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 d

30、ays=28; printf("%dn",days);4.8 花多少錢買衣服周末商場(chǎng)促銷呢,某品牌服裝既可以買套裝,也可以買單件。若買的不少于套,每套元;不足套的每套元,只買上衣每件元,只買褲子每條元。編寫程序,輸入計(jì)劃購買的上衣數(shù)量 a 和褲子的數(shù)量 b ,計(jì)算并輸出應(yīng)該付的款 m 。#include<stdio.h>void main() int a,b,y; scanf("%d%d",&a,&b); if(b<=a&&b<50) y=90*b+(a-b)*60; if(b<=a&

31、&b>=50) y=80*b+(a-b)*60; if(a<b&&a<50) y=90*a+(b-a)*45; if(a<b&&a>=50) y=80*a+(b-a)*45; printf("%dn",y);4.9 到郵局去寄包裹你去郵局給朋友寄禮物。發(fā)現(xiàn)郵局對(duì)郵寄包裹的費(fèi)用是這樣規(guī)定的:如果包裹長(zhǎng)寬高任意一個(gè)尺寸超過米,或重量超過千克,不予郵寄;對(duì)可以郵寄的包裹每件收手續(xù)費(fèi) 0.2 元,不同重量的郵資按下表計(jì)算: 重量(千克) 收費(fèi)標(biāo)準(zhǔn)(元) 小于 . 大于等于但不超過 . 大于等于但不超過 . 編寫程

32、序,輸入包裹的長(zhǎng)、寬、高尺寸和重量,輸出所需的郵資(輸出結(jié)果中包含兩位小數(shù)即可),超出尺寸或重量的輸出 "Error” .#include<stdio.h>void main() float a,b,c,m,y; scanf("%f,%f,%f,%f",&a,&b,&c,&m); if(a>1|b>1|c>1|m>30) printf("Errorn"); else if(m<10) y=0.80*m+0.2; else if(m<20) y=0.75*m+0.2;

33、 else y=0.70*m+0.2; printf("%.2fn",y); 4.10 輸出星期幾的英文表示輸入用數(shù)字(1-7)表示的星期幾,輸出星期幾的英文表示,輸入的數(shù)字有誤,輸出單詞"Error(回車)"。#include<stdio.h>void main() int a; scanf("%d",&a); switch(int)(a) case 1:printf("Mondayn");break; case 2:printf("Tuesdayn");break; ca

34、se 3:printf("Wednesdayn");break; case 4:printf("Thursdayn");break; case 5:printf("Fridayn");break; case 6:printf("Saturdayn");break; case 7:printf("Sundayn");break; default:printf("Errorn"); 5.1輸出一行星號(hào)問題描述編寫程序在一行中輸出 N 個(gè)星號(hào)。輸入星號(hào)個(gè)數(shù)值N輸出一行中N個(gè)星號(hào)#i

35、nclude <stdio.h>int main()int N,i;scanf("%d",&N);for(i=1;i<=N;i+)printf("*");printf("n");5.2 打印平行四邊形問題描述輸入圖形的高 n ,輸出如下例( n=5  )所示的圖形 .*   *    *      *      

36、  *輸入整數(shù)n例如 5 輸出由*組成的高為5的平行四邊形#include <stdio.h>int main()int N,i,j;scanf("%d",&N);for(i=1;i<=N;i+)for(j=1;j<i;j+)printf(" ");for(j=1;j<=N;j+) printf("*"); printf("n");5.3 編程計(jì)算問題描述編寫程序,輸入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-.+1/n (

37、保留四位小數(shù))輸入n的值輸出上述算式的求和結(jié)果(結(jié)果保留四位小數(shù))輸入樣例1輸出樣例sum=1.0000#include <stdio.h>int main()int n,i,j,sign=-1;double f, sum=0;scanf("%d",&n);for(i=1;i<=n;i+)f=1.0/i;sign=-sign;sum=sum+sign*f; printf("sum=%.4lfn",sum);5.4 分?jǐn)?shù)序列問題描述有一個(gè)分?jǐn)?shù)序列:,輸入整數(shù)n,求出其前n項(xiàng)的和。輸入整數(shù)n輸出上述分?jǐn)?shù)序列的前n項(xiàng)之和提示:輸出語句

38、格式為 printf("sum=%16.10fn",s);輸入樣例1輸出樣例sum=    2.0000000000#include <stdio.h>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; f=b/a;sum=sum+f; printf("sum=%16.10lfn",sum); 5.5 求e的值問題描述編寫程序,從鍵盤輸入整數(shù)

39、 n , 求 e 的值。e=1+1/1!+1/2!+1/3!+.+1/n! 注意:用 double 型數(shù)據(jù)計(jì)算。輸入整數(shù)n輸出e的值提示:輸出語句 printf("e=%16.10fn",e); 輸入樣例2輸出樣例e=    2.5000000000#include <stdio.h>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;j+) k=k*j; f=1.0/

40、k; sum=sum+f; printf("e=%16.10lfn",sum); 5.6 最大公約數(shù)問題描述輸入兩個(gè)正整數(shù)m和n,求它們的最大公約數(shù)和最小公倍數(shù)輸入兩個(gè)正整數(shù)m和n輸出m和n的最大公約數(shù)和最小公倍數(shù)輸入樣例2   8輸出樣例the  greatest  common  divisor  is  2the  least   common  multiple  is  8#include <stdio.h> int mai

41、n() int m,n,r,t,M,N,a,b,c; scanf("%d%d",&m,&n); if(m<n) t=m; m=n; n=t; a=m; b=n; while(r=m%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ù)問題描述輸出所有的水仙花數(shù)。所謂

42、的水仙花數(shù)是指一個(gè)3位數(shù),其各位數(shù)字立方和等于該數(shù)本身。例如153是一水仙花數(shù),因?yàn)?53=13+53+33輸入無輸出所有的水仙花數(shù)     提示:輸出語句 printf("%dn",n);  #include <stdio.h>void main()int i,a,b,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 完

43、數(shù)問題描述一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為完數(shù)。例如,6的因子為1,2,3,且6=1+2+3,因此6是完數(shù)。輸入一個(gè)正整數(shù)n輸出判斷n是否為完數(shù)。如果是,則輸出Yes和它的所有因子;否則,輸出No輸入樣例6輸出樣例Yes,its factors are 1 2 3#include <stdio.h>int main()int a,i,sum=0;scanf("%d",&a); for(i=1;i<a;i+)if(a%i=0) sum=sum+i;if(sum=a)printf("Yes,its factors are &quo

44、t;); for(i=1;i<a;i+)if(a%i=0)printf(" %d",i);printf("n");else printf("Non");5.9 素?cái)?shù)問題描述輸入兩個(gè)正整數(shù)m和n,求出m,n區(qū)間的所有素?cái)?shù)輸入兩個(gè)整數(shù)m和n輸出m,n區(qū)間的所有素?cái)?shù)輸入樣例2   10輸出樣例2  3  5  7#include <stdio.h>int main()int m,n,i,j;scanf("%d%d",&m,&n);for(

45、i=m;i<=n;i+)for(j=2;j<i;j+)if(i%j=0) break;if(j=i) printf(" %d",i);printf("n"); return 0;5.10 回文數(shù)問題描述輸入一個(gè)正整數(shù),判斷是否為回文數(shù)。輸入一個(gè)正整數(shù)n輸出如果是,輸出Yes,否則輸出No輸入樣例12321輸出樣例Yes#include <stdio.h>int main()int a,b,c;scanf("%d",&a);c=a;b=0;while(c>0)b=b*10+(int)c%10;c=c

46、/10;if(a=b) printf("Yesn");else printf("Non");5.11 貪吃的猴子問題描述有一只猴子,第一天摘了若干個(gè)桃子 ,當(dāng)即吃了一半,但還覺得不過癮 ,就又多吃了一個(gè)。第2天早上又將剩下的桃子吃掉一半,還是覺得不過癮,就又多吃了兩個(gè)。以后每天早上都吃了前一天剩下的一半加天數(shù)個(gè)(例如,第5天吃了前一天剩下的一半加5個(gè))。到第n天早上再想吃的時(shí)候,就只剩下一個(gè)桃子了。輸入天數(shù)n輸出第一天的桃子個(gè)數(shù)。提示:輸出語句為 printf("The monkey got %d pea

47、chs in first day.n",sum);   輸入樣例5輸出樣例 The monkey got 114 peachs in first day.提示:?jiǎn)栴}分析:總共 t0日 吃掉 剩余1 t0/2+1 t0-(t0/2+1)=t0/2-1 t1=t0/2-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) t

48、n-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 <stdio.h>int main()int n,i;double sum;scanf("%d",&n);i=n,sum=1;for(;i>1;i-)sum=(sum+(i-1)*2; printf("The monkey got %.0lf peachs in first day.n",sum); return 0;5.12 馬戲團(tuán)觀眾人數(shù)問

49、題描述一個(gè)馬戲團(tuán)表演, n 個(gè)座位全滿,全部門票收入是 120 元,現(xiàn)在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。根據(jù)總?cè)藬?shù),計(jì)算出男人、女人和小孩各多少人。輸入總?cè)藬?shù) n輸出男人、女人和小孩人數(shù),若 n 人無法滿足條件,則輸出“No outputn”#include <stdio.h>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

50、*y+1*z=1200)tag=1;printf("%d %d %dn",x,y,z);if(tag=0) printf("No outputn"); return 0;5.13 迭代法問題描述用迭代法求。求平方根的迭代公式為:要求前后兩次求出的x的差的絕對(duì)值小于10-5。輸入a輸出的值輸入樣例4輸出樣例The square root of 4.00 is 2.00000#include <stdio.h>#include <math.h>int main()double

51、 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 square root of %.2lf is %.5lfn",d,sq);break;5.14 cos(x)-x=0利用以下所示的簡(jiǎn)單迭代方法求方程:cos(x)-x=0的一個(gè)實(shí)根。 xn+1=cos(xn) 迭代步驟如下: (1)輸入數(shù)據(jù)給x1; (2)x0=x1,把x1的值賦給x0; (3)x1=cos(x0),求出一個(gè)新的x1; (4)若x0-x

52、1的絕對(duì)值小于0.000001,執(zhí)行步驟(5),否則執(zhí)行步驟(2); (5)所求x1就是方程cos(x)-x=0的一個(gè)實(shí)根,輸出x1,輸出語句為printf("x=%lf",x);。提示:本題x0和x1定義為double類型#include <stdio.h>#include <math.h>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);b

53、reak;5.15 求一個(gè)三位數(shù),其值等于其各位階乘之和問題描述編寫程序,求某三位數(shù),該數(shù)值的大小正好是組成這個(gè)數(shù)的三個(gè)位上的數(shù)字階乘之和。輸入無輸出滿足上述條件的三位數(shù)。提示:輸出格式為 printf("%dn",num);#include <stdio.h>void main()int a,b,c,d,i,j,k,l,x,y,z;for(i=100;i<1000;i+)a=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; fo

54、r(l=1,z=1;l<=c;l+) z=z*l; if(x+y+z=i) printf("%dn",i);6.1 誰能出線背景:電視臺(tái)舉辦“超級(jí)學(xué)生”才藝大賽,由于報(bào)名人數(shù)狂多,所以要先進(jìn)行分組預(yù)賽。按規(guī)定,每10名學(xué)生為一個(gè)預(yù)賽小組,評(píng)委打出分?jǐn)?shù)(0100分),各小組第一名可以進(jìn)入下一輪;如果有多名學(xué)生得分相同都是第一名,則可同時(shí)進(jìn)入下一輪。輸入:        按順序給出一個(gè)小組10個(gè)人的最后得分(int)。輸出:      

55、0; 能夠出線的學(xué)生序號(hào)(09)。#include <stdio.h>#define N 10int main()int i,max=0,j;int aN;for(i=0;i<N;i+)scanf("%d",&ai);if(ai>=max)max=ai; for(j=0;j<N;j+) if(aj=max) printf("%dn",j); return 0;6.2 統(tǒng)計(jì)素?cái)?shù)的個(gè)數(shù)求出 2 到 m 之間 ( 含 m,m<=1000) 所有素?cái)?shù)并放在數(shù)組 a 中。輸入:正整數(shù)m輸出:從小到大的所有素?cái)?shù),

56、及個(gè)數(shù)(素?cái)?shù)輸出的時(shí)候用%4d來控制)如:輸入:10輸出:2 3 5 7         4 #include <stdio.h>#define N 10int main()int i,j,m,count=0;int aN;scanf("%d",&m);for(i=2;i<=m;i+)for(j=2;j<i;j+)if(i%j=0) break;if(i=j) count+;printf("%4d",i);printf("n%dn",count); return 0;6.3 冒泡法排序冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟

溫馨提示

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

評(píng)論

0/150

提交評(píng)論