你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

C语言算法系列的第二篇

[复制链接]
gaosmile 发布时间:2020-10-22 22:48
算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手。本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列、简易计算器、回文检查、质数检查等算法。也许他们能在你的毕业设计或者面试中派上用场。6 D4 w% \, \' |# u+ Z  Q
4 q% G- {" K3 Q
1、计算Fibonacci数列
1 a  n# X+ F8 `( e
Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。

1 D2 J- K0 [; K/ b
C语言实现的代码如下:

  1.   q0 h7 |1 F6 h5 |7 a# u# [- W) O
  2. /* Displaying Fibonacci sequence up to nth term where n is entered by user. */( x1 S" C# D( }# d) A& a
  3. #include <stdio.h>. Z/ S, U! [# p1 z8 x1 R8 u
  4. int main()
    $ L) U+ X# G4 j! d2 x4 B. s
  5. {
    7 H2 i: q0 O  L8 a7 w" M
  6.   int count, n, t1=0, t2=1, display=0;
    . O# G* a0 P. s& k
  7.   printf("Enter number of terms: ");
    7 \$ S3 ~; Q+ v5 p5 H+ d
  8.   scanf("%d",&n);
    ! z! q% x7 [) W& |0 Q9 o6 T
  9.   printf("Fibonacci Series: %d+%d+", t1, t2); /* Displaying first two terms */4 p: R- W. p* p, }5 t1 W( O
  10.   count=2;    /* count=2 because first two terms are already displayed. */- F/ X1 f* h# {) \+ ~3 ~6 v
  11.   while (count<n)  : E( a" U: M/ J- Z! B, r* l
  12.   {9 E" V4 T" n% l- D5 M0 N& J. O
  13.       display=t1+t2;
    % S2 b. C1 J1 x) t
  14.       t1=t2;
    9 R/ }6 X- ?* P. r, W
  15.       t2=display;
    * u% Y& J( F" \  t+ z
  16.       ++count;
    8 O2 X6 s' S  F# j7 {( d
  17.       printf("%d+",display);
    2 P. h8 v2 y& }
  18.   }( V* P. n7 I& X6 n9 H
  19.   return 0;1 E; D8 ?% K0 E5 d: `. @. @$ J% g
  20. }
复制代码
: w/ I- t, D  v6 a  f3 O
结果输出:

  1. ( `6 C! L, P' T: U' V# n& y
  2. Enter number of terms: 10
    # X! T8 `: C) P& O  z
  3. Fibonacci Series: 0+1+1+2+3+5+8+13+21+34+
复制代码
0 C: \) a# z$ i- X) k5 x. @- @
也可以使用下面的源代码:

  1. + n9 P' Z; ~9 q' u3 i
  2. /* Displaying Fibonacci series up to certain number entered by user. */
    6 r* }$ W( ]1 I2 S8 R
  3. 1 I/ L, {* @  J- r
  4. #include <stdio.h>
    , x3 f* k" n7 V; ?9 {3 m
  5. int main()
      R3 [3 H9 q5 M/ Y7 S
  6. {
    ) J4 B# o+ o5 V: B* s& |% ]4 h( c
  7.   int t1=0, t2=1, display=0, num;8 H  U6 R0 |! W% n3 X8 O% H( w
  8.   printf("Enter an integer: ");
      c. y  [6 t: r" v
  9.   scanf("%d",&num);, f4 P" G9 _4 O, j
  10.   printf("Fibonacci Series: %d+%d+", t1, t2); /* Displaying first two terms */
    7 E5 M! P7 E2 v+ Y
  11.   display=t1+t2;: W- U  [4 Z( N0 U9 S9 J7 ^
  12.   while(display<num)9 P1 N( |5 Q# T4 X; W
  13.   {: Q9 Y/ [1 L) i
  14.       printf("%d+",display);
    2 Z7 A$ ~; v% ^5 U( n# n
  15.       t1=t2;
    ) A0 M9 c1 S6 I3 A2 O) P
  16.       t2=display;
    8 e0 u( f! L2 z% I/ K- I
  17.       display=t1+t2;$ ]& K7 c+ L* S- j2 ]% a" E/ m
  18.   }
    # I" L* k8 M* S; \( @3 q
  19.   return 0;9 b  }3 C% c/ ]- X
  20. }
复制代码
, p% j! W4 d7 O3 w1 D
结果输出:

  1. ) c; Q: R& i- y, \+ z% G! Z5 g& W
  2. Enter an integer: 200
    # L9 h" L* T, Y
  3. Fibonacci Series: 0+1+1+2+3+5+8+13+21+34+55+89+144+
复制代码

. N" K* Q( \2 C: f" h# F, z
- b$ p- D" G9 X9 m& S
2、回文检查
+ |% C* V! K( e7 f, Y, g* d4 L9 |
源代码:

  1.   I7 {/ @) u0 x3 a  {! Y# y$ g% d- N& p' z
  2. /* C program to check whether a number is palindrome or not *// v' [  j! \% ~, q
  3. 8 R! N7 }' N' U$ r% O- D, u7 b
  4. #include <stdio.h>
    " E1 a5 y  D" {
  5. int main()+ i6 R* l2 M5 t
  6. {
    5 r5 U5 v& k7 I3 G
  7.   int n, reverse=0, rem,temp;- a' a5 z2 Q6 U  O) |5 {
  8.   printf("Enter an integer: ");
    8 a( K1 n: ~2 _# d1 G' N
  9.   scanf("%d", &n);
    # K# u' Y  F( ?) q2 R+ U; s
  10.   temp=n;
    1 D2 X+ ?' Y# [, i5 S$ Q
  11.   while(temp!=0)) ^# d. h" L$ B/ A  h
  12.   {& ]) V7 G& ?/ p2 k0 X# J
  13.      rem=temp%10;( ?, I, V$ \2 u- C
  14.      reverse=reverse*10+rem;9 ^2 j/ t5 X  A# ?9 g
  15.      temp/=10;* H! ~. O2 t/ p, ?
  16.   }  
    2 Z9 m4 I; u, q% k0 M) Y7 Q
  17. /* Checking if number entered by user and it's reverse number is equal. */  
    9 O7 ?' \2 Y9 E0 `4 M
  18.   if(reverse==n)    }: V. a" D, v* a! O* ~2 T
  19.       printf("%d is a palindrome.",n);
    1 Z, Q! w/ w" |9 D7 |; e
  20.   else- g: `# X$ F2 a* j$ l9 g' F! u
  21.       printf("%d is not a palindrome.",n);% _5 }' c: r/ |+ c) r" ?
  22.   return 0;$ C( S) q4 y" ?7 r. [$ {# g1 \  J
  23. }
复制代码
/ D& b( ]. I# `' q1 P9 N8 r. C
结果输出:

  1. 9 m" A2 [7 z1 U' i8 A% t
  2. Enter an integer: 12321
    * s/ t3 A& O1 r5 ^
  3. 12321 is a palindrome.
复制代码
( {) ^7 l) a  a
: s: `2 X: p8 d) b' c- e
3、质数检查
/ T1 P- D- K& g$ H
注:1既不是质数也不是合数。
! ^+ w( c/ D! ^3 l8 W
源代码:0 q9 O) n" K/ W; r( w
  1. ; x( K/ Q- p5 x! ]; f  y: p5 r
  2. /* C program to check whether a number is prime or not. */
    8 C* i# k5 {: b' C
  3. " l/ ]4 R# _/ K7 A& ]+ n# J! K
  4. #include <stdio.h># j0 |1 C6 q7 C) e5 P. I
  5. int main()# O2 U1 A9 {, @9 m: ?
  6. {3 }- x, ?$ G7 s
  7.   int n, i, flag=0;
    ' ~- Y5 ^) [! b2 l  @8 z1 C) p
  8.   printf("Enter a positive integer: ");6 b- f7 ~& R6 G/ B! C8 p
  9.   scanf("%d",&n);
    : t- S; S) V7 n' N. x! x7 j
  10.   for(i=2;i<=n/2;++i)
    # [% y, I; l9 E3 }; n
  11.   {
    0 c: p0 k7 `; O) j& A. O& k; O$ k
  12.       if(n%i==0)
    , p  y7 F! n+ \' s9 Y; O9 U6 {
  13.       {
    3 \# c7 K0 T3 v# y$ e9 D# M
  14.           flag=1;& c- w% b1 H  g- Q$ b. h. _
  15.           break;
    ) m# [) j9 e! |2 a$ W
  16.       }0 q1 ~3 {: [6 ]; e0 J2 Y' c4 R
  17.   }. a% S' w: m; E' l# Q. m
  18.   if (flag==0)
    3 R0 i$ {8 l( E5 _. o1 U
  19.       printf("%d is a prime number.",n);9 A# [. f9 f9 O5 \2 _' o; n/ c
  20.   else
    + [% m. p* ~& W+ q7 P1 y% |
  21.       printf("%d is not a prime number.",n);; u, q. r: |' M8 h2 K
  22.   return 0;0 W5 |, B5 t( d5 ]
  23. }
复制代码

" G+ k, ?! |; g8 ?; C* V! t
结果输出:
  1. * h& m) U' d) L0 @. d1 m
  2. Enter a positive integer: 29
    . X. P; a& y/ R
  3. 29 is a prime number.
复制代码
) o- U+ M  Z* C' O' {# E5 I9 J4 Z
4、打印金字塔和三角形
. m( L# O: E5 o$ D4 G5 R
使用 * 建立三角形

  1. ) s, T0 E' g7 @' I4 ^
  2. *9 t* \% J. L5 P3 ]& P" j) X: Q
  3. * *; {3 x3 o$ A3 K$ I
  4. * * *
    $ x( O3 X9 S6 Z7 [. W4 q( Y# r" l: i
  5. * * * *. r5 I3 _! _; O8 I! F6 A8 d3 o
  6. * * * * *
复制代码

4 l2 S1 E# s0 f$ x8 G
源代码:

  1. 4 V6 ]/ |( Q" a( B; d% ~
  2. #include <stdio.h>$ t9 h" l. q+ H9 C5 v" e
  3. int main()
    ) V+ N7 m# H% i" n" s1 c# W7 y
  4. {
    3 o" S2 F+ V( T# Q
  5.     int i,j,rows;
    - w% B8 n  S& z& c6 ?& s3 N
  6.     printf("Enter the number of rows: ");, y. u5 H  l2 U) v# ^% u6 E
  7.     scanf("%d",&rows);//微信搜索公众号【C语言中文社区】关注回复C语言,免费领取200G学习资料
    8 b& L8 o- w+ K) m( S" \! {
  8.     for(i=1;i<=rows;++i)# G0 R! n! n! x
  9.     {
    - r* D* Z3 R( {0 r5 `
  10.         for(j=1;j<=i;++j)9 Z9 L. t: `: r6 s/ M0 @
  11.         {$ x( c3 q- ?& F8 X# T4 s' u
  12.            printf("* ");
    ' k( _: ~5 r+ d" O) r8 t4 p
  13.         }
    2 M/ {+ ^$ _$ F' J% Q& f+ h
  14.         printf("\n");% q8 ~% k" Y# M9 j; {
  15.     }# z5 a' n6 M$ ?
  16.     return 0;
    " I6 h" x' |. l% L0 l
  17. }
复制代码
" r2 b6 h- C0 N$ v
如下图所示使用数字打印半金字塔。
  1. 5 h1 @, }1 x8 ^$ m( g  X3 i* F* O( U
  2. 13 X. i" c- s$ a) E
  3. 1 2* v$ y, g) w4 m1 s/ L% C  f
  4. 1 2 3
    2 H8 V3 g. O( T5 f9 a
  5. 1 2 3 42 U5 p- t( Y6 E  z' q+ V- G
  6. 1 2 3 4 5
复制代码
7 \5 c( ?0 I3 q7 Q5 @
源代码:
  1. ( j  O; |+ G! E: d9 q9 W1 s
  2. #include <stdio.h>
    & z) r4 }3 w/ V- ^  L
  3. int main()
    . ?1 u6 p) T: N4 E; a3 {
  4. {
    % ?& e) J5 N5 T! w& z" R( B- l) G
  5.     int i,j,rows;
    4 Q% j6 p  Y1 O+ y
  6.     printf("Enter the number of rows: ");4 g/ ?* _& u0 U: H8 n
  7.     scanf("%d",&rows);
    7 t, b. o$ l. d# r
  8.     for(i=1;i<=rows;++i)+ o+ a7 K  Y9 i% y/ u6 m
  9.     {
    4 r+ `+ f8 g% W- ~3 [# x# s7 n
  10.         for(j=1;j<=i;++j)
    3 z! ]2 Q( s3 ?
  11.         {
    ' c: d' e9 \2 S! v+ I  U
  12.            printf("%d ",j);# T" v5 M" |% _: X* b" y+ f9 y
  13.         }
    7 M) V' h1 {* e( F* v
  14.         printf("\n");( t0 c. }0 X1 ~$ _9 S1 ^5 W
  15.     }% E9 J! ^2 ^4 H" e
  16.     return 0;
    ; v# u8 h8 {% H4 M- a, A# _7 \. H' p
  17. }
复制代码
! K, v1 i* ~; c# T5 {5 j6 y0 F
用 * 打印半金字塔

  1. ' z- E  _& y% z* {2 g" Q: H
  2. * * * * *! ~: Y* N/ }1 C2 N3 j7 H8 x; K/ x
  3. * * * *) i! G1 q* T. a2 h) ~
  4. * * * ! }& G! a+ b) {
  5. * *
      `6 v! [! }$ O
  6. *
复制代码
# ]* ^) s9 c' ?% S7 o
源代码:

  1. 8 S' x2 x: q, A
  2. #include <stdio.h>1 g" z8 @+ k  E/ d3 }
  3. int main()
    1 u3 K2 _5 T; Q8 j
  4. {( e- _4 {4 M2 C- `
  5.     int i,j,rows;8 n2 |" g$ ?* V5 G8 N4 m
  6.     printf("Enter the number of rows: ");5 ]: f% {# f. ]0 d3 q/ X, y2 D) c& T
  7.     scanf("%d",&rows);4 h" P2 u/ R1 H% i) H  u5 u3 a
  8.     for(i=rows;i>=1;--i)
    ; P5 v! K5 l5 h9 @6 `
  9.     {
    5 k0 F  R- k( q, R6 c
  10.         for(j=1;j<=i;++j)
    & s5 s( O/ F* M- l, p9 M9 y
  11.         {
    2 f" H3 @) e. \2 O$ n+ h; d% w
  12.            printf("* ");
    & F5 J' f5 B& L! |
  13.         }7 V0 J6 E$ m* g  F7 h6 ?
  14.     printf("\n");
    ) J# \. H( ?8 x* e% c1 Q
  15.     }  ^: [9 }9 }( [" e5 f
  16.     return 0;7 o9 G0 K# I* |  h4 |5 h
  17. }
复制代码
9 ?$ \' L) N* P6 h" [0 P
用 * 打印金字塔
  1. 9 Z/ e6 j# x. l! w- c5 Y
  2.         *
    2 t' H, D+ w4 C: ], F! n; |
  3.       * * *4 ~& F" p# C" G! y5 V
  4.     * * * * *$ A) Y, f& S& \
  5.   * * * * * * *0 K0 r( e1 x# q7 [
  6. * * * * * * * * *
复制代码
  N  S# }, P( |
源代码:
  1. % Y& b- i* u- N; ^$ g
  2. #include <stdio.h>
    . Q  D4 o; }4 \$ Y$ K( ~6 {( |
  3. int main()
    - E. d6 L; u$ a4 a6 F
  4. {
    6 d& B9 Y8 {6 B2 S
  5.     int i,space,rows,k=0;+ Z7 a7 G" E+ ~! x, ~7 x) B
  6.     printf("Enter the number of rows: ");
    - s: I% W( {, ]" X/ |
  7.     scanf("%d",&rows);2 V  T( @. J$ _2 p  T! y
  8.     for(i=1;i<=rows;++i)- p5 {  J' M6 L9 ~
  9.     {/ l6 F. {: t5 ?- ]0 C. Z
  10.         for(space=1;space<=rows-i;++space)
    % Y7 B+ X+ I  y, q2 W  k; J. z
  11.         {
      p1 ~$ U1 N$ _7 n, O: d
  12.            printf("  ");' D9 G, _8 g+ W: m2 c" u
  13.         }
    ; C" w- \  Z, e) K8 s' W- R6 |: F
  14.         while(k!=2*i-1)5 `4 Q) R; G& |& V1 |5 O! M9 K
  15.         {0 o- N5 Z6 I" H/ h' n7 c& C8 O
  16.            printf("* ");
    : s) w; G. ?$ m& x$ N7 ^, y
  17.            ++k;
    " s) Q7 _. ?( p2 G/ A
  18.         }
    0 {9 e) Y7 U: H% \! e
  19.         k=0;
    * j/ |3 w9 B# E! m/ w3 q: _
  20.         printf("\n");
    + g# J. k# N8 I7 P+ G
  21.     }8 g* l- p6 u2 }% v  C4 u, Y
  22.     return 0;
    4 N! ^" A; U, ?+ M* q1 t7 W9 ~
  23. }
复制代码
2 C7 a6 {6 A3 h3 w
用 * 打印倒金字塔

  1. 5 y* K; x& {; L$ f1 @! F/ J9 Y3 g
  2. * * * * * * * * *
    7 G1 ^3 o! e" a# F
  3.   * * * * * * *; H& ]7 a  ^0 ?( a* q* x* C
  4.     * * * * *
    3 ]1 t# K6 |& H0 U7 M# v
  5.       * * *
    - k2 \0 l( I2 d+ B7 K; L6 l
  6.         *
复制代码

& Q) C. E& d1 j* y6 w, {
源代码:
  1. 6 C: R% V9 Y& a' x3 `8 n4 b; P. K
  2. #include<stdio.h>
    + v( E/ E/ a. i1 [& J
  3. int main()  U( s" P0 K! X8 x9 o7 g
  4. {
    8 @+ @8 ~( @$ c' E3 [
  5.     int rows,i,j,space;2 k4 C$ E) U6 f+ F
  6.     printf("Enter number of rows: ");' W! ~: g2 S2 ?1 W& s4 R
  7.     scanf("%d",&rows);3 W: h$ r7 z4 ?: |9 o
  8.     for(i=rows;i>=1;--i)
    7 }. x. ^0 S  b! M
  9.     {& p) {/ a" d% x
  10.         for(space=0;space<rows-i;++space)
    . b9 V7 V' A  }% a, c2 L
  11.            printf("  ");
    1 @/ G! t1 t" g/ z, P7 J
  12.         for(j=i;j<=2*i-1;++j)' R% B+ S% h2 o5 H% Y& {/ `" g
  13.           printf("* ");
    7 L) [7 k& Y/ m2 Y. h# I. z
  14.         for(j=0;j<i-1;++j)! o5 B, R( T3 }! V) U. X
  15.             printf("* ");
    ) @9 j) `# L+ a" S( v
  16.         printf("\n");8 @/ E7 O( j! L# D2 }4 f# x& u1 J
  17.     }
    2 c1 G2 [3 l' }) E  r
  18.     return 0;, T3 P3 H/ q+ k$ n- Y) U/ B
  19. }
复制代码

1 A9 O* ^& Q5 F" }8 ~

( L0 m' c! R; N" r
5、简单的加减乘除计算器
4 e4 ?" v  Z' C! z9 d- m
源代码:

  1. ) @, `$ j6 B4 {
  2. /* Source code to create a simple calculator for addition, subtraction, multiplication and division using switch...case statement in C programming. */
    7 |9 P- N+ A; z( E9 G3 Z

  3. ' H" D% F) g: L4 Y# o0 O
  4. # include <stdio.h>7 J* \* d6 {; C3 F% v; G
  5. int main(), }: O6 }# q5 c" \
  6. {
    ( @6 t* `7 k1 T- @* i
  7.     char o;4 K* x. w6 Z. `- q3 ^
  8.     float num1,num2;
    % ?8 m/ f2 m* [: Y+ u! n) o0 q) e
  9.     printf("Enter operator either + or - or * or divide : ");
    4 M# p7 B0 A; w  D! J
  10.     scanf("%c",&o);) P# }2 r' P; @2 [
  11.     printf("Enter two operands: ");& r9 \. s" u* w; {
  12.     scanf("%f%f",&num1,&num2);
    1 k. k" K  V8 ^) f! T
  13.     switch(o) {- D6 l0 P, {9 {2 m1 F
  14.         case '+':
    ! J, Z, m# H! q! v$ b) p; |1 h
  15.             printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);
    % L9 Q/ ~/ j% @# ?  G5 m
  16.             break;
      u: ^1 D8 V5 \8 M& f
  17.         case '-':, q. k% E4 H( i) w
  18.             printf("%.1f - %.1f = %.1f",num1, num2, num1-num2);+ c$ K- e2 S6 L! S
  19.             break;
    ; p1 o$ \$ ]8 ?# u# ]1 J0 x/ s
  20.         case '*':1 E5 a5 r, K+ m, s" O
  21.             printf("%.1f * %.1f = %.1f",num1, num2, num1*num2);
    5 g% g' s2 ~' l' Y# ^( h2 Z7 C# T
  22.             break;
    ( U  d' E; s! }& ]- s  y7 {& Z
  23.         case '/':
    ! Q' P3 h" I3 H4 b5 N3 |3 k1 I
  24.             printf("%.1f / %.1f = %.1f",num1, num2, num1/num2);8 A" ^9 J, q# x9 t
  25.             break;
    ( B0 h0 `9 b) j7 {
  26.         default:
    : z3 j* I: }& e0 B4 _- T$ f
  27.             /* If operator is other than +, -, * or /, error message is shown */- ^! G% c# n9 Z( s1 V' D  h1 L
  28.             printf("Error! operator is not correct");6 F+ W) ?  E* V" T, n) |
  29.             break;9 K( U4 B+ E6 W! W' {) A( E
  30.     }
    9 U. d, V  [/ a& n3 ~
  31.     return 0;
    * z8 V/ J" y; F; b+ t7 G3 ?
  32. }
复制代码
! R1 Y* W3 K' N  \, |. ]2 ]
结果输出:

  1. & m. o5 @& x1 Y0 N* U
  2. Enter operator either + or - or * or divide : -
    3 e3 d/ I( z: x4 n
  3. Enter two operands: 3.47 A' i7 H! O) e) M4 W
  4. 8.4# j- Y' ]; l- y6 [, o! N0 J$ w
  5. 3.4 - 8.4 = -5.0
复制代码
' q: C0 s6 f$ o. e
' @( ?- t- q7 [" a4 ~. N
6、检查一个数能不能表示成两个质数之和
$ i. S% F5 f1 F9 G% |
源代码:

  1. , ~( k, H0 c, V6 e7 ~- h
  2. #include <stdio.h>0 f# x6 q  i  Z- C7 W, L
  3. int prime(int n);
    1 A: Z+ K) J+ H  o
  4. int main()
    6 N/ s( z' s: K% e$ o+ P/ }9 q
  5. {
    3 S. a) t; E0 p% ^4 P+ T
  6.     int n, i, flag=0;//微信搜索公众号【C语言中文社区】关注回复C语言,免费领取200G学习资料9 @4 h- s. M* G, k7 ^" j' }6 D; H
  7.     printf("Enter a positive integer: ");9 D- y3 H  S- R  ], p+ l  @
  8.     scanf("%d",&n);
    " }- \$ h% G$ i. p6 X
  9.     for(i=2; i<=n/2; ++i); `# a; f( f0 d2 G
  10.     {
    , C2 L2 G' q, k* N" `/ S
  11.         if (prime(i)!=0): n* `" d: O+ z8 R* T7 s" z
  12.         {
    7 e8 \3 D8 Z8 q( ~
  13.             if ( prime(n-i)!=0)9 ?8 K# i  O. D$ Q) P7 Q3 q4 B
  14.             {& F9 i- g' _- c; S
  15.                 printf("%d = %d + %d\n", n, i, n-i);  Q: F" ?2 r0 F' y# A$ ]
  16.                 flag=1;5 ]- Q' t/ N5 e5 q5 Q* j! ]( s1 A8 j
  17.             }
    , |+ |9 N+ W0 X2 r. n5 N  o+ w& M

  18. & h2 d8 ^$ ~* K# E# g
  19.         }, e, O0 B3 G, \* v4 f/ P
  20.     }
    ' m  y- f$ H; ~4 K3 d3 z( \
  21.     if (flag==0)' g* I# w. P* d
  22.       printf("%d can't be expressed as sum of two prime numbers.",n);/ P5 G3 E. G; E. T1 E
  23.     return 0;
    % S& O/ {! ~& Y5 D* W: H3 y7 t
  24. }
    2 f2 P8 j& W5 F( \8 S2 x2 u1 H
  25. int prime(int n)      /* Function to check prime number */, l9 H% ]2 q' o
  26. {
    * @  |3 v1 {4 |7 |! c
  27.     int i, flag=1;% H( [# E( j. ?. {/ l8 Y% Y' f
  28.     for(i=2; i<=n/2; ++i)  n( d& {8 b# ^5 K$ g% C
  29.        if(n%i==0)$ B2 ?0 w6 g! l$ V/ W
  30.           flag=0;) O7 D/ L; v8 X4 R' k: s
  31.     return flag;
    6 U  m- y; |# ^) Z
  32. }
复制代码

0 ~  ~' r7 T: Q2 d4 y0 h
结果输出:
  1. 5 r+ X; x& G7 k3 [; T% x
  2. Enter a positive integer: 34
    2 s4 W- _2 m) D: W" i" F- H
  3. 34 = 3 + 31$ C! P0 J+ b, L) ~! x! D8 ]
  4. 34 = 5 + 29
    3 g% }+ U. ^3 K  F" P$ ?
  5. 34 = 11 + 23$ z9 M- b* n3 Z$ G: L' R- l
  6. 34 = 17 + 17
复制代码
) B- ]4 M* O1 w
3 N& ^9 Z2 |, `' P5 I% _
7、用递归的方式颠倒字符串
* [3 l: V5 v. `% f2 B+ M7 l; M
源代码:

  1. 4 C5 u, z. l6 f7 f; M2 q! O+ ~2 I
  2. /* Example to reverse a sentence entered by user without using strings. */
    . r! S) C. ^) }+ u9 `4 Q0 V4 ]
  3. ! ^1 F# ]3 E; Y
  4. #include <stdio.h>6 S% H# K1 d" s4 O% l3 ~8 i6 I
  5. void Reverse();
    $ k. s& x* w) d9 [
  6. int main()- K8 S; J% e/ y" }: I+ ]
  7. {
    : U7 C, x( j. S4 g! k! ]8 t
  8.     printf("Enter a sentence: ");
    6 r4 U% t' C# m& T1 p' I
  9.     Reverse();5 A/ B' X0 p* H0 I! q3 b
  10.     return 0;
    ' d* U; r- ]& u" W0 S9 T+ O' E
  11. }
    0 y7 x/ {1 f8 {
  12. void Reverse()/ d8 z6 A7 S' N" v0 j/ O: m
  13. {
    ! V& p& C9 ~' |0 F& m. D
  14.     char c;0 R( b% {1 p) e
  15.     scanf("%c",&c);
    ! r9 o$ P8 e- G4 `
  16.     if( c != '\n')0 i/ ^4 B* c/ w
  17.     {
    ) ^8 x( h4 f+ f  U
  18.         Reverse();
    7 U. J! O+ o6 w. F* v% Z# P
  19.         printf("%c",c);  C8 s; \" Z% v) {7 D
  20.     }9 @4 I8 {/ g8 p7 V: C, z( |& L, z
  21. }
复制代码
0 v: {5 H8 U& m5 d9 v/ N( a+ s) S
结果输出:
  1. ! N/ ?( C4 w( [/ I8 b
  2. Enter a sentence: margorp emosewa- a, j' N# {  G6 Y) x- F& h
  3. awesome program
复制代码

  S6 I) n5 T% x3 o$ M

0 E9 H& f: D" c4 w: v* J1 c
8、实现二进制与十进制之间的相互转换
  1. . j" _# o  k/ I1 b7 G% O9 D
  2. /* C programming source code to convert either binary to decimal or decimal to binary according to data entered by user. */
    ' y6 y$ K8 R3 n

  3. & s0 e3 s  ?$ _5 k9 E: y
  4. #include <stdio.h>" U& W; }1 Q" I8 ^8 e
  5. #include <math.h>" u- t, N# w! b& E' R
  6. int binary_decimal(int n);+ A( W5 v) l# A
  7. int decimal_binary(int n);- D- I. c+ P* ?1 q; t
  8. int main()8 F: a& K; Y6 F3 S
  9. {
    : O3 _( t) H+ L9 H( `/ E+ j
  10.    int n;
    ) Z& f8 g5 ^! J4 J
  11.    char c;" f: {. V& ~- m5 \/ ?7 S" a
  12.    printf("Instructions:\n");7 j$ ^  H& T$ s" `+ }/ ]
  13.    printf("1. Enter alphabet 'd' to convert binary to decimal.\n");1 l5 i+ n7 b, n3 z
  14.    printf("2. Enter alphabet 'b' to convert decimal to binary.\n");
    - |. u9 Y# r' M2 L4 B5 i; r
  15.    scanf("%c",&c);
    3 E9 L1 \$ g. a+ o8 U# A. f
  16.    if (c =='d' || c == 'D')0 s& m9 z, v$ A1 ?( E& Z/ w
  17.    {6 ]. R' Q7 E% u% N& y
  18.        printf("Enter a binary number: ");' c4 s+ T! g6 N, w
  19.        scanf("%d", &n);
    ) Y% h8 P. f5 v4 w) k9 {
  20.        printf("%d in binary = %d in decimal", n, binary_decimal(n));
    ; C% U# i% ~; h
  21.    }- \" [! T" f# L; J4 m4 p
  22.    if (c =='b' || c == 'B')
    : g4 |  M0 a4 i  b/ f! t
  23.    {
    2 e5 E0 k! c& g! Y. E
  24.        printf("Enter a decimal number: ");- ]. `# ^+ B) i2 D
  25.        scanf("%d", &n);
    0 K3 F/ Y3 ]& ?% i; j
  26.        printf("%d in decimal = %d in binary", n, decimal_binary(n));. @% g1 u6 t5 A9 D
  27.    }
      |% k  z! b9 |+ a6 o: V; j
  28.    return 0;8 Q* c" g5 w$ D4 {/ A% o- l5 h
  29. }
    2 p% q$ c+ A8 r4 n' ]

  30. 1 T+ w4 q' F5 p; O& }
  31. int decimal_binary(int n)  /* Function to convert decimal to binary.*/
    * U3 O: s& L- ?6 R
  32. {5 y4 F* Y6 R5 b8 N& N& T6 G
  33.     int rem, i=1, binary=0;1 l* c& J; j/ f+ \
  34.     while (n!=0)5 ^' B$ P4 b7 g. s# U/ ^/ A
  35.     {) H4 B+ D# k# B' @+ H/ t
  36.         rem=n%2;
    " b4 d' o6 N0 Z& z* R
  37.         n/=2;$ W$ n5 D4 c3 b8 G
  38.         binary+=rem*i;
      ^: y& F( f6 V- j9 e" f; T% s: E
  39.         i*=10;
    % y; A9 E+ }& s6 W  h2 K3 F
  40.     }
    3 Q+ T$ U' G. ]# L+ K
  41.     return binary;6 G: L+ a  D  a) l3 k- N: B
  42. }0 V. S2 U' Z6 u7 V
  43. , ]. ]6 x* F! h, C  P% M, [
  44. int binary_decimal(int n) /* Function to convert binary to decimal.*/
    8 z3 @  {6 V" q' ~/ @
  45. {
    + `5 R# @) W7 w9 G& j
  46.     int decimal=0, i=0, rem;1 @- y$ b$ f4 `4 s( Z: X
  47.     while (n!=0)
    3 _# h4 Q2 q$ M2 Z$ @: c
  48.     {
    # J  ?* N% T7 c9 ^* a, v( Y; y! j
  49.         rem = n%10;4 H( d! m, E* p) x1 i
  50.         n/=10;0 M) P% ~. p9 N! E+ w
  51.         decimal += rem*pow(2,i);
    . \8 J  W. X5 d7 N3 U5 S% ~" W: y9 V
  52.         ++i;
    0 g5 M  h1 \: R
  53.     }
    : @9 Z. {# \5 D, t# q: }
  54.     return decimal;# M. p( z8 J" K
  55. }
复制代码
" k. f* P: [: l, f* ^0 B
结果输出:

. k1 z) A5 E+ g- ~5 ]
9、使用多维数组实现两个矩阵的相加

2 Q) U" [  s- P7 ~7 L; {2 q; F' _
源代码:
  1. % J4 L$ Z, ]8 i; r) ]6 g. h
  2. #include <stdio.h>
    ; E; G* g6 a, F: u6 ^4 P& H
  3. int main(){1 p" h. u. k+ Q, w4 u
  4.     int r,c,a[100][100],b[100][100],sum[100][100],i,j;7 F+ ~0 M! a) l
  5.     printf("Enter number of rows (between 1 and 100): ");
    ( \: H: j; m: n; l8 c5 ?
  6.     scanf("%d",&r);. Q7 Y. M0 h, L* M
  7.     printf("Enter number of columns (between 1 and 100): ");5 b, t& r- @6 y7 g! q* k
  8.     scanf("%d",&c);5 Q4 U5 K1 r, s- X+ N. u: a2 q
  9.     printf("\nEnter elements of 1st matrix:\n");' y6 A% e0 G( i5 {9 o4 F) B9 j( ?

  10. 6 F  ?# }: G3 x' M
  11. /* Storing elements of first matrix entered by user. */
    + w5 `' R2 @7 y& P% u8 ]

  12. , ]0 p7 e! w8 ~2 z, K/ a
  13.     for(i=0;i<r;++i)% d) X- U6 ?5 m
  14.        for(j=0;j<c;++j)1 S$ b9 @) l8 ~+ G4 ]9 J+ h
  15.        {
    . Z* S$ Z& |9 I; p0 U' x
  16.            printf("Enter element a%d%d: ",i+1,j+1);: E1 Y3 F2 \. Y+ v
  17.            scanf("%d",&a[i][j]);+ w2 A. V9 S/ ^& e) W4 A9 r  y
  18.        }
    / \2 F, x8 F2 {+ Q: L

  19. & p8 {3 w) _8 c: W5 s1 _
  20. /* Storing elements of second matrix entered by user. */
    - [  j" u' n  |/ W
  21. 7 \9 T  Q" q+ ^: W. j& R0 i
  22.     printf("Enter elements of 2nd matrix:\n");$ [# u, J" g2 `# i& i: W! l# ]
  23.     for(i=0;i<r;++i)% F" s, M; E9 ^* L( t1 _" J% W
  24.        for(j=0;j<c;++j)
    1 n4 ^* V5 n) z
  25.        {
    # o7 O/ G" {2 p: J; ?" K) @& S
  26.            printf("Enter element a%d%d: ",i+1,j+1);
    $ A! q2 v3 Y  w+ [3 y- Q) ]! r
  27.            scanf("%d",&b[i][j]);$ f) p) ]* Z" H& K
  28.        }
    , S; J9 L7 v! y2 K; M
  29. 5 U( _- f) t; e$ q. k0 ]* [
  30. /*Adding Two matrices */, ~* f' j+ T3 I1 s; z, B

  31. % ^  Z, E3 M% J( @
  32.    for(i=0;i<r;++i)
    9 L$ j7 \  Q9 L1 v8 ~4 ]
  33.        for(j=0;j<c;++j)
    - d0 d. `" a9 ]4 n4 `. L
  34.            sum[i][j]=a[i][j]+b[i][j];
    0 n8 u  i: p3 x3 V0 n- y, ~$ W
  35. + R3 M% I: v# D* [
  36. /* Displaying the resultant sum matrix. */( V' l% \# z2 P! ]
  37. 5 S, m+ C& E% `3 I# v' [
  38.     printf("\nSum of two matrix is: \n\n");
    & ~$ ], Z) E) h, p6 \1 H
  39.     for(i=0;i<r;++i)  a* Q5 ~7 O5 P
  40.        for(j=0;j<c;++j)
    : q' T5 r) d3 m* v5 e3 m8 a; ]% k
  41.        {8 h1 d" p" n/ X5 N2 [$ S) _+ m' n
  42.            printf("%d   ",sum[i][j]);7 s; X1 j8 U. L4 S/ d
  43.            if(j==c-1)
      a. G- K# S# J+ ^6 D0 t0 h
  44.                printf("\n\n");; e# U  {' {+ Y. O8 W/ }
  45.        }
    " ~  Y' |5 C; R; ], K2 C

  46. ! c+ \" m- i2 f, y
  47.     return 0;+ D# ]4 p) r. \9 l
  48. }
复制代码

$ O$ S5 Z# ]5 S6 c" F/ ?6 I8 |
结果输出:
! K% l5 u! s- h7 m2 V/ I
10、矩阵转置

* y. K9 b- P3 }  G, a
源代码:

  1. 9 K3 C" l" @* Q) ~: V
  2. #include <stdio.h>9 ?$ m, w, _/ _1 V2 I# p
  3. int main()  E, k2 f5 d7 H) `/ Y# ~4 d# _
  4. {4 S6 p" o& n% g+ I
  5.     int a[10][10], trans[10][10], r, c, i, j;
    ( A+ ?! X5 ^4 |
  6.     printf("Enter rows and column of matrix: ");3 x: M& S% w; }; r8 F
  7.     scanf("%d %d", &r, &c);' c6 A* N$ B, o. @
  8. + k8 N2 L! I2 g/ Y& j; m1 L
  9. /* Storing element of matrix entered by user in array a[][]. */
    ' }& q6 ]$ L" i7 k4 a, _
  10.     printf("\nEnter elements of matrix:\n");( \( Z$ I5 Y$ u* a; M
  11.     for(i=0; i<r; ++i)
    " i) F/ Q# U8 P7 S: G  _' a
  12.     for(j=0; j<c; ++j)- \& `# C+ X) G" F
  13.     {2 H2 ?' J6 O' Q. h
  14.         printf("Enter elements a%d%d: ",i+1,j+1);
    % m7 C+ I/ L0 g2 R1 R
  15.         scanf("%d",&a[i][j]);* O6 k1 ]8 i3 G
  16.     }
    + s3 E# D' L( Q
  17. /* Displaying the matrix a[][] */: _8 K0 T- H: h
  18.     printf("\nEntered Matrix: \n");
    ( H3 q% \7 {  `# m% q
  19.     for(i=0; i<r; ++i)
    5 g. T& f1 l  r+ S" h. S
  20.     for(j=0; j<c; ++j)
    4 b1 S% p) ^6 Y1 E7 V  c
  21.     {
      O( m1 S9 W$ m0 C
  22.         printf("%d  ",a[i][j]);
    ; \7 X# C/ h/ I+ c
  23.         if(j==c-1)7 i+ @( x$ M; f$ K' Q
  24.             printf("\n\n");
    " Z7 A$ }4 x  V
  25.     }
    , ^0 L3 T  E6 E
  26. " T% w* y6 X/ _- E1 ~" _
  27. /* Finding transpose of matrix a[][] and storing it in array trans[][]. */% W3 H' p, n3 @: N4 M: w' i
  28.     for(i=0; i<r; ++i)
    9 c' I6 b3 ~! Q3 h: q! }
  29.     for(j=0; j<c; ++j)
    * [) [) z2 u+ i; S7 _. ^8 Y
  30.     {
    3 P3 ^! F3 |6 T* S7 S+ Z
  31.        trans[j][i]=a[i][j];
    6 p7 o1 I- l$ ?! F& e  C$ J' ?
  32.     }: b: Z) _& R; U- m; W; Y

  33. 2 V$ X) Y9 M6 i# U+ i. i
  34. /* Displaying the transpose,i.e, Displaying array trans[][]. */3 [, n) R& o7 W# z
  35.     printf("\nTranspose of Matrix:\n");
    ) Y! h* z9 r4 \! P
  36.     for(i=0; i<c; ++i)
    ; z: I/ j6 R. j8 C5 J0 c, Y
  37.     for(j=0; j<r; ++j)  _( r( }3 z6 l$ C+ z
  38.     {" Z9 q5 e1 g- J, ]
  39.         printf("%d  ",trans[i][j]);3 Z  i# `. [/ z. \
  40.         if(j==r-1)" ?% w3 j3 K1 m+ \- K
  41.             printf("\n\n");
    - z( m- s. Q2 H; q0 R" s; _, q
  42.     }
    : b, f- g' g& _& A0 [8 v
  43.     return 0;) z+ b% W* V9 y) `3 z) H
  44. }
复制代码

7 m" V- e+ Y$ y' c8 t; t0 E  }9 \
结果输出:
微信图片_20201022224749.jpg

$ @4 k$ o) a1 [7 w3 D6 m% L: m
赞 收藏 评论0 发布时间:2020-10-22 22:48

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版