鱼C论坛

 找回密码
 立即注册
查看: 13287|回复: 33

C语言必背15个经典程序

[复制链接]
发表于 2014-2-24 07:39:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C 语言必背 15 个经典程序7 E( p/ p: V* Y1 ?* V1 d. @: K5 \8 v
1、/*古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三
6 I# V7 e7 s5 b3 ]# F4 S6 F4 S5 I个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?( {( H6 ~  \5 A% j" ~6 B% Q1 B
兔子的规律为数列 1,1,2,3,5,8,13,21....*/% ?1 q# k: r; f! l6 j7 W6 ?
主要涉及知识点:循环选择的嵌套、输出的格式控制(可转变方式用数组、递归的方式实现)
0 ~5 T5 p. J4 G2 T#include <stdio.h>
. v1 P' M& N7 ^9 W8 Xint main()
( o3 P1 c* i6 [3 N2 q+ F% H+ L4 N{! k: q1 r! E6 M9 B, A
long f1,f2;
. J! Z# F) J; a# {( ]int i;4 u5 x, `" P3 U: t$ {1 e
f1=f2=1;. ^6 R1 W5 B6 l, a0 j9 T
for(i=1;i<=20;i++)
& \4 z; H% c+ {& N  i/ \{
) z' x8 T4 H! @' Uprintf("%12ld %12ld",f1,f2);$ @, e/ }4 f5 D- y( }
if(i%2==0)
; J+ v+ q, S0 q4 {4 [1 j; [printf("\n");/*控制输出,每行四个*/3 c, C$ L% e) u. U4 u2 b) P
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
9 o& W  r6 S1 zf2=f1+f2; /*前两个月加起来赋值给第三个月*/6 P' ^1 h4 E8 D2 Y6 S, V
}
/ k: m5 \: ]/ X8 H4 ]  r% @4 d# `5 ?6 [return 0;- d) t, U8 l, u6 G) @" C
}
5 S2 S/ V! O/ o& R4 ^2、/*输出 9*9 口诀。共 9 行 9 列,i 控制行,j 控制列。*/
) C5 X6 @4 I: V7 W( t/ G主要涉及知识点:循环嵌套、输出的格式控制9 R, C+ G& ~5 {2 J* w
#include <stdio.h>, T! U  F7 i$ C$ J+ F4 ]  @8 v- c* j% w
int main()* V' D. V" B3 ~; |* e" M
{
8 B0 ?9 @+ m+ J3 o& oint i,j,result;
) V% T" D* L9 q# B- `0 a' ofor (i=1;i<10;i++)
. C6 u! H, w$ \! W9 }' L{
7 m/ T* j% s8 w8 Zfor(j=1;j<=i;j++)9 f' n  H2 C4 N; j* E
{
" [- z5 U! @8 B5 }3 u5 I; \3 ?result=i*j;( Q3 G) S9 R  D! k! w9 h- K& i- L" t
printf("%d*%d=%-3d",i,j,result); /*-3d 表示左对齐,占 3 位*/
, S& \- e+ x; x- f) c$ f& N8 z}
4 J" _3 _0 g, @! @8 y0 F2 z6 vprintf("\n"); /*每一行后换行*/' \; M1 K* `/ R, C; z) j' K7 b4 H1 w4 h
}; v) n3 @2 z* b, E7 j; b
return 0;
+ f) m+ G; Y! `5 c- P1 _}( e: `" r! V* y- a: t
3、已知数组 a 中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数
6 P2 D3 O/ t( C0 u2 z% n组 a 中,插入后,数组 a 中的元素仍然由小到大顺序排列*/
7 T  `+ t$ u5 `: U# Z* N0 j7 e主要涉及知识点:一维数组、插入算法、数组元素的移动
/ S) P% Q' L. t+ x3 V$ ^#include <stdio.h>' w1 h) [9 x+ g5 |+ d
int main()
6 T+ U6 H0 m. ^4 e8 t3 O& w4 w9 ?% q{
9 c7 {2 H3 H! e# \9 [  w" Vint a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从 a[1]开始存放数据*/& J( t# t4 d" @3 H$ \) ^" T. B
int x , i, j=6; /*j 为元素个数*/
% P5 P* p+ N5 `8 G& e' ~printf("Enter a number: ");
1 c, i+ w* c2 u: y+ W5 X, _scanf("%d",&x);
1 N/ h. g' r- sa[0]=x;
6 A$ q: x; t. S6 m* ti=j; /*从最后一个单元开始*/
! D$ V) v' i. D( ~% i# Pwhile(a[i]>x)
, H. e  w# f: ?) n{( E3 x7 ]5 E+ J2 V
a[i+1]=a[i];
( S; C. U" y. B7 D  x5 r# W6 d; Si--;. \. m8 G# G( h2 T) u4 Z/ d
} /*将比 x 大的数往后移动一个位置*/. k  T) k* v" f% ^+ Q
a[++i]=x;' S; }8 f4 @: w# I3 X+ j
j++; /*插入 x 后元素总个数增加*/
7 f( E3 G! C3 N" t- p9 I; |for(i=1;i<=j;i++)
$ v; u/ K- {; @4 Rprintf("%8d",a[i]);
* z6 J* W7 n7 j  Zprintf("\n");% y* n, y8 P9 m: ]- Y
return 0;
6 y5 G0 c* A% }9 f8 O7 K* x}
4 ]; W/ F9 X  n+ J4、/*下面程序的功能是将一个 4×4 的数组进行逆时针旋转 90 度后输出,要求原始数组的
8 g/ d: F- q8 M- L6 v数据随机输入,新数组以 4 行 4 列的方式输出。*/0 W/ b# P2 x' ]! Z5 j* U
主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
# f0 b, p7 M4 _# y$ P2 X#include <stdio.h>
7 r/ C4 e* r/ e" ?) Yint main()
& ~8 O; n* y: ]% @, z0 |1 K{7 _: ^# t! L' I5 m: N' \6 _
int a[4][4],b[4][4],i,j; /*a 存放原始数组数据,b 存放旋转后数组数据*/% l8 d4 m% _6 l1 w  v
printf("input 16 numbers: ");
. r  j& A# A% J% q5 E- S/*输入一组数据存放到数组 a 中,然后旋转存放到 b 数组中*/& c$ A" ]1 M  u9 F; N
for(i=0;i<4;i++): o; t! k: j* \: D. ^, z6 j9 t" y
{( F7 ]# g" F8 ^' O8 V: Z  R, E* |
for(j=0;j<4;j++)
# j- K% e0 X* c' l8 E: g{
( V9 X# j4 |3 R  Z* ~1 V; Escanf("%d",&a[i][j]);% x4 M% G) K& q
printf("%6d",a[i][j]);
/ l+ J- \5 `" F* k& z6 ]b[3-j][i]=a[i][j];' R* @0 ^8 j7 g
}
- ]/ b) x) s2 y  o" g/ hprintf("\n");/ D1 P8 r- O& O  m
}
" i) a* _  P. k$ L) Q( b! eprintf("array b:\n");
+ F5 G" O  P6 {' v- @; s* U* H% cfor(i=0;i<4;i++)+ E. w, A, v% |8 Q0 y: S/ z, i
{- z% M3 c) [( j% V; V0 S+ j
for(j=0;j<4;j++). u: `1 \8 V, K- H2 W
printf("%6d",b[i][j]);
9 x6 i2 |6 [7 G& t! w( yprintf("\n");1 n& v: w# K  `* k
}9 [7 G% Y1 D6 i( g( n
return 0;
9 m5 R/ b: K0 U% N* }}
5 y" T3 U4 \" i6 c8 g% }4 u5、/*编程打印直角杨辉三角形*/% h0 }4 q6 m& {5 _- S1 Y
主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
4 R2 s) Q% z& d; s. j) B#include <stdio.h>
1 B* W3 r; C" a% M+ Mint main()! }& z8 g& ^, p" Q" H
{
& j  i# T% d5 L; ~; pint i,j,a[6][6];# P" e8 L7 g5 Y& x
for(i=0;i<=5;i++)* y* m2 d( e/ d. ^  w3 F
{
2 ]+ |4 O; m' O* ?a[i][i]=1;
+ ~& o* [4 }8 m% |" _$ S6 d/ d( ja[i][0]=1;
8 A3 S* K# `. W$ O8 ?8 `}: V' a: W3 K% c8 ?7 }- q
for(i=2;i<=5;i++)3 _- \5 `. ?+ s8 I" l* v
for(j=1;j<=i-1;j++)
/ l( M* i6 L& l0 |* T* M7 Ya[i][j]=a[i-1][j]+a[i-1][j-1];, i1 M, y. h8 J# V: v7 f
for(i=0;i<=5;i++)# L6 @: x, H( @
{4 U5 y5 P. V) u& m2 i
for(j=0;j<=i;j++)
( W0 k+ X5 z& Xprintf("%4d",a[i][j]);
) Z7 E5 W5 {5 W3 s$ M4 ]0 i* Q( @4 ^printf("\n");7 h* C9 w& G. u3 k. e' j
}
. W! m8 w  c5 I+ |2 treturn 0;
, q7 ]9 D  Y3 s* Q2 ]& h6 T}
* c. q; U: O! ^  j9 B2 z6、/*通过键盘输入 3 名学生 4 门课程的成绩,分别求每个学生的平均成绩和每门课程的平
0 T" d3 d; |4 h6 h  ~- ~* y均成绩。要求所有成绩均放入一个 4 行 5 列的数组中,输入时同一人数据间用空格,不同人
" r# ]# Q" n/ m( ?& d用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总8 L7 T, Y  X5 h+ c  q- ?  E) Z: o4 i
平均分。*/* ?4 o9 C, T# w; y4 I) I- X
主要涉及知识点:二维数组的输入输出,及相应的处理% |0 W6 R' ~  V& f( y5 q
#include <stdio.h>
: l; i# \, z& c9 I#include <stdlib.h>
2 v* E# W' f; L+ Dint main()- b. _+ X) O; t9 V4 s6 c
{
0 O" Z  R  D( f; kfloat a[4][5],sum1,sum2;( Y6 z# A6 P' y) W9 T8 W
int i,j;
* C8 M& I) K8 F' p4 d% ifor(i=0;i<3;i++)
1 I4 H; W" S2 @" {; ?for(j=0;j<4;j++)
4 @+ H& G2 N. Z* ^4 ascanf("%f",&a[i][j]);
: I0 O3 u5 h2 H, ], h1 kfor(i=0;i<3;i++)% X$ S5 v' S  [# n' U
{+ T0 r+ m" I3 @2 Q
sum1=0;
; {  d; y) E" G/ p" Yfor(j=0;j<4;j++)7 G3 j! r3 R9 P  l
sum1+=a[i][j];
5 i/ ^# f* a; s: ^" pa[i][4]=sum1/4;
  l( {6 W( T& X, |' o& F! d6 q}
# }- t4 t4 s( `! _for(j=0;j<5;j++)6 k! V( B. E3 e# m8 S% h! s
{/ w2 o* S) T  R% C' m. c
sum2=0;9 x9 X4 W/ C* e  l! D0 k% ~
for(i=0;i<3;i++)
0 b7 W) r: `6 _2 H4 O( [0 esum2+=a[i][j];5 ?+ K+ L& p% W- f
a[3][j]=sum2/3;7 O6 u  X5 z) F- C8 F! B
}
- R. r% s3 U, z, ]( g4 u$ Rfor(i=0;i<4;i++)& x# F8 H* w) N+ P' \
{3 x. @! }( F- L- e% O
for(j=0;j<5;j++)+ @7 ~2 v3 r. F, \' H4 B3 K2 S* h
printf("%6.2f",a[i][j]);/ `& Z& Z. H3 Y! h$ r: [4 Q0 t
printf("\n");. z$ v$ S. J8 m0 N
}
8 V- @" t; a" ~return 0;
2 j! @3 A. l5 U! t0 z2 z: s# s. J}
/ V$ r) g; H% f/ E3 ^3 |( T7、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全. F  j1 x) z) t  A3 ~" R, w1 y7 s# t
相同的字符串。*/5 h) y1 x% P* B. m
主要涉及知识点:字符数组的输入输出,及相应的处理
, N' ]$ E6 C* Z6 Y/ [#include <stdio.h>. |8 v+ r& q, o
#include <string.h>* Q" z# L9 A  w: A) Q
int main()+ S2 ^4 e4 c( P0 G
{  V+ [  X* N$ u- t  K. K/ H
char s[100];  m( B& T8 E' e. K: t
int i,j,n;
9 e& ]" r) j$ O2 sprintf("输入字符串:\n");( s' e9 ]0 y9 A) J3 F* Z
gets(s);
. Q7 Q0 e4 ~0 b' q: E7 vn=strlen(s);
& a2 v; W! h$ F6 t- u* s1 J( tfor(i=0,j=n-1;i<j;i++,j--)
  e+ D' w1 K; X$ x0 N' ]if(s[i]!=s[j]) break;1 a) L8 z0 g: e) e+ ^& t& W
if(i>=j) printf("是回文串\n");; X& z. b6 P+ \7 S+ Q1 R6 y# {6 a
else printf("不是回文串\n");
( _2 R% o8 h: v% d& t3 mreturn 0;/ R* q% q# d- S! ^
}* O# t" }; c) c* ^; V' g- A
8、/*下面程序的功能是从字符数组 a 中删除存放在其中的字符 c。*/8 @- D1 S& p, `3 G: a
主要涉及知识点:字符数组的输入输出,及相应的处理% T% c2 ]2 f  E8 w
#include <stdio.h>8 d+ f' v6 g  Q1 w0 K
int main()3 k6 q. U, o2 V- |
{
& Z1 b+ U# _' K  f& L8 Vchar s[80],c;1 Y! E; }6 D: r
int j,k;, O, l* {% l+ ~6 _' ?8 @7 u
printf("\nEnter a string: ");5 @/ v4 |$ x& `) k& @7 w8 f
gets(s);" O- d6 z; e$ ]! p$ \! f1 }) V4 m
printf("\nEnter a character: ");
. }, f( h8 v* `  w% }5 @c=getchar( );  |  g( ^  n& w( O  W$ J
for(j=k=0;s[j]!= '\0';j++)
! n. ]# Z$ B- D+ |% R# @9 }if(s[j]!=c)
/ ]$ J1 R4 L) e- n5 ps[k++]=s[j];, c9 F' S) i  t
s[k]= '\0';
4 c% k& S; h+ k. W& kprintf("\n%s",s);
, _3 o. K9 R3 J# Jreturn 0;
. n: x7 [4 M% R* b}. ]2 J% ^5 b6 b, k' b9 V
9、/*完善程序,实现将输入的字符串反序输出,如输入 windows 输出 swodniw。*/
, w+ I! q$ f" d( Q  @+ r主要涉及知识点:字符串的输入输出、字符串处理函数、指针的用法、文件相关操作5 x& u% y6 x2 {9 I! ~! d
#include <stdio.h>% a' w' _! r; n2 I! S, `) H1 n& @
#include <string.h>
& o0 X* @0 k0 n2 j/ t  Iint main()
8 E: `5 C% E6 U0 g6 U% e% x{
, W# O8 ?/ l( H* kchar c[200],c1;( m* L# P- k: E! F& s  x9 h0 K6 u
int i,j,k;
  U( L7 D5 Z; ~5 }9 N9 p, Aprintf("Enter a string: ");
7 b. a2 _9 a/ y7 b) J- k3 [! s7 Ascanf("%s",c);
. E8 r" I- H- V. dk=strlen(c);
3 t) Q- j( `! G% X* |7 w& ifor (i=0,j=k-1;i<k/2;i++,j--)
+ j+ \3 ]8 K9 s- \/ a$ P+ y- n$ E( r{! U5 f: f6 |9 A; ~
c1=c[i];
& P0 K0 Y4 S1 ?, Wc[i]=c[j];
+ H  Z+ i; j/ w: f' Z! [7 F6 fc[j]=c1;( Q3 Z8 Z$ g; J" p8 z9 ~
}
1 `; m+ D8 k  R8 A* s3 I1 `printf("%s\n",c);$ n! n( r" W& w; m9 K& y# Y
return 0;
+ W9 J/ Y3 L8 E5 x' |}4 h& y8 F: @; _7 D; U
指针法、文件相关:
4 |# C! L) H7 K6 f( k/ Y5 a7 t#include <stdio.h>
, y) f: p# E: W! I) Ivoid invert(char *s)8 ]2 g7 E0 m, h; f( O, R- u' |5 C+ f
{
7 _& ~4 Q' M; N+ _int i,j,k;; h$ e/ E. q/ p# ?/ w0 b7 q! C! c
char t;
& w2 Q2 x" e% ~* r* x2 e2 Gk=strlen(s);: \& `0 M* ?! W
for(i=0,j=k-1;i<k/2;i++,j--)0 \1 D, K0 {) X2 b" i/ L
{
0 i: s- s) ]* }) S9 a4 A9 p9 s( Ot=*(s+i);2 m3 h) P9 b) a# T# ^  v# Z6 o& l
*(s+i)=*(s+j);( @3 i7 y4 ]/ ~& D1 D
*(s+j)=t;
# O2 z; Z2 m9 L* e( r: _}
! |$ k6 i) y' t' a0 i" \1 r* Z( U! ?}# r8 w) F# Q" N( p2 W
int main(). j: |! Q! ]% p& W
{
1 t) y% u+ t+ d+ k- n9 o) [$ l) V8 RFILE *fp;
6 s$ ~+ z9 x: P% h! bchar str[200],*p,i,j;
/ Q- e# L) k+ x  Sif((fp=fopen("p9_2.out","w"))==NULL)
, O7 j$ E( t' e8 O+ |7 d+ A: l* I. J{
+ c/ ^4 _7 R/ W+ D9 V, Dprintf("cannot open the file\n");
5 r) \0 z/ ?* f1 p: Zexit(0);+ w& Y' b( s  X) z' F: z5 C; t
}2 T  J2 U" Q+ D' W& \8 e/ D
printf("input str:\n");
! h6 g. X- b+ N* e5 p% U# Ygets(str);
& g$ |2 J9 a. eprintf("\n%s",str);! x5 }% i6 w; A) Q7 m! f( L0 T
fprintf(fp,"%s",str);
; {( G% g! I! Y& |! i3 [invert(str);3 y, I' j% K% N0 {: n( s
printf("\n%s",str);
  K* ?9 g4 v* _( R8 P! jfprintf(fp,"\n%s",str);
, c* j3 t: W/ e7 U/ E8 U8 \fclose(fp);
1 m3 X* H2 J  d4 h  zreturn 0;
# z* `9 _& w$ i$ c" N: ~7 X}
& i- h' a! `5 n10、编写函数 countpi,利用公式
, c# u: s' e" Z# [  e&#61516;
# N/ n+ M7 V) k/ Y5 J&#61483;8 K  |8 R6 Q( t* ?  i! @% R/ C3 N
&#61620;, k1 X. t5 q$ z; V* u6 \2 E
&#61620;4 q  D6 E  x7 ~; h
&#61620;
+ D' r& d8 V  i3 ]+ s1 D+ R" B&#61483;; a$ [" I1 F. T- ]+ _! ^1 l' R4 I) ^
&#61620;
, l% S( o1 J0 }: F&#61620;
) X$ p. ^$ l3 Q/ N! C3 j&#61483;
3 k4 y6 n* k2 u3 ~&#61620;# j) A$ X( `8 Z# o5 c+ ~. g
&#61483;
8 M, c- Q, U; I! H&#61483;
6 L# s& c; Z' ?: F- B& q% n&#61627;
0 S; J9 e! `0 e( z: @) H9
9 M( r2 y; `' q4
5 b9 A' x% ?  q( C76 }: ~: r! b- q
30 d, i& V( G% N! e" Z5 J
56 Q5 a9 `) L) V- U
2
! b8 |# r+ G: f0 V3% \1 v1 `( d/ E  N. ~1 M! Y7 G2 E( v
1) r6 _' S+ D$ y- V6 F* h; f4 `  l
7
9 g/ i$ j" ]% w2 R* I1 f" g33 e$ J! ]1 W& n0 {& q5 |* T/ J- F
5
8 j2 S# C/ h# g" T$ ]/ ]2# C8 M0 B/ n# z0 M* Z0 I- i/ k
3, n: ?# b( I: g% t
19 H) v9 G2 c0 [. n! D* }
5
; `, g: E8 _" l, ?* u2
( O5 w  [5 Y! B4 |9 O) M! r3
( C  D) U% {1 B. R8 m" ^5 Q; }1
" I% K: t& f" v. F/ \" B3 R3
2 l# w$ A/ q2 F, |1+ T+ P, N) h1 f  g/ E
1
, p' s. V2 ?  W, G, c* L/ D2
' I" h- R' B' s8 ]5 }. i  e# f, M&#61552;
+ @5 F. l4 D( m* }计算π 的近似值,当某一项的值小于 10-5 时,认为达到精度要求,请完善函数。将结果显6 ~0 y. j7 V" G) r2 h
示在屏幕上并输出到文件 p7_3.out 中。
$ b0 s: ~$ q. u6 Y' G主要涉及知识点:函数、实数的比较、相关公式用程序实现的技巧、文件的操作% b4 ]; b7 }% B% w- j" I
#include<stdio.h>2 X% Z* B2 U% `8 x; W+ ~
double countpi(double eps) /*eps 为允许误差*/3 Y0 w4 d6 ~* a' t# ?+ t! v
{
# D3 Q+ w& D$ U+ t, L" yint m=1;
, T: q5 D! H5 R# j  Edouble temp=1.0,s=0;
8 B' ~$ d6 ?. ?$ P; }while(temp>=eps)
5 h, q/ Q2 M; A1 z% u6 t, g% \{7 Y: ?/ ~+ k" ~/ V: L
s+=temp;
! D" P5 g  p, B. Ktemp=temp*m/(2*m+1);, d% j" p) A8 X2 o5 ~
m++;+ a  ]0 Y0 D' {3 _" F( d6 Z
}  g+ R+ N( d; C0 K% x4 x
return(2*s);8 e; [  D7 E$ a
}
" i6 i- z6 ~8 l. `6 U; `! Pint main()
6 s1 g  [, C) S/ \( z: I6 K5 F{
2 j9 v6 Y. B9 v% x6 qFILE *fp;
7 j1 p8 e0 x5 \/ x3 }. s& {0 X7 ldouble eps=1e-5,pi;
, ]) h4 v2 P' G: p7 K3 V) h6 Y+ nif((fp=fopen("p7_3.out","w"))==NULL)
7 X6 b$ \, o# ]. ^% W, q) b; s! H{
# K* M% A* n! q6 J4 wprintf("cannot open the file\n");
6 j& O) s5 j/ W$ I1 Nexit(0);
" V8 I7 d* ^5 C}; m: l8 j9 ~: _) m) K9 x6 ^  x% f, x- [
pi= countpi(eps);" q" ^- `* A  c4 w
printf("pi=%lf\n",pi);
3 g; y2 G8 v. m) E% t4 j5 K5 \fprintf(fp,"pi=%lf\n",pi);! b9 e$ Q: {7 F. y
fclose(fp);
1 P  R# w/ L0 Creturn 0;
3 v) k3 L! F+ G}
' t# X" `) T& b. Q) n11、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件 myf2.out*/
: E/ G! k1 x4 q主要涉及知识点:函数、排序算法、循环嵌套、文件相关操作
  w) Y5 s, {. F( f: [* q#include<stdio.h>9 Y& e4 c+ V3 `" ~' t2 F
void fun(int a[],int n)
- N& t! P- v# a: I! b- c{0 L, R' b- p6 V9 c+ J
int i,j,t;
6 `( E4 B# h& ?for(i=0;i<=n-1;i++)
; t, \  ?0 ^' o7 d' N1 f/ Xfor(j=0;j<n-i;j++)
' B" e8 |4 u& N6 a/ Xif(a[j]>a[j+1])' G3 f0 L* X" v# r6 G( N
{
% Y" A* p) k# R: k, at=a[j];
9 t4 x2 _" C; x, Ca[j]=a[j+1];
/ F6 }" Z: V0 K( v. q3 ua[j+1]=t;) L5 f  E1 U' L9 B: @
}- ^+ q- |8 G. C/ r: `9 k  Q
}
+ O5 ]/ X. ~& @+ vint main()1 x4 V9 U1 G* Z7 v) T* H
{6 f! S8 j" F( {9 u; T  d
int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;
: U0 f8 F* ^! ^4 H0 s. x1 p7 ZFILE *f;
  `. `1 _* V8 Yif((f=fopen("myf2.out","w"))==NULL)% M* \, U& A* U3 B, w/ Q6 L
printf("open file myf2.out failed!\n");& [( m0 @+ Z' V4 I4 O; H( I
fun(a,10);0 b2 ?; B: b8 P7 [/ L
for(i=0;i<10;i++)
3 A2 O% V9 w& W- q+ J8 g' d{: ?4 T1 h8 c  t8 I6 t  n
printf("%4d",a[i]);7 @& ^2 ^# ]1 Y' L
fprintf(f,"%4d",a[i]);
( M) x  A; {$ S6 {+ u}3 E/ c5 Q4 Q/ D' j( ^6 n/ j3 g
printf("\n");
9 a& \& y% L6 P  Mfclose(f);
. g: C# T) Z+ |- A# o: Ireturn 0;3 p- I; Q1 x- u
}
4 H! Y, {) G# ^% X12、/*在一个字串 s1 中查找一子串 s2,若存在则返回子串在主串中的起始位置
8 i0 O- Q* {% r! t  i# m,不存在则返回-1。*/4 t: D! D4 }  f+ }, m
主要涉及知识点:字符数组、查找算法、字符串处理函数
2 ~% Y# z! |- a/ T0 B2 v& @. s+ R#include<stdio.h>) W! k+ b' L7 X  s* g% K8 F( a
#include <string.h>* x% V5 Z. z: B! {
int search(char s1[],char s2[])
( J1 u! f# d" Y% T( v% h' m{
4 v& U, A+ @  N: x/ I: H( g- iint i=0,j,len=strlen(s2);
8 ^4 ^4 {) B* v  ywhile(s1[i])' X* F9 [) A# r0 q
{
4 B- y$ H7 B8 O' n3 }6 sfor(j=0;j<len;j++)
9 w: U& u) b! \' Yif(s1[i+j]!=s2[j]) break;! w* Q* x( m: N- Q% D
if(j>=len) return i;+ B& F% Z3 M! R3 d$ q, [, E3 w) f, X
else i++;; ]; M+ k- \& X; B
}2 q: t6 o0 J3 Z3 Z6 m6 h5 ~3 @- j8 r4 C
return -1;1 G% o' r9 y8 K: `' Q& m
}. G+ y$ |7 L* W# k/ `
int main()
4 X$ @( u' S3 Q. _3 H{5 y+ J6 ~& ?4 T1 w" a$ P
char s1[6]="thisis";9 k9 [' I3 @: a- b- a6 p, I/ H
char s2[5]="is";
7 H: P0 ^6 N+ m9 F; Fprintf("%d\n",search(s1,s2));
5 W' ]7 }4 P3 Csystem("pause");: x5 @/ m3 k; _
return 0;: K) \6 M1 y+ r: A* y# q
}
' i+ C! Z' K" H& V' W. f13、/*编写函数 replace(char *s,char c1,char c2)实现将 s 所指向的字符串中所有字符 c1 用 c2
2 t( f& q& r: A替换,字符串、字符 c1 和 c2 均在主函数中输入,将原始字符串和替换后的字符串显示在屏
, X$ b# v4 k8 v/ D幕上,并输出到文件 p10_2.out 中*/
' ^% f- {: X& U( A1 @主要涉及知识点:替换算法、函数、字符数组、文件操作
! f8 D2 B3 Q9 ?0 p8 @* S( R#include<stdio.h>0 _3 {* B- I, j. p5 F' B
replace(char *s,char c1,char c2)
7 [) I, t: ~& N' d. U4 g{! U, E' E& w' G* N$ W" l
while(*s!='\0')9 \* ?# @; z& |, W- a6 e& `6 C
{
6 F* R7 s4 w2 I5 \4 ?+ Zif (*s==c1)0 @8 Y* z# F6 @# p
*s=c2;- W+ w' _6 w, F2 u
s++;
: X5 z5 m$ p+ [4 J* _. A}/ |% }) X' y7 {; d1 H1 G
}% }6 d- w+ m2 N* a" t5 m, w1 n5 e
int main()! ^9 ?! Z/ r& D* e0 C4 c- `+ r6 r& r+ z
{
; _. n& \. D* u/ J4 h1 AFILE *fp;
: Z% k( X6 A8 l; i; cchar str[100],a,b;3 j5 C7 }) S3 M
if((fp=fopen("p10_2.out","w"))==NULL)) w9 s# R7 i: c" i. n
{
8 ?; X5 X) k) mprintf("cannot open the file\n");% j: Z( c' T8 M7 Q
exit(0);
# s) E1 I4 ~/ c. X/ P  w+ A5 f" P}
2 J. K4 D9 W" }) Z7 q. wprintf("Enter a string:\n");
1 a% u7 g: C/ q* o; hgets(str);
* f! X) F. j5 \7 a. D1 Nprintf("Enter a&&b:\n");
5 \, i$ U5 C2 Fscanf("%c %c",&a,&b);) o, W" n$ K; ~+ T9 r
printf("%s\n",str);: j. H. n$ X8 o
fprintf(fp,"%s\n",str);
4 p+ V; \+ P2 Z7 `# t% o# v' \replace(str,a,b);# X, v' m$ M  x* G- `
printf("The new string is----%s\n",str);
- s# p1 {; o; ^$ t4 [3 E& efprintf(fp,"The new string is----%s\n",str);; q2 n! c; t$ C4 V& b% Q& J" L
fclose(fp);$ K* [5 q8 }1 E, o: e
return 0;
5 j$ D( Q- }, i}
0 |( S: }8 r: [, Z5 @, l14、/*用指针变量输出结构体数组元素。*/
3 V* m. }% t5 x& K, ]主要涉及知识点:指针与结构体、结构体数组的赋值、输出
, K* S' s# v  @- e" C#include <stdio.h>
3 O8 K) d7 e/ T0 I5 j8 ustruct student
% {8 g5 i8 a) `{
# ?! x1 |5 T  }5 c$ t0 _int num;
4 h( X9 B! a4 f1 B9 [! P' {: N8 `char *name;
% Y4 e, g; T+ ]/ y8 Zchar sex;; g# Z2 Q8 ]( S; s
int age;
; `" k) i' g! A( f9 A' G- l}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou
  @8 t: k( n! A4 n: D. D* D",'F',19},{1005,"Wangming",'M',18}};' J5 F$ i: q5 s+ }
int main()
  x+ _7 n5 K- j$ _{' g$ O% h% g3 d& g6 A% F8 l
int i;
! e' L% b$ o+ D$ a3 s4 Tstruct student *ps;. C3 t- y, Z8 R9 P/ X8 u6 B
printf("Num \tName\t\t\tSex\tAge\t\n");% J; K6 w5 L) s
/*用指针变量输出结构体数组元素。*/# |- F% {3 M3 P( M$ t+ l
for(ps=stu;ps<stu+5;ps++)* {  U7 m$ n; w" Z
printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);5 D+ v/ p" o- u4 }
/*用数组下标法输出结构体数组元素学号和年龄。*/4 G* ^2 e/ B) V/ k
for(i=0;i<5;i++)
* K+ ^* T( k( y/ \4 Uprintf("%d\t%d\t\n",stu[i].num,stu[i].age);: o$ X8 @# _. ]8 t$ \6 ^
return 0;
' j# j( z$ `4 [" J+ r}
0 O* T7 S! J+ l) B! i0 M15、/*建立一个有三个结点的简单链表:*/
( A  p; g& c/ r# c  @主要涉及知识点:结构体、链表相关操作4 `2 _: b. t3 j
#include <stdio.h>
9 x; x. V! [! h5 v3 L' ~#define NULL 0$ X6 o: m! w% N) g4 w7 B4 |# M
struct student7 I+ S$ J% c" w1 R* b3 _9 @0 z
{
. T% I0 ?+ I, N3 r$ j2 n: |int num;
8 @* E7 E9 B) j2 n: Achar *name;
$ L4 M- ?% Z! Yint age;5 C4 l1 d9 C4 g; a
struct student *next;: s6 O  S5 d$ a' ]' t5 j$ s( ~* H% Q: ~
};) t' W/ a! v3 @5 ~0 e" n7 i( e+ G! K
int main()
5 q  h4 V0 L8 l$ H- z. s{: d9 ?- i* l+ a7 B3 U
struct student a,b,c,*head,*p;
; m5 N: N( y/ [* C) Na.num=1001; a.name="lihua"; a.age=18; /* 对结点成员进行赋值 */* Y5 h' {0 R: j+ C. J8 j, r- i
b.num=1002; b.name="liuxing"; b.age=19;5 x+ m; M. C7 `9 @7 D5 F
c.num=1003; c.name="huangke"; c.age=18;; L# t5 T5 L: b* ]5 c; K
head=&a; /* 建立链表,a 为头结点 */
# s3 [: P3 t  g+ R2 Ja.next=&b;
) }  f0 F7 l' u: {; Tb.next=&c;. A. S9 J. Y# f! b
c.next=NULL;( b$ I' k, b' ]8 e: Y. n
p=head; /* 输出链表 */6 i1 V9 J+ s* _+ }* u" ~
do{
  C( Z) r: J  w% I3 T% M  Eprintf("%5d,%s,%3d\n",p->num,p->name,p->age);" M1 U# Z, ?( w& \' \
p=p->next;
3 [0 E( r6 S' u}while(p!=NULL);
7 S* s- P2 A: T$ `. `return 0;
3 N/ b: s  X7 P7 r. S$ o) a9 g; ?}/ l3 l: i: g* p
: t3 c9 k0 Q% [- Q& M0 j6 m
4 k+ }; Z# c( `2 @

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +1 收起 理由
冬阳阳 + 2 + 2 + 1

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-2-24 07:40:18 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-24 10:44:24 | 显示全部楼层
顶顶顶~~~~~~~~。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-24 13:07:40 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-26 17:47:57 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-3-25 23:22:44 | 显示全部楼层
看出来了,想编好的程序,是需要看很多优秀的程序啊!才明白!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-2 17:36:48 | 显示全部楼层
真是被感动的痛哭流涕……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-5-11 17:11:56 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-17 21:42:35 | 显示全部楼层
真心不错,如果读书的时候能找到这么好的源码就不会不去学C了,感谢分享,感谢鱼C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-7-21 06:26:21 | 显示全部楼层
不算是经典吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-8 01:22:54 | 显示全部楼层
够经典了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-13 12:26:25 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-23 13:37:08 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-9-11 21:58:58 | 显示全部楼层
强烈支持楼主ing……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-2 13:44:22 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-13 10:33:30 | 显示全部楼层
真是难得给力的帖子啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-7 03:50:05 | 显示全部楼层
好贴 果断mark
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-7 12:06:04 | 显示全部楼层
我顺道复制带走了,谢谢哈哈!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-15 22:16:48 | 显示全部楼层
强烈支持楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-28 12:35:15 | 显示全部楼层
看看{:1_1:}:ton::shy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 08:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表