鱼C论坛

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

C语言必背15个经典程序

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

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

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

x
C 语言必背 15 个经典程序
6 K3 Q8 c" J" R4 B  x* d6 z3 J1、/*古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三
' E  o# K3 E5 _! C6 g+ s  M个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
; c: X2 h, y' e兔子的规律为数列 1,1,2,3,5,8,13,21....*/
: |, {  a8 D) ?1 q9 D主要涉及知识点:循环选择的嵌套、输出的格式控制(可转变方式用数组、递归的方式实现)
: ?: v/ y5 ?% _+ E7 M" \' g#include <stdio.h>2 j- l0 @. ~' M
int main()
+ @! T, d3 l# i! y$ ^! X6 `{
' c- L3 M+ V$ p' blong f1,f2;# {5 _! @& j3 E" S5 X1 n9 [
int i;% q: _( B- O3 G3 v+ L
f1=f2=1;' ^1 G0 y# c2 \& o5 r( O
for(i=1;i<=20;i++)
& z! ]' ~/ ~: N; F' ?{
- f  R' N# }6 Z3 D3 ~printf("%12ld %12ld",f1,f2);
$ K* d! P  O5 h( d2 \2 _if(i%2==0)
6 J  {7 x1 `  b$ b: @printf("\n");/*控制输出,每行四个*/6 t9 l5 `9 v" q9 o; C
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
3 {3 V  ]6 x' Y- K5 x: {/ [f2=f1+f2; /*前两个月加起来赋值给第三个月*/1 P! e, S5 n# r9 `. P0 G8 ^6 O& F/ p
}  l% p7 W; n7 B: l
return 0;
) e$ X9 m  t8 ^* j1 L% V6 y}8 E8 v+ F$ O! A4 |
2、/*输出 9*9 口诀。共 9 行 9 列,i 控制行,j 控制列。*/
; y/ e; [4 Q* t! I% r+ f主要涉及知识点:循环嵌套、输出的格式控制
$ q  x7 v+ Y" I6 P* ~#include <stdio.h>
: j7 s" @7 _' g9 Gint main()
/ ?* w3 P) A2 R9 |: ?- D1 ^$ X7 }{4 w% K. U0 v+ b$ P
int i,j,result;
  e% w& |8 Z) K: R5 @7 V! hfor (i=1;i<10;i++): g% U9 U% K/ U/ R
{
: |7 R9 N5 f- _8 @; u, f: k% J9 X, cfor(j=1;j<=i;j++)
% ~) D: I, k$ P5 m3 t, k{
' _) m1 a  L, ]7 M/ m5 vresult=i*j;% ^+ i" s0 Q, N  P
printf("%d*%d=%-3d",i,j,result); /*-3d 表示左对齐,占 3 位*/
3 d; k1 Q  |3 Z/ k}" ?$ y* o, S& K1 z+ {- Z
printf("\n"); /*每一行后换行*/
0 K% ^( S. S  Y% T; G! f}) R; `$ B7 k& n0 z
return 0;! D5 _% A( g& p' h3 }6 ?3 u
}
  y+ S4 Q/ T* J9 d% I8 Q3、已知数组 a 中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数
3 }4 j9 u* i' b3 I! E1 L组 a 中,插入后,数组 a 中的元素仍然由小到大顺序排列*/. ?4 d' j9 v+ ?: Y0 u7 X. M
主要涉及知识点:一维数组、插入算法、数组元素的移动- ]- g& k+ d) C& E: }  S, @
#include <stdio.h>* z% f6 i' F9 y' ^0 ?8 m. B7 [; |
int main()
( r+ X# D( D/ `+ M: p- @. k{
# \* J7 q6 Q$ u) gint a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从 a[1]开始存放数据*/
9 @) D5 u9 d( Y1 Y0 V6 @  Hint x , i, j=6; /*j 为元素个数*/
  Y8 J! C/ b' U+ t, ?: Hprintf("Enter a number: ");
9 \* e) H, s- S) N8 p5 iscanf("%d",&x);
. w2 g( }6 k# {4 Ya[0]=x;+ p: P4 G: `7 N* ?' M, @
i=j; /*从最后一个单元开始*/
# K1 f! U# `8 a, d; L. z7 A( bwhile(a[i]>x)
' z, v. q0 p9 u2 ~5 k* w{
% r4 C2 ?  H4 A& b4 Y8 xa[i+1]=a[i];8 A: v6 ?7 J& i3 ]  N# u' E
i--;
+ f0 @6 ]  v' Z! w: h* t/ q} /*将比 x 大的数往后移动一个位置*/
. f) |6 t0 t8 S% x9 ~- L9 R: Ya[++i]=x;
# c7 N5 [* b! @  Z  Q4 A; R6 jj++; /*插入 x 后元素总个数增加*/
) ?7 u) c" [2 g. r" p0 ^for(i=1;i<=j;i++)
2 B* d- {0 T  i4 I8 I! Fprintf("%8d",a[i]);5 F! a) ]9 [. `7 o# e9 J: G* ?/ O
printf("\n");! f% y0 p$ l/ ~- z7 p
return 0;6 a8 d. P" {3 X8 x9 X' z8 f
}* M, x4 k8 h+ @8 A" U' |9 c5 R
4、/*下面程序的功能是将一个 4×4 的数组进行逆时针旋转 90 度后输出,要求原始数组的
% A4 m: ]5 K" _' O! H1 h2 q数据随机输入,新数组以 4 行 4 列的方式输出。*/
+ K6 x8 f9 ^5 X5 G# V7 ~主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
, i, V/ t5 Q6 p: H. z& }#include <stdio.h>
6 s. e8 W2 D7 J2 y% A* Rint main()
: J7 P& C5 L9 r& K2 i$ y4 N, s{
$ [' C: S7 W9 s2 |+ j# Kint a[4][4],b[4][4],i,j; /*a 存放原始数组数据,b 存放旋转后数组数据*/
0 F" m# _$ w2 Bprintf("input 16 numbers: ");2 K: Y! g% s4 E8 }1 g5 _$ T8 P  }
/*输入一组数据存放到数组 a 中,然后旋转存放到 b 数组中*/) L$ m+ y& e6 f0 p: u
for(i=0;i<4;i++)
0 |! t' j& }( P. i{+ }2 E1 U5 V+ y
for(j=0;j<4;j++)
3 t: H* T0 G% y{4 D+ p# [( y# i3 |
scanf("%d",&a[i][j]);
4 F, m, F/ T) f' y( ]' H* H( K, ]0 Q* Rprintf("%6d",a[i][j]);
. g+ X& x1 M) Q1 _  xb[3-j][i]=a[i][j];. O3 s( s/ u3 z( F( X- Q2 g
}
2 q/ o: N& [+ G- t# Y: Z+ jprintf("\n");5 h; |. w& N  [; T. n, J4 s
}
! R9 b) @, r* q: D! M& gprintf("array b:\n");
" k+ [4 ?4 G& N! T% o! tfor(i=0;i<4;i++)5 R+ G# L2 x$ I, c* S( F
{
6 W: q9 j3 S' s( I2 R5 d5 f0 a) Lfor(j=0;j<4;j++)
0 \, `, u4 T8 r' l% N+ z# M# s' C7 zprintf("%6d",b[i][j]);6 c$ s4 u- ~$ H6 J- U+ W
printf("\n");( s" I0 l2 O3 \, x8 H
}
, t) a- o( J0 h4 x2 S6 N0 i) V/ yreturn 0;! D' y1 e6 u! Q8 h/ E
}
* p+ D& ~* V; |& ~5、/*编程打印直角杨辉三角形*/
/ p9 q4 ~0 p1 w" ?' e* k' R  p主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
! H0 n3 i* }6 ?5 `0 l#include <stdio.h>
+ q+ ?+ o5 g7 K  Yint main()
, |" y3 h. w# k( e{% w7 F$ m8 n6 r! T# g/ g/ M
int i,j,a[6][6];0 K! _: r1 ]) W3 F
for(i=0;i<=5;i++)
. H7 R$ r: |1 r0 Z: z' C5 ?# W{% P( P1 U8 {$ _0 D4 q: l) U
a[i][i]=1;8 d' P4 H3 H# R9 p: M! b. y2 `1 `" y
a[i][0]=1;$ [; x& O( |2 _% m* w
}
4 _9 e" e6 p  t9 T. l4 Y7 H' m' G( z% vfor(i=2;i<=5;i++)6 s5 f+ a2 b2 j1 ~5 G# U5 q
for(j=1;j<=i-1;j++)
8 ?4 I% c4 _) M# M6 R" ca[i][j]=a[i-1][j]+a[i-1][j-1];( }* a3 A: k* a8 m
for(i=0;i<=5;i++)
2 S$ i7 x7 u* U+ X( G0 p+ M{
  V: N' c$ K1 Y8 k; Sfor(j=0;j<=i;j++)
* \5 T) Y8 D# S3 H. ]: B4 Dprintf("%4d",a[i][j]);: d  s$ B  g9 E7 q
printf("\n");
' B" M* F. f2 z' P' ~) B}5 y9 X- Q6 [4 C! \! c7 b8 [9 z0 c2 V
return 0;
" N! m4 a: Y: m' X}
% m9 a/ Q) S7 p/ }" x6、/*通过键盘输入 3 名学生 4 门课程的成绩,分别求每个学生的平均成绩和每门课程的平
2 M% d; [1 d& U& C9 L. `# f' s均成绩。要求所有成绩均放入一个 4 行 5 列的数组中,输入时同一人数据间用空格,不同人& ?6 E  C. P) a* A! T: V% h+ v0 }1 ^( |
用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总
+ [( R  ^, p( ^2 o平均分。*/
0 y4 Z/ C3 d! D# w$ }主要涉及知识点:二维数组的输入输出,及相应的处理
% m$ ~$ p1 k# _5 ~0 E: k#include <stdio.h>2 D+ ]8 y: y/ C
#include <stdlib.h>) ~" K$ y& k9 t$ C4 w
int main()) v3 l+ n$ h5 N7 ]
{3 u, c) u* n$ g# T% [! @2 B0 a6 V
float a[4][5],sum1,sum2;/ Y! u' U. Y* P+ B8 |
int i,j;# x0 t6 r  L+ u
for(i=0;i<3;i++)  k$ W6 g3 t2 @$ F3 w  H# z
for(j=0;j<4;j++)! l. \( s6 B; ^: P+ W- q
scanf("%f",&a[i][j]);7 R& E* T; J! `( p, m" ~) X+ M
for(i=0;i<3;i++)# ?/ L- ^5 k( I% b) d! o0 |9 h  R
{
( J) P4 h! y" Msum1=0;
! n& Y; S, s; `4 `for(j=0;j<4;j++)- r* N: N* B' E
sum1+=a[i][j];
7 T$ t% L  n/ r, a* u  Aa[i][4]=sum1/4;3 |  w" J9 X2 Z2 ?. ^
}
4 m( }- E) b0 \4 o( sfor(j=0;j<5;j++)
+ p1 y7 u. @( G2 ^6 V+ a* s{
5 @3 Y" Z. E5 V; Q0 rsum2=0;+ H( I: O+ b" V+ y8 T( s4 y
for(i=0;i<3;i++)
5 @! `6 u4 a8 [: Usum2+=a[i][j];
( S6 S0 J2 r) X! X4 Ra[3][j]=sum2/3;
2 g7 X  q+ s6 g0 w}
, }0 n+ v" s3 O' l9 `; E# tfor(i=0;i<4;i++)& p& a: R* g/ j$ t# _) E+ K, I2 o
{
5 C9 E8 c& Q7 y& J* d' M( Kfor(j=0;j<5;j++), a$ O/ X5 d( n9 D/ ~
printf("%6.2f",a[i][j]);$ k1 O! l; P5 E& k
printf("\n");$ m3 r* Q9 p& \. }7 h/ Z
}
& F9 T7 |, e5 a+ c; Vreturn 0;( l" S0 E) D5 J' ^! s. u  t
}2 ]$ B8 n" p) Q+ i% z6 X
7、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全
* K7 D( N8 c$ D) L! Q相同的字符串。*/
# p/ u0 i7 C+ d3 F: y" @+ ]主要涉及知识点:字符数组的输入输出,及相应的处理
% B% E4 N- T0 w( w' J9 G#include <stdio.h>! ]1 p3 ~8 [& E3 ?1 {8 P8 ?
#include <string.h>2 n% \$ z9 k7 }  f/ K- }6 M
int main()
) C, N4 m9 |, I4 [' P{
9 r# `# o, h: Pchar s[100];" D% O1 H; Q! k
int i,j,n;
4 ]+ H8 ~8 J* x  v( j7 e+ @8 Lprintf("输入字符串:\n");3 X: {* p. c- [; q! L8 T
gets(s);1 @( K& L' \; d
n=strlen(s);
- r& G5 S7 L: |: x0 l! z2 dfor(i=0,j=n-1;i<j;i++,j--)
4 i" K, ?, K, |$ cif(s[i]!=s[j]) break;
/ z+ u& K, H1 Y  R2 e$ wif(i>=j) printf("是回文串\n");
( \3 V3 p( T; y% Y$ telse printf("不是回文串\n");8 D+ Z! o4 e7 p; L* v
return 0;8 V& M6 [2 M* ~8 n, W
}
5 w, p* W  Z  D# C8、/*下面程序的功能是从字符数组 a 中删除存放在其中的字符 c。*// p/ g0 j( C7 c( x
主要涉及知识点:字符数组的输入输出,及相应的处理7 X3 U- d/ m9 a1 t7 h
#include <stdio.h>6 Q! k1 n. @" [# ?! C7 h
int main()+ N: J+ o& U2 q, I5 N/ E
{" {, q& ^* x6 `% i7 G" L
char s[80],c;) M8 C* V& M" b/ X8 J1 Q* ^; Y0 a
int j,k;
" }! R. L* P# a* H: u7 [5 u1 Kprintf("\nEnter a string: ");5 e) U& Q  d+ p+ P8 m: O+ m
gets(s);2 y( v$ [# R' C* b6 z3 H) P
printf("\nEnter a character: ");( ^* w+ j5 K/ A, d& a7 U+ e
c=getchar( );: _* R  X9 Q- A
for(j=k=0;s[j]!= '\0';j++)
3 p. Q9 u1 `/ A/ U1 _4 y7 ^if(s[j]!=c)
3 ^! I5 _# `# y4 ~; }s[k++]=s[j];3 g- A# O! P& f( x8 m- z
s[k]= '\0';
" d: q$ K& g! U7 ]: j1 H: t9 [printf("\n%s",s);. |1 n2 @& ]3 ]6 l
return 0;
7 R) m0 W4 M0 t% p}) a8 E0 E+ z$ @  @3 f
9、/*完善程序,实现将输入的字符串反序输出,如输入 windows 输出 swodniw。*/
3 g8 f. ?* e' ]- d  r主要涉及知识点:字符串的输入输出、字符串处理函数、指针的用法、文件相关操作
% d% C  t/ x! W1 U0 S" j#include <stdio.h>
) h  H- m: B" H" F9 v! e; T+ G1 V#include <string.h>( E6 y* T+ h& v/ z+ s( o
int main()* N7 c8 |8 S/ Q# y! E& v. c
{& u5 I) p* C4 B6 @# G" U3 s
char c[200],c1;
7 k9 d; c5 N1 w" J# _5 uint i,j,k;
/ X) c+ P5 ?8 ^% mprintf("Enter a string: ");
1 O0 t3 \: _) v9 }scanf("%s",c);' c0 t$ ]0 w" E9 L4 _2 O
k=strlen(c);
7 Q0 u6 y; h  a2 @1 X% `for (i=0,j=k-1;i<k/2;i++,j--)' N/ I" R6 h8 j! B: r9 W$ i  v
{
& I* o- S$ c% O- `& {c1=c[i];
  l1 \  H% ]5 A# x$ K: h' Mc[i]=c[j];
# N5 A1 o# d, {/ c$ H# f$ fc[j]=c1;
: ?6 q/ G' A; K" g+ X5 W}! l/ X; s; e0 T( ?
printf("%s\n",c);. c5 @) D5 D: G) u% m0 k8 r
return 0;
" |$ Q( N. R4 h. V: i( {}- a# x4 n) o" K' Z6 ?
指针法、文件相关:+ }  n+ b7 f- d" k
#include <stdio.h>$ E1 M' K( C0 q, j% d
void invert(char *s)0 y& o3 y. j8 _# s7 @/ E: x) e3 Z! A
{
; ]1 C1 O, U% ~' B$ u; M) Yint i,j,k;. t: Y+ W/ [( F1 D
char t;4 A5 n3 }+ ^2 }: R" @) R# `. z4 R
k=strlen(s);
& F9 K/ g3 n5 `+ B7 q! f" cfor(i=0,j=k-1;i<k/2;i++,j--)2 m% O; }$ M. k, i" e9 C
{" m4 V( u* V- Y; O2 d
t=*(s+i);
9 E  h: `* G) y0 N*(s+i)=*(s+j);* e1 T9 p' P  W$ `- Y2 f' _
*(s+j)=t;  O# s* U+ p1 d+ N' R2 z  G3 C
}
0 j7 B0 ~# A4 g9 @}
% D' c- q$ g8 a& i5 b# B+ Pint main()
, I( D& u5 r0 e2 [. u{: i) H4 Z  I9 o6 p" P* t/ X, g9 O
FILE *fp;7 ?0 v. e  O7 m' Q
char str[200],*p,i,j;
" J7 V: N' t8 a3 X6 d2 ]if((fp=fopen("p9_2.out","w"))==NULL)
* d  P, m% n: E' `# S; r3 n{
" G5 |9 y* @+ G) Rprintf("cannot open the file\n");, Z9 I4 \( A, t1 Q* V4 K
exit(0);: p) J- ~% j& w8 @4 c% U7 }; C
}. D& F" `" e2 d. z
printf("input str:\n");* K* S. l5 V( r- W1 d% @2 D
gets(str);7 X& |; X& X9 @) O
printf("\n%s",str);
# g/ q" D! o5 vfprintf(fp,"%s",str);
' H/ c4 [/ V- t6 n- Ainvert(str);
; K: G& B6 A- A# ?3 \* ~1 A( wprintf("\n%s",str);
! y0 V( s# c! v" I3 y- O* x9 w  _fprintf(fp,"\n%s",str);
+ m" O! P& A4 W' r3 [6 gfclose(fp);" G# N# ?  i  O
return 0;4 f( w/ H( l3 c0 F8 J
}* O6 e* Z+ S% ?) G0 i* ?
10、编写函数 countpi,利用公式1 G7 J" r- ?; Z; E5 n9 l9 G
&#61516;
( a* j' A* G. e- X" p4 J. `&#61483;
7 c  o  @' s! G3 a&#61620;8 r. e, l. X% \! C  j( [6 n
&#61620;
4 @9 M/ B8 k, b* `7 g8 D&#61620;) e$ @  N% o3 o) z& c8 k6 U
&#61483;
* l7 y& I; I0 l4 w9 V&#61620;
/ ?0 H( R1 E$ N1 O+ f- ~&#61620;" }( z$ |0 Y) _+ w
&#61483;0 ?$ `% ^# g* k" h# d* k, D2 _
&#61620;. e8 V7 n! v( ?/ u$ U
&#61483;2 x* F; t; k; F' c
&#61483;: h3 }( D5 X: }' r6 R
&#61627;! m* `* {9 J5 d( M
94 E3 w1 [! }" P7 a
4
' n+ m4 d! h* q7 R. @& i# J7
' ?- h8 D! C* M- K8 G. a' I, _, W3
% l1 S  U3 q6 ~3 `! z  {. K+ h5, T( A/ Y9 C5 E* K
2; X: z4 n$ U! p* x% B* [; }
3
$ S& M9 ~/ d! W: h$ p: ?2 _1
7 r# O% ?2 n9 b# O6 |7' n$ n! b1 k( [- N7 Y! y% p* C
3) c/ x* P1 {/ i# z$ v2 o
5
8 X" U3 ]$ f0 y+ m% Q* ?3 ^2
& G4 X; I8 H5 P$ m) |6 q30 Q' h6 Z. A9 ~3 D
1
2 z0 C8 x* C: c: O5: x. w1 R3 H& p7 j
2
: j. U% n3 e. {. @0 L. Q9 e4 t3
, T! {  g7 {) s9 a$ ~' |% ~) L1
0 @, A* `9 {' h30 W2 r3 s& r( y% z$ A, N
1
$ ~2 {$ J$ U' W1
2 S/ C; [* K! c+ h2
1 g0 o) v% E/ t% _&#61552;; G3 j7 ?9 L+ D2 F2 y2 w  N  x6 a
计算π 的近似值,当某一项的值小于 10-5 时,认为达到精度要求,请完善函数。将结果显
9 w$ s4 r) |/ G5 F示在屏幕上并输出到文件 p7_3.out 中。: w9 A1 U  N. P3 G4 D- |/ h
主要涉及知识点:函数、实数的比较、相关公式用程序实现的技巧、文件的操作6 d& Z  D5 h! w9 d& H+ B, o2 C3 I
#include<stdio.h>: I- N1 w& ~# n' q- v/ w2 X/ x' s
double countpi(double eps) /*eps 为允许误差*/. W6 N. g! ]0 p  i) L. \
{! m3 @" L2 ?: j
int m=1;4 |" I; ~" y& R& }( Z: `# J
double temp=1.0,s=0;9 V% m0 ^. z1 d
while(temp>=eps)# [9 U& D" Z+ `3 d; }
{
. U7 e- k! o9 R, W' Us+=temp;& P3 N0 u- t7 [/ B( ^: x
temp=temp*m/(2*m+1);
  m3 }' P0 R. K& hm++;
% a" `6 [6 E  |, P# ~% O6 V}# X1 u2 R" k! Q2 n
return(2*s);/ @6 m  t* e% s& ?
}
( A- G# C$ o& B* M8 d3 v  Rint main()4 v* p# t( j; ]' A7 F
{
3 P7 a2 E- j7 s# `4 BFILE *fp;- p/ s+ Q0 z! I! y4 q! m$ ]! v
double eps=1e-5,pi;3 W% `8 q! J! B1 p  E; I3 c5 F
if((fp=fopen("p7_3.out","w"))==NULL)* H3 X8 _% E, r- B& k
{
+ [& _( W6 [( Z1 ?: c! [2 F7 ]6 {6 ^; qprintf("cannot open the file\n");7 I/ K5 A6 X+ P) A6 d
exit(0);9 M$ H- C. X7 R7 ?
}
0 c# N! {  X, y  W" J6 epi= countpi(eps);
- O8 J! s3 P. Iprintf("pi=%lf\n",pi);
5 ^3 }- W4 p0 F$ r- r# q9 e( n* Mfprintf(fp,"pi=%lf\n",pi);. m' k% w. ~8 \4 L! \
fclose(fp);  o% ?5 g# M9 _8 d+ b
return 0;& {; x7 u3 N8 s9 W% W
}* ?( o4 [. u" U9 x6 q* }$ l" r9 j( H
11、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件 myf2.out*/
* Y: Q1 f" ~9 X# B3 u主要涉及知识点:函数、排序算法、循环嵌套、文件相关操作
# n/ [1 }+ F8 n* k: M/ ]#include<stdio.h>' G1 c) u% C! f! |  l! K
void fun(int a[],int n)5 q4 {) U, |3 f  Y
{& k) t3 o/ r% z8 G$ P
int i,j,t;
% m' a# c  ~( L& R- y: {6 T$ ^: B9 hfor(i=0;i<=n-1;i++)
: u+ r% X. p" H6 M; Rfor(j=0;j<n-i;j++). \& t1 L: v; _/ t0 O9 F
if(a[j]>a[j+1])$ j, o9 ]" \6 ~# T
{
4 M( w& O( W) a) Ct=a[j];
+ Q3 z) Y0 \( u7 z8 Qa[j]=a[j+1];
4 J6 o1 I$ W* @% ta[j+1]=t;
( i- a; `( {4 B( p" L9 F}( @6 D( X& Y* P- @
}+ j6 P9 J; n8 Y. j/ s. |
int main()
2 m7 L; {* D% E; f{' W. T" g; x& M) o! q
int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;- D$ Q6 T: X; c- }
FILE *f;
7 h. h0 H$ N; j' F  Nif((f=fopen("myf2.out","w"))==NULL)
; o( L2 s& S1 o' ~0 o1 B" B3 @9 Qprintf("open file myf2.out failed!\n");) ?" T1 s# u- R+ q. Y# l' @
fun(a,10);) w0 [8 d  j. _1 ]+ q! X
for(i=0;i<10;i++)
7 J6 i  `& b9 ^5 H5 K0 a{
' h, o: n5 X. d1 G1 d( @1 M/ m  a5 `printf("%4d",a[i]);
* @7 W8 U8 s- c, hfprintf(f,"%4d",a[i]);$ V; |' L( G# Y5 ~. h
}4 c7 V1 Z8 {" @" L+ t) s( \3 O( m* x
printf("\n");
# v( B. E6 U- A1 Q. `& `0 Ifclose(f);
. A8 t7 _6 g4 W) _4 Sreturn 0;4 @: R1 n/ Y! h6 {. q& S
}1 n% _7 W$ @) q
12、/*在一个字串 s1 中查找一子串 s2,若存在则返回子串在主串中的起始位置
; z2 E% c$ i- X; n6 e/ a; m  Q,不存在则返回-1。*/
# v8 ]8 \. a& u  E3 i主要涉及知识点:字符数组、查找算法、字符串处理函数& ~" |" r, q/ Z, G0 A
#include<stdio.h>/ @/ k% f) I" I3 N8 H
#include <string.h>
7 v6 q$ Q" A* c: K5 b  m6 q# sint search(char s1[],char s2[])
! n" b5 t) P, J2 x" `{* i' s; D1 a; i; |7 T  t
int i=0,j,len=strlen(s2);. w/ \0 ~5 I. ?
while(s1[i])
$ g2 R: y+ f1 N+ t0 k! _" u{9 p) a# E1 b. o6 y/ S
for(j=0;j<len;j++)/ z  L# ~. u* T0 B. s
if(s1[i+j]!=s2[j]) break;5 x7 M2 U2 b/ i+ l3 O- }/ w
if(j>=len) return i;: ?0 T2 O* y$ }: e4 x" o: q
else i++;, {/ @5 M# p% n' F. I7 S
}) n) N4 Z1 B- b/ ]* _) N2 ?. k
return -1;0 z$ J& N# O% K  P, m4 T
}
$ u# w. V* @6 S, rint main()( q0 E" P& x/ F! Y
{
3 Y1 D5 @/ E4 U. q8 ~  [char s1[6]="thisis";
: C  _( M; c( w8 i/ schar s2[5]="is";
; k5 n. K; B  m6 E9 [printf("%d\n",search(s1,s2));
$ q; E7 f$ j5 {6 jsystem("pause");+ ^9 J8 F8 I: @/ S* a* R( E1 T
return 0;$ r/ ?# W5 D9 a: m: Z
}  y; L) q. @  Y
13、/*编写函数 replace(char *s,char c1,char c2)实现将 s 所指向的字符串中所有字符 c1 用 c2
9 |4 _" J  G& [4 f/ m8 H) A% q- Q替换,字符串、字符 c1 和 c2 均在主函数中输入,将原始字符串和替换后的字符串显示在屏0 y4 W/ g& \5 C; M0 H
幕上,并输出到文件 p10_2.out 中*/' V( v$ G6 J, S* N2 ?+ G
主要涉及知识点:替换算法、函数、字符数组、文件操作7 D% Q# y/ T, |2 a$ i
#include<stdio.h>/ I2 C# U, U; U4 Q4 L+ b8 X
replace(char *s,char c1,char c2)
. T+ r; |& @- l# ]2 C2 o{
# M) }9 O" U1 ]) n" l  vwhile(*s!='\0')
) U1 p* I3 [5 [$ h# m{1 }. u9 E# T7 B3 `3 J! n% ]. h- m
if (*s==c1)
, H1 o$ q  K1 }) n4 r) U5 h; F( ]*s=c2;
# g' s; I# g- P- s: o# Q' xs++;0 E5 Z4 y( a4 D
}& z" n# }$ L+ q
}
. t$ t" v" p# R7 V( eint main()
3 \8 ^% D7 ?' ^8 f. \2 q3 Z{- z! B0 I. b! b% o) S" N& T" R. U6 u
FILE *fp;9 [( R: N3 A) z5 }7 a+ }9 V& x6 W
char str[100],a,b;
6 i- z9 r: F+ K  N: z" oif((fp=fopen("p10_2.out","w"))==NULL)
+ }- b- ?) _5 W5 ?% @1 Y{
( Z! Z- K. t9 |( c4 G- a( Q3 J" [printf("cannot open the file\n");: P( d" ]5 c$ G; o3 w' N
exit(0);  J7 ^5 s; {% j+ ]" f. ~
}7 Y/ l9 a' m% j! v/ _3 ]8 K) x% n4 \8 ^
printf("Enter a string:\n");+ h4 a! y0 w" {
gets(str);
* i& d1 x+ m$ G- ]  |printf("Enter a&&b:\n");1 i* d8 U8 \; b$ P, l+ G" l
scanf("%c %c",&a,&b);
3 u+ i" d' ~' ]1 z! R0 i0 h$ zprintf("%s\n",str);
# b4 A' R) {- Efprintf(fp,"%s\n",str);: k+ H8 y9 W& G
replace(str,a,b);
1 x5 p2 o* P3 lprintf("The new string is----%s\n",str);7 W6 O, V# d4 d' \, T9 b/ r4 t! p" {
fprintf(fp,"The new string is----%s\n",str);& e3 D6 b9 k/ |8 M$ a6 m
fclose(fp);
7 h( `7 t: g6 m6 D% _2 Ireturn 0;" t) ]8 D2 ^8 W9 V
}
! M; _; M# A; Z14、/*用指针变量输出结构体数组元素。*/
3 h3 K0 M' q$ h' u主要涉及知识点:指针与结构体、结构体数组的赋值、输出! o$ [7 s  E% n  d
#include <stdio.h>, y! T/ w3 D) J+ o8 x$ i) w4 j% f
struct student: N5 G) u4 D: i- K5 h7 }( U
{/ m- T0 }5 x6 D3 [8 q( X
int num;/ _7 `2 Z9 P8 g& ^2 C' Z% Z4 s  R
char *name;
3 ~. h/ V  h1 W* a& g1 A8 B+ Vchar sex;
# s4 [5 H2 ], V7 D5 w$ dint age;9 G, \- c) X! ?" X  R. i
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou
8 `) a/ g  G# y9 q8 K/ ^; \0 |0 h+ R",'F',19},{1005,"Wangming",'M',18}};% p, p  P9 G1 [: \0 v3 l3 e
int main()4 F/ s" s( V: c: m# [; u4 U% U
{5 h7 k& Y$ [! n# b, o+ D
int i;
( C. W4 N+ F# rstruct student *ps;7 ]& ^# V; i, E8 Z
printf("Num \tName\t\t\tSex\tAge\t\n");
! O( C0 I( }3 L/*用指针变量输出结构体数组元素。*/
: v( l  i1 l* y/ f  lfor(ps=stu;ps<stu+5;ps++)) U" D/ q. s% w- `9 [( {. M
printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);. D( `$ L7 F- `2 z: D8 }' I
/*用数组下标法输出结构体数组元素学号和年龄。*/
& q. B) T( P+ G- h# X5 u. `for(i=0;i<5;i++)! H/ f; P# k' e" _/ y
printf("%d\t%d\t\n",stu[i].num,stu[i].age);
  B( |* x( W; K/ g1 Treturn 0;3 o$ s! C8 a7 |0 n- D4 w
}
( i( j; A3 j" |+ H' A4 a# \7 g15、/*建立一个有三个结点的简单链表:*/
' m9 A4 D$ h# ?7 d  |: S主要涉及知识点:结构体、链表相关操作! U! H( q% X' l6 n; L
#include <stdio.h>
5 y% C1 K5 `  O$ z) c7 i& G#define NULL 0
$ S0 w' @$ N, `6 k  t% }( C  {struct student
! B) i: f' S3 @* e9 @& H0 M{* k- e- e8 r8 M2 G
int num;* @% Z+ [9 O+ F' \. z  \& X
char *name;4 \- c7 x4 q$ n* z
int age;1 s7 S2 g! \: U4 k/ k' o
struct student *next;
( P+ p% [; o9 t& v0 C7 @};
) i8 A- p: W: h$ bint main()
3 A( {# `0 }, ]2 D" Y3 P/ Q7 k" G* l{$ m+ {; q# M* g7 f3 n* ^
struct student a,b,c,*head,*p;
- Y8 s- Y0 R. e4 f+ ta.num=1001; a.name="lihua"; a.age=18; /* 对结点成员进行赋值 */
+ N, M' A! [/ A7 w: C& S0 ob.num=1002; b.name="liuxing"; b.age=19;
: H! V0 J: y8 i* gc.num=1003; c.name="huangke"; c.age=18;
0 X  z% D4 n4 X. _, Rhead=&a; /* 建立链表,a 为头结点 */7 O& _. s% V' t( L, y* y
a.next=&b;
4 s6 r, n: y) G6 T/ e  Fb.next=&c;* [8 Y' S) }' g) D6 ?0 e
c.next=NULL;( i5 t2 B5 v( I
p=head; /* 输出链表 */
, u  |5 h* E+ b1 N" ?4 s% A7 xdo{
4 J$ y' J! X* h1 d5 v1 `' J! O/ Xprintf("%5d,%s,%3d\n",p->num,p->name,p->age);
0 {8 g0 d/ F2 x4 Z2 b. Ip=p->next;
% m2 p  A. ~; C* p}while(p!=NULL);
0 ~$ M6 W* {1 @return 0;. j" j8 C9 {7 [
}
6 p; L0 k6 F' o$ m5 K8 w
" T  H. v2 s! ^: |
7 M" ^+ r2 M+ a, v5 z3 ~

评分

参与人数 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-11-21 23:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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