国产精品乱码一区-性开放网站-少妇又紧又爽视频-西西大胆午夜人体视频-国产极品一区-欧美成人tv-四虎av在线-国产无遮挡无码视频免费软件-中文字幕亚洲乱码熟女一区二区-日产精品一区二区三区在线观看-亚洲国产亚综合在线区-五月婷婷综合色-亚洲日本视频在线观看-97精品人人妻人人-久久久久久一区二区三区四区别墅-www.免费av-波多野结衣绝顶大高潮-日本在线a一区视频高清视频-强美女免费网站在线视频-亚洲永久免费

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索
查看: 5148|回復: 11

C語言經典算法100例

  [復制鏈接]
1#
發表于 2017-9-22 09:34:26 | 只看該作者 |倒序瀏覽 |閱讀模式
【程序1) t7 N, z2 B5 h7 p  ~* e: c
題目:有1234個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?
  r: W; z4 N; X2 g7 U1.程序分析:可填在百位、十位、個位的數字都是1234。組成所有的排列后再去 # s. L) `4 A3 x1 H0 D+ k4 x
掉不滿足條件的排列。
# C' f, u5 ?& J& x6 f$ F. W/ J2.程序源代碼: $ s& D6 D% ?8 G. x% d
main() {
, w! v( y. X7 i9 h9 U! h7 |int i,j,k; ; W' K  F3 x3 c: m" }! I8 j
printf("\n");
( L% j0 _3 Y6 s; _) i% gfor(i=1;i<5;i++) *以下為三重循環*/ 0 W! y  e5 g+ Z/ i4 D& N% d8 H
for(j=1;j<5;j++)
% q2 q- X* ^# W4 `  M" Wfor (k=1;k<5;k++) {
" q1 P( e# _2 m# E& ?% I/ m- ~8 Vif (i!=k&&i!=j&&j!=k) /*確保ijk三位互不相同*/ * a- _7 u; p2 ^( D" ^* Y# u  U) F
printf("%d,%d,%d\n",i,j,k); }} / H- e9 x; Z* v. n# }
==============================================================
! V8 ]& \/ z6 u( l8 G4 T【程序23 ]. A) ?4 `0 }4 o
題目:企業發放的獎金根據利潤提成。利潤(I)低于或等于10萬元時,獎金可提10%;利潤高 + _% u0 W! H+ R7 D+ F3 @
10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可可提
) V+ I7 @; T. q( c5 B7.5%20萬到40萬之間時,高于20萬元的部分,可提成5%40萬到60萬之間時高于 ( ], ?4 o! Q3 z) m  _
40萬元的部分,可提成3%60萬到100萬之間時,高于60萬元的部分,可提成1.5%,高于 . B/ j' E8 H' ?) g
100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?
' t0 D) S" `5 d8 u, D1.程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。 , s+ @% m1 m7 f* g
2.程序源代碼:
; m+ {. G; a( c. O7 W5 A/ W2 s- Pmain() { ' R9 \  U% N  N( \' n
long int i;
+ N/ }+ g* C* O0 S; X+ v! lint bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
2 |( C. F9 n9 e5 o" V% E# b0 A! Lscanf("%ld",&i);
; g, K: c0 b8 w% W& ]8 n: L: ]bonus1=100000*0.1;bonus2=bonus1+100000*0.75; . g& F9 i+ }* p3 J# ^$ U' ^: \
bonus4=bonus2+200000*0.5; . h9 {5 M& z) a) j
bonus6=bonus4+200000*0.3; % a) G2 }- m+ r$ c1 I" M
bonus10=bonus6+400000*0.15; & e: Z6 _6 {3 B9 s2 L' U
if(i<=100000)
# p/ ^' q& Q4 [) k* e; Jbonus=i*0.1; % c  r- e0 L+ z% Z  b) v
else if(i<=200000)
& V8 m. W5 x& H1 i* a% ^bonus=bonus1+(i-100000)*0.075; 2 s4 r* p5 Q) G
else if(i<=400000)
' U, t/ A% c! y  u2 ?# Ibonus=bonus2+(i-200000)*0.05;
& `  z( B3 R2 Y2 c% s  x  t8 ~4 Aelse if(i<=600000)
* f: [$ x- i% Q; m9 q4 ubonus=bonus4+(i-400000)*0.03;
  [0 N8 T) p0 x# R( gelse if(i<=1000000)
4 a. O! ?1 f9 r  n( D1 r! }6 L* Pbonus=bonus6+(i-600000)*0.015; - [" ]4 Q3 m) }5 O9 l* T+ M
else
* h: J; y+ W4 q3 K: E4 gbonus=bonus10+(i-1000000)*0.01;
2 m0 H+ l# q# E7 n, w  Xprintf("bonus=%d",bonus); } 8 @; p+ X) b' s1 K. o/ M6 j7 P
==============================================================
/ u+ B2 z! U$ o4 Z+ \( G. w3 k0 u【程序3
) j/ S1 L  M, z1 Y5 z. y題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該數是多少? % O4 c/ y3 L# @0 Y
1.程序分析:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后 3 v# q% S8 n* w$ E# S
的結果滿足如下條件,即是結果。請看具體分析: 5 K' R7 J0 D8 }2 a2 t7 m
2.程序源代碼:
8 L8 D! A. m  k9 B( i) T#include "math.h" 9 _5 g* {; H7 b# e$ v3 E' s( d
main() {
0 ^9 H; I8 h* t( Jlong int i,x,y,z;
  _: c9 G' b3 m2 c; ofor (i=1;i<100000;i++) - v3 h4 X7 u# v2 ]; K) J! o4 y
{ x=sqrt(i+100); /*x為加上100后開方后的結果*/ ; @; O' ^1 v. ^. W  z4 i( F( H9 [: ?
y=sqrt(i+268); /*y為再加上168后開方后的結果*/ * T: U& F9 }# z: C: {1 Q7 P
if(x*x==i+100&&y*y==i+268)/*如果一個數的平方根的平方等于該數,這說明此數是完全平方數*/ ' D3 p, O5 b* y
printf("\n%ld\n",i); } } 2 l* P1 D% m; x" J* I- M: `
==============================================================
$ ~8 p3 K; q& y! L& a% [1 L【程序4( s! L3 w5 k7 i  X8 R/ o& Z: l
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
  M0 a$ u5 i5 U1.程序分析:以35日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊
# w$ \/ Z! Y6 ~( ]* K情況,閏年且輸入月份大于3時需考慮多加一天。 & f" x: o0 }4 N# W. i6 ^9 s
2.程序源代碼:
- v8 M: c& F" c% I4 V- J0 x, T& @main() {
1 P, |  e+ X9 G( bint day,month,year,sum,leap;
1 b1 O5 e7 A$ s3 s2 z* v8 i/ E) Fprintf("\nplease input year,month,day\n");
9 N- Z7 M& ]+ n. e0 D7 D5 Oscanf("%d,%d,%d",&year,&month,&day); 2 k8 r, l: |; m+ q& Q
switch(month)/*先計算某月以前月份的總天數*/
{ case 1:sum=0;break; - m0 B0 U6 n$ F8 q8 M' B3 s7 o
case 2:sum=31;break; " p1 ~2 ?7 T9 {( t1 j7 S& E2 V+ A
case 3:sum=59;break;   o4 S" {% J0 }
case 4:sum=90;break;
8 _$ n0 r. G( \case 5:sum=120;break;
. `3 j0 j+ d- D" N- {0 K. w! Dcase 6:sum=151;break; + a2 i# d: \% _4 b7 _7 W; f9 O6 m
case 7:sum=181;break;
* f' z$ c# z' [case 8:sum=212;break;
: t2 g* L+ o, }2 t2 ~2 rcase 9:sum=243;break;
5 i  t7 \/ q  V7 V9 v* pcase 10:sum=273;break;
  C, v5 u5 a% m3 L2 Y% kcase 11:sum=304;break;
+ U" T3 w; E+ \case 12:sum=334;break;
- j- Q0 c6 K5 H7 u" l# s. M1 @default:printf("data error");break; } : q1 m; f2 G- c0 O& G, A9 J  o
sum=sum+day; /*再加上某天的天數*/ 4 G1 q# x7 d) q$ o9 Z6 m
if(year%400==0||(year%4==0&&year%100!=0))/*判斷是不是閏年*/
4 g0 z, \7 o$ d. k' \leap=1;
7 c% L) i) k+ Y4 l9 B* Oelse
  u- \4 y) ]; Y4 J+ j# kleap=0; 5 c0 e9 n& i- i) }; n+ V/ m
if(leap==1&&month>2)/*如果是閏年且月份大于2,總天數應該加一天*/
' n! C0 L% Q/ U5 s! w5 u9 Ssum++; ( K5 u: {/ w7 W/ W& K8 ?
printf("It is the %dth day.",sum);}
" w# w# q% m) {% M/ F==============================================================
: E/ x$ u, a+ \, O【程序5
: M& l8 y0 U) W8 v- Z題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。 " {6 a: b% R0 _$ e+ Z8 ]
1.程序分析:我們想辦法把最小的數放到x上,先將xy進行比較,如果x>y則將xy的值進行交換, 3 U! d1 b; H5 j) L
然后再用xz進行比較,如果x>z則將xz的值進行交換,這樣能使x最小。 ! g& |$ L4 D; a
2.程序源代碼: ! p7 z# {# G1 U4 P8 ~$ z
main() { 8 w# \% S' }! J! W# j
int x,y,z,t; . i2 [; P7 a0 b5 X2 q5 V6 }! v
scanf("%d%d%d",&x,&y,&z);
+ ~- A+ A( s) S6 c) ^if (x>y)
. c/ Y( H: e) `) G: I{t=x;x=y;y=t;} /*交換x,y的值*/ 5 Y2 i) e1 v- s( D9 z  R: O! Z8 N
if(x>z) . x* \0 j3 T* t, y
{t=z;z=x;x=t;}/*交換x,z的值*/
! p( s8 P1 \' Sif(y>z) 6 j8 J$ i0 Z! z- {; Y/ {* m5 R: Y
{t=y;y=z;z=t;}/*交換z,y的值*/
* t! j2 L. B" e: z) Y( Bprintf("small to big: %d %d %d\n",x,y,z); } 2 ^+ l% [' P- n6 }5 W7 @; n- l
==============================================================
; N& `, C3 t. V0 P" y【程序6: ~" F8 a- G6 S) h/ ~
題目:用*號輸出字母C的圖案。 5 y& t5 Z* @9 |4 I
1.程序分析:可先用'*'號在紙上寫出字母C,再分行輸出。 7 b$ A% Z9 O& G5 {+ h" o
2.程序源代碼: $ `% m. f8 r' u: b
#include "stdio.h" * t5 W, n7 [1 q, Q8 u: D
main() {
% K* B8 O: `. }printf("Hello C-world!\n");
" H/ P% t  `! k: J+ l, a- Sprintf(" ****\n"); * M& r1 n3 _0 o; i  ^! U
printf(" *\n");
# T- P! Z5 I" ?7 f2 |) @! y1 l+ lprintf(" * \n"); 8 V6 _6 @' V3 w: r0 L  @$ ^6 @
printf(" ****\n"); }
. t0 S  |+ a! U9 R============================================================== - q- O& i& n/ |8 m/ S
【程序7
* Z1 C' M7 O) v9 d+ P0 y+ z6 N5 Q題目:輸出特殊圖案,請在c環境中運行,看一看,Very Beautiful!
6 V9 c* S8 P/ k1.程序分析:字符共有256個。不同字符,圖形不一樣。 ! C" ^* |: x% \( X
2.程序源代碼:
: B( r3 f3 N2 {: G2 ~#include "stdio.h"
/ z# D  N3 O" n7 Z4 K) Zmain() * o! `7 K( ]! d! R* Q- Y0 `
{
& ^. r' D: d. O1 w! ^# q- Kchar a=176,b=219; 2 }- A5 `; G+ S' s6 U
printf("%c%c%c%c%c\n",b,a,a,a,b);   h6 M" i& I# a# J, W" T( A
printf("%c%c%c%c%c\n",a,b,a,b,a); - w* h8 m6 Q& h$ T& c$ B" R
printf("%c%c%c%c%c\n",a,a,b,a,a); : b7 t6 o" h$ E, [
printf("%c%c%c%c%c\n",a,b,a,b,a);
" I2 j3 t7 K# b0 Gprintf("%c%c%c%c%c\n",b,a,a,a,b);} ' R* E: X' Q1 a( d" `
==============================================================
2 b. q: d' i6 o7 Q! f【程序8( }: z7 W0 [# u3 P* F
題目:輸出9*9口訣。 ' n+ A" ]: b8 B9 o
1.程序分析:分行與列考慮,共99列,i控制行,j控制列。 6 ~/ ~* p6 \" G( J0 d8 x
2.程序源代碼: 1 e4 d% g% K5 z( n" B# h
#include "stdio.h"
+ ~+ i2 T$ r$ L/ c9 Jmain()
/ d3 B/ ^! i8 z; f* Y, \{ 9 {7 q% F: l: w+ f6 W' B
int i,j,result;
- C) A. \* u  v# K; E+ nprintf("\n");
, ~9 l2 C7 g" C3 p4 d/ ^; ?! Wfor (i=1;i<10;i++)
+ I# x2 v9 z1 R{ for(j=1;j<10;j++)
, O$ r* g* @1 Z1 V/ D{
' ?. m4 I6 a6 x& ~. J6 S$ presult=i*j;
  H6 u( {- }1 |$ X% ?printf("%d*%d=%-3d",i,j,result);/*-3d表示左對齊,占3*/
) c6 c2 Z" `0 g3 x6 [* n4 u} 5 a* m) h7 W: h3 J8 U  |" R
printf("\n");/*每一行后換行*/ : m$ b; F+ z/ j- Q+ J' g
} 3 d/ |) q4 E5 B5 R6 D
} % G! v$ n2 b8 F1 ^! x
===============================================

0 V+ [  f9 ?2 q- |( X9 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 | 只看該作者
基本都忘了
8 E; o; c" P* I5 s) \% Y' u軟件類的,學了就要用
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-10-1 21:53 , Processed in 0.065950 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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