久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 4988|回復: 11

C語言經典算法100例

[復制鏈接]
1#
發表于 2017-9-22 09:34:26 | 只看該作者 |倒序瀏覽 |閱讀模式
【程序1
* [: h$ x, b/ B- z4 k7 N! R& e2 \題目:有1234個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 4 z' u( n5 V0 Y# k+ O6 m0 D1 M
1.程序分析:可填在百位、十位、個位的數字都是1234。組成所有的排列后再去
( }2 c, E' f, Q% m掉不滿足條件的排列。   \& w  F& A) K) Y
2.程序源代碼:
8 A6 [9 k4 B+ B) ?main() { % Z$ ^* _1 d' I: }1 i7 x
int i,j,k;
( j. j. ^' A* o# f) X* [. eprintf("\n"); & X9 R- a9 y$ ^) h' ]3 v2 q
for(i=1;i<5;i++) *以下為三重循環*/
6 _8 N3 u. `6 e0 Efor(j=1;j<5;j++) 6 {/ Y' i; ?7 n. Z
for (k=1;k<5;k++) {
7 \9 Z5 ]8 m4 E4 ]if (i!=k&&i!=j&&j!=k) /*確保ijk三位互不相同*/ & R! J7 V, u  D5 \6 M, ~
printf("%d,%d,%d\n",i,j,k); }} ' q3 \, x, N1 n$ `$ K. t9 g
==============================================================
" \- d% H: b( {8 m6 x【程序2. N) i; }$ m+ i/ k
題目:企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高 ( s* O) a3 b! W& ^  p
10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提
( v' ~8 l$ p/ ~( T- F( D- Q7 {0 n7.5%20萬到40萬之間時,高于20萬元的部分,可提成5%40萬到60萬之間時高于 7 r& G- C1 I7 z' N' S0 j% H' N
40萬元的部分,可提成3%60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于 * c0 i/ _6 u; u+ {. @
100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數? " s# E8 M! A( t0 _1 @
1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
- M& @  l  R4 y+ d5 b& }2.程序源代碼: " @# D* b( ]" W1 q+ _3 t% [% q
main() {
3 B! O- X0 I7 ilong int i; ( T9 c6 }- H& A
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
3 C0 H. p4 j. s  [scanf("%ld",&i); $ N; h# x6 T* X  {# {
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
6 e$ n, h) [6 p4 L% v2 vbonus4=bonus2+200000*0.5;
1 B# d8 y0 P( h5 H5 Obonus6=bonus4+200000*0.3;
/ [7 [2 R) j3 Y) F, N8 i( M6 Fbonus10=bonus6+400000*0.15;
2 t! Z4 t1 C5 ]% M: g/ G( X0 |  aif(i<=100000)
5 _7 x3 ^4 ^& x  Ubonus=i*0.1; + O" ~" y) Q# l
else if(i<=200000)
& O; G* Y+ w1 i: E8 ?/ b; Xbonus=bonus1+(i-100000)*0.075;
6 U; f' u9 U+ [, f7 Uelse if(i<=400000)
6 `  L7 b4 P+ Cbonus=bonus2+(i-200000)*0.05; " |: `: c. ?( Y* O9 L5 e5 U
else if(i<=600000)
/ I, I2 Q" g; h5 u1 `' jbonus=bonus4+(i-400000)*0.03;
) l! F: p2 M  L1 Pelse if(i<=1000000)
( a. A/ ?) J; c8 J3 sbonus=bonus6+(i-600000)*0.015;
7 d( _" Q' I8 U- Z+ X1 A% l* Belse
& ~. N# b/ R9 M! \8 {bonus=bonus10+(i-1000000)*0.01;
8 t. V4 m. O( @. g% Q: B# Tprintf("bonus=%d",bonus); } - u- y% s! U+ `% |# c8 {
==============================================================
- e( e' k- s+ @4 y- ^* n6 }' I【程序3
5 C: R$ i$ S) }題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少? ( G/ z5 T! Q5 w& ?1 D& ~9 g/ l
1.程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后 4 p. [  }! I4 l' c- U7 h" H6 d
的結果滿足如下條件,即是結果。請看具體分析: ' w' W' c. i' D, Z" Z* c8 b
2.程序源代碼:
! I8 Y% J! I/ A0 K. u! x6 h#include "math.h"
1 E7 j  h9 Y6 i6 e( Omain() {
4 c! {, k- I" G( Plong int i,x,y,z; ! f* V9 E1 F3 Y" S# B" q+ @
for (i=1;i<100000;i++)
, H7 B' v+ N. p2 t2 P* y{ x=sqrt(i+100); /*x為加上100后開方后的結果*/ ; ^, [6 O: S& x4 N% U$ y* h
y=sqrt(i+268); /*y為再加上168后開方后的結果*/
+ J/ E& M% ~" Y3 N' A# _  cif(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等于該數,這說明此數是完全平方數*/
9 [5 V, H8 d2 a: y' v. k8 `5 z0 x: iprintf("\n%ld\n",i); } }
! O# H' W: X9 G' U" O4 }==============================================================
0 Y7 F2 n, [8 ~1 v0 B【程序4
9 @1 T2 C! w& z/ U# z題目:輸入某年某月某日,判斷這一天是這一年的第幾天? / y. u* G. H$ K8 ~5 h
1.程序分析:以35日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊
/ k0 [) I) W' x  S4 D情況,閏年且輸入月份大于3時需考慮多加一天。 1 J3 E8 y+ a- B6 `8 F6 K& a8 |
2.程序源代碼: 8 x9 z1 j: C+ q4 H
main() {
7 i1 u1 F( A! O3 ^int day,month,year,sum,leap;
" D2 {+ F' l& O! S6 y* dprintf("\nplease input year,month,day\n"); 4 z7 i6 v% r; F3 ~& H
scanf("%d,%d,%d",&year,&month,&day);
- b; {0 D2 a" H/ m7 Vswitch(month)/*先計算某月以前月份的總天數*/
{ case 1:sum=0;break;
; k/ |$ l  \; I. [% p* m! a" scase 2:sum=31;break; + d3 M; g2 X- n
case 3:sum=59;break;
3 V& T8 o8 j7 Ecase 4:sum=90;break; 4 x8 F' m' T5 {& @& |  P( V
case 5:sum=120;break;
1 k/ a) b/ W/ _- s% P8 g) K4 Ecase 6:sum=151;break; & k: ?7 f# T2 p4 o
case 7:sum=181;break;
9 q- k' \+ r; j- vcase 8:sum=212;break;
% T: R: o: {8 K, P9 U+ pcase 9:sum=243;break;
5 Y* `: M$ Z! n; A- L* Dcase 10:sum=273;break; 6 r; b$ N! T8 m9 t$ Y$ B* p' x; Y# M
case 11:sum=304;break;
# \$ N# z( V6 P) Hcase 12:sum=334;break;
8 L) q0 ?. A7 g- Q9 |default:printf("data error");break; } 1 f5 L3 z; j- Q
sum=sum+day; /*再加上某天的天數*/ * l! T2 Z3 l- h: @0 [
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/
" M& ]1 Y1 K; T( p6 u) }leap=1; ; y" F3 c; `: h. U; e0 b
else
: O( `6 q8 S# xleap=0;
' Y$ E1 G, \& P  i" G! F: @if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/ ( @1 f5 w% s# L4 ^9 i
sum++;
" O1 @# g1 h) ~/ G& iprintf("It is the %dth day.",sum);}
7 k1 f9 Y1 g6 x" Z% q4 E) m============================================================== . g; V# y7 T4 Y) O
【程序5" ^: t5 n  n! u6 P6 X9 |
題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
1 P% H5 M. m% s8 F  z$ Y$ |1.程序分析:我們想辦法把最小的數放到x上,先將xy進行比較,如果x>y則將xy的值進行交換,
1 F" i& V" K( l: t6 F然后再用xz進行比較,如果x>z則將xz的值進行交換,這樣能使x最小。 . I. u: e" V/ J# e7 u+ m& x/ P8 l
2.程序源代碼: # E# T* D/ L+ H( @! r# _1 f; p
main() {
/ t" o- I9 h4 e+ V7 \) N' X* Dint x,y,z,t; , c) M/ r/ M) [5 Y& ^2 z& n8 E9 u
scanf("%d%d%d",&x,&y,&z); # Z$ c9 f1 N* N! c& D% {% ^
if (x>y)
: o* p9 n3 A; x2 y, @0 _: c{t=x;x=y;y=t;} /*交換x,y的值*/
( K- a! Y& S, K. E* V8 v# C; M1 Wif(x>z)
% K  V, L1 m  U( u2 r; ?{t=z;z=x;x=t;}/*交換x,z的值*/ 5 k. H5 J1 J$ N$ z
if(y>z) 7 V. S5 ?& s; K& F' @: X. m/ ~3 ?8 m
{t=y;y=z;z=t;}/*交換z,y的值*/
+ \3 v4 |1 b1 e3 H8 Aprintf("small to big: %d %d %d\n",x,y,z); }
$ t- g$ s3 a% M- o: P8 _6 ?# b0 ~============================================================== 6 s( T$ ~) ]# D& N  i
【程序6, Z% W! u2 u6 Q9 ~! v6 D
題目:用*號輸出字母C的圖案。 # L( V7 D* V7 l: j0 h
1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。 ! ^4 Y5 W7 o/ Y5 l8 O
2.程序源代碼: 0 g7 W0 t, I/ r
#include "stdio.h"
) h" J1 q  I) n4 X/ nmain() { 8 ]$ E2 l# o* V3 h. u  x
printf("Hello C-world!\n");
2 h: Y9 [, X% p2 Sprintf(" ****\n");
; r; B1 b* b: f9 q8 O' K% Uprintf(" *\n");
. ?# P* J; d  r, i  {printf(" * \n"); 9 r# m: A. g( U
printf(" ****\n"); }   _2 z5 Z" m) n& O0 d% ]
============================================================== 5 }+ {$ |& V" C0 Q: F
【程序7# D% `8 O# {! |$ i  i3 N
題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!
5 V- i# _$ ?4 B1 `) i1.程序分析:字符共有256個。不同字符,圖形不一樣。 9 t+ R) j$ L% @" ]6 _
2.程序源代碼: 6 F+ y9 b6 _" B- {
#include "stdio.h"
. g; @2 S& j% i) \2 n% }main() ; a! l. V, I7 O, _
{ , L. r6 B5 e; Z9 I6 Y9 I: @6 i& f0 @
char a=176,b=219; 7 |6 k# M  `$ W
printf("%c%c%c%c%c\n",b,a,a,a,b);
' Y$ `6 c- h5 Kprintf("%c%c%c%c%c\n",a,b,a,b,a);
' @( W, w9 T; d* Aprintf("%c%c%c%c%c\n",a,a,b,a,a);
; g1 o" l* c0 I9 L* M( Dprintf("%c%c%c%c%c\n",a,b,a,b,a); 6 R4 ~9 u; z( O
printf("%c%c%c%c%c\n",b,a,a,a,b);}
. f1 d, f  R% K5 H  n% l============================================================== / N0 R% e  b2 e
【程序8
. Q# Y1 Y3 P" [: r1 ]& O* ^+ s題目:輸出9*9口訣。 8 O" |% s' n% r. ^4 E* s  K2 O
1.程序分析:分行與列考慮,共99列,i控制行,j控制列。 % P) _4 R- Z  a2 E* j$ n
2.程序源代碼:
2 D. r3 [( o. o- H( @, h/ T7 w#include "stdio.h" ! z4 n5 m  A' ~. H& O
main() 1 h( v9 |3 I! M7 w! f
{
! Q3 X9 p% L$ ~( h! kint i,j,result;
: m: K( z6 j, S; Jprintf("\n");
& U' {* L9 m7 x  Q8 k! M% y0 s1 n. Jfor (i=1;i<10;i++)
% y) h, y0 U& F1 t{ for(j=1;j<10;j++)
! m- r; J: H/ {1 }  o6 `{
5 z' x  s  \3 m- A8 u- X3 rresult=i*j;
# z" ?% S. ?" A' e# g+ _& r; Mprintf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3*/
! E2 {2 U$ c9 Y- C" m}
* K0 y) L, |" I0 p& b/ E3 Bprintf("\n");/*每一行后換行*/ & q  |9 ^) G% J+ h- O
}
' ~' Z8 p9 d4 X}
" a3 G5 b7 y' k# d3 q===============================================

4 |, A& f, Z6 P+ K( W1 w4 T
回復

使用道具 舉報

2#
發表于 2017-9-22 10:21:51 | 只看該作者
感謝樓主的分享!!!
3#
發表于 2017-9-22 10:22:12 | 只看該作者
我竟然發現我有點看得懂
4#
發表于 2017-9-22 10:42:30 | 只看該作者
c語言。。。。看不懂
5#
發表于 2017-9-22 10:59:43 | 只看該作者
說好的一百例怎么只有幾個?
6#
發表于 2017-9-22 11:32:18 | 只看該作者
附件呢???
回復

使用道具 舉報

7#
發表于 2017-9-22 12:26:17 | 只看該作者
基本都忘了
) k/ b8 @4 {$ _4 d' I軟件類的,學了就要用
8#
發表于 2017-9-22 12:54:50 | 只看該作者
樓主,求分享剩下的
9#
發表于 2017-9-22 15:44:21 | 只看該作者
玩玩的東西
10#
發表于 2017-9-22 23:42:20 | 只看該作者
這是和電腦有關的知識,做機械的用不上吧
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-8-3 20:10 , Processed in 0.070964 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表