鱼C论坛

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

C语言必背15个经典程序

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

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

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

x
C 语言必背 15 个经典程序5 Q. ]  P7 J/ L; S$ q, z
1、/*古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三
, s: L' J- S' v/ S& z. E个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
, a1 y/ h# K/ w, H3 E5 z兔子的规律为数列 1,1,2,3,5,8,13,21....*/% N% U/ p" M1 B- f
主要涉及知识点:循环选择的嵌套、输出的格式控制(可转变方式用数组、递归的方式实现)
9 l3 B' C+ R4 `+ _4 Q#include <stdio.h>3 T8 w) X& x9 H$ j; ^3 e  j
int main()7 l  A& Q  B! p9 @: H: y; e0 N2 i5 h5 E  }
{
0 O# E( a( J- ~/ p: along f1,f2;: s2 f* f/ `3 b+ g; f
int i;
$ r. u7 f7 L1 |, \: R* N; S) wf1=f2=1;' A5 U4 X, Q+ y8 E) }5 A  u, H0 ~
for(i=1;i<=20;i++)% u1 K9 f7 _. d8 p$ F) `# d' y+ R$ C' o
{
. E& N/ r+ H; j5 x9 S" ]3 v/ Iprintf("%12ld %12ld",f1,f2);7 O3 R+ m! b! v9 w
if(i%2==0)) |4 \* i% Z; A# l
printf("\n");/*控制输出,每行四个*/
+ k) ]; x  B/ D) `9 @# Uf1=f1+f2; /*前两个月加起来赋值给第三个月*/
  Z% u" I( r' E& M! X" }f2=f1+f2; /*前两个月加起来赋值给第三个月*/
! T" T3 e7 S4 B1 W  n}6 N. w' Z  B) U: _8 I+ k* z( S
return 0;( g+ o; `  d: k6 P' C
}
1 E1 D2 a$ I! U" _, D2、/*输出 9*9 口诀。共 9 行 9 列,i 控制行,j 控制列。*/6 i  }: ]8 c* k$ T4 K
主要涉及知识点:循环嵌套、输出的格式控制, C) h3 W& @- A5 H1 M5 k5 q
#include <stdio.h>4 p3 @8 X  k8 G' v: P- P
int main()
, c* e0 ?- S  u+ s! \{0 ~& m+ A: @6 y" @
int i,j,result;2 E# q6 B. ]* I* H/ ~! ^0 y
for (i=1;i<10;i++)4 @3 e/ y. c0 B8 n4 \( a
{) b, G& \+ K2 @4 L
for(j=1;j<=i;j++)
/ p5 Z1 F# \- S# m+ A{
5 T& @! y# I0 d1 }0 v1 Tresult=i*j;3 H, h( C& h8 v% C0 e3 c
printf("%d*%d=%-3d",i,j,result); /*-3d 表示左对齐,占 3 位*/
& P! y- p) s/ R6 x) T& X}+ _# @" N* ?/ v: w3 y
printf("\n"); /*每一行后换行*/: t3 y. B8 k/ J4 K
}
6 E! o0 s9 G" Z$ O, Z, {return 0;2 \8 N: k# V3 Z; ?5 z
}/ l$ u+ c3 Y8 X4 z) v! }. t
3、已知数组 a 中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数
, B7 v: a# F  O1 a8 }9 j& Q. }组 a 中,插入后,数组 a 中的元素仍然由小到大顺序排列*/) F6 @' ~0 B3 d% t+ ]3 ~8 n
主要涉及知识点:一维数组、插入算法、数组元素的移动
5 h% z+ D4 J, y( y#include <stdio.h>" T/ X" _! h* |1 q" K$ Z  Y
int main()
. v0 X0 K3 K3 t1 F2 Q; T{
/ D( L6 J& O$ J: P( E) g) bint a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从 a[1]开始存放数据*/
5 T! |+ {0 ]  T& gint x , i, j=6; /*j 为元素个数*/
' L5 j8 w5 k9 Iprintf("Enter a number: ");/ _4 M4 T: ]( @+ y- O
scanf("%d",&x);& ?5 u+ P3 J3 Q! R! n4 L
a[0]=x;
, n, m7 v2 f2 v, v. S1 di=j; /*从最后一个单元开始*/
2 C6 X. P- D$ [& N) w0 Vwhile(a[i]>x)
1 F' f0 j% D* p# B& j. x! l. d{
0 ^2 j; b" X8 o1 d, Za[i+1]=a[i];+ i8 }5 S9 G2 Z4 ?8 P9 M
i--;
, L+ a4 S& ^5 w$ z  K} /*将比 x 大的数往后移动一个位置*/5 Y  v+ N2 p; T- x0 B) S% |
a[++i]=x;& [+ j- L4 H( k( A
j++; /*插入 x 后元素总个数增加*/% Y$ B/ n( T3 ~4 m( S: [
for(i=1;i<=j;i++)8 I% Y) ]' e2 G7 ?, k
printf("%8d",a[i]);  E0 N; o1 x! c, @
printf("\n");1 \0 A6 b8 V7 H6 b, i+ Q
return 0;
- S' x" l/ O: Z' \  Y; w6 o}
" Q! o( |! L% {( O  K% ^, u4、/*下面程序的功能是将一个 4×4 的数组进行逆时针旋转 90 度后输出,要求原始数组的# q8 Z: f' d/ R
数据随机输入,新数组以 4 行 4 列的方式输出。*/4 H  L! ?1 s# H6 [
主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
$ i6 n7 \$ I+ W2 O#include <stdio.h>
- d( l) K0 f0 f% ^+ Uint main()2 V0 g' }$ i  i2 R
{/ c4 p  N4 m8 k  l
int a[4][4],b[4][4],i,j; /*a 存放原始数组数据,b 存放旋转后数组数据*/9 I" J# c. A" g; T
printf("input 16 numbers: ");- K& X- P. ^' G) s* \/ s5 o
/*输入一组数据存放到数组 a 中,然后旋转存放到 b 数组中*/
. P" ^  m1 ~/ _- Wfor(i=0;i<4;i++)
' t9 V- h- R& p9 Y1 [5 o{
( u3 w5 k# p3 n, X" y) Pfor(j=0;j<4;j++)3 d+ Z2 q: b5 j- {3 v
{
$ B3 M9 A9 z/ ]9 X: o/ |" Gscanf("%d",&a[i][j]);
% }" n% b/ P6 O+ Qprintf("%6d",a[i][j]);
* y4 k: J2 D- gb[3-j][i]=a[i][j];9 n' N4 w' n( I9 a! Q1 k" \4 s
}  b3 ~& C1 O4 K; I
printf("\n");$ N8 V9 X& p/ u/ ]* R- N
}8 Z% K+ ?$ T" V, ?
printf("array b:\n");
! _8 T* K# H6 D. U' f5 y8 wfor(i=0;i<4;i++)
3 ~' _* W7 z, _/ }  M" d9 B{
  |' l  \' G$ x9 efor(j=0;j<4;j++)
2 z/ M+ X9 D( \; Z0 C0 F& q: {printf("%6d",b[i][j]);
) |' d* z4 @( i9 xprintf("\n");! k" |8 j+ U# R5 m: v
}
8 h0 m- Z/ X4 h: M/ `% ~; jreturn 0;4 i. o) f$ r' c# @3 ~
}/ x. j5 D/ \8 x
5、/*编程打印直角杨辉三角形*/
4 _7 O" j! @; v& {9 D2 K主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制) s1 K% j: M9 a/ w' ^' x4 u
#include <stdio.h>
# k( c0 C; a" y0 ]int main()
) a" f2 q" R2 S" t1 e, x{
( E+ r' ?+ v" V1 Q' K1 d9 \& Nint i,j,a[6][6];
) h+ @- y$ \; m. w6 A3 ?# Qfor(i=0;i<=5;i++)
2 N& f$ F3 l! T6 ~" f+ M3 |- z8 {* B{
3 q  F6 u  B3 _0 i# W2 d/ Q1 |a[i][i]=1;) y& c* j/ V3 v+ b7 J
a[i][0]=1;
  n" `- p0 ^9 A; p# _% M}
" ]% h6 ]5 ?+ H; J* W( |' r, U* tfor(i=2;i<=5;i++)
$ z9 r9 A* k" Y# Z5 \, Lfor(j=1;j<=i-1;j++)
2 r  d5 e4 i! h7 |' `- M& ya[i][j]=a[i-1][j]+a[i-1][j-1];
% Q. U" p! T/ qfor(i=0;i<=5;i++)
+ y9 Q, [1 K- k{
% i! @$ m+ P) f' V+ ifor(j=0;j<=i;j++)1 y$ j: L( |" X3 [4 `' T
printf("%4d",a[i][j]);5 r& ?$ L8 V2 ^
printf("\n");
& ?: U- W/ D" h! _}; u, R" V. f/ s! I2 O9 Z: x
return 0;! m1 g% {3 t2 S0 d
}
9 i5 Y0 Y* l# J0 x* u: x3 T! S, R6、/*通过键盘输入 3 名学生 4 门课程的成绩,分别求每个学生的平均成绩和每门课程的平1 F9 N# @" f7 ~! v2 [) Q
均成绩。要求所有成绩均放入一个 4 行 5 列的数组中,输入时同一人数据间用空格,不同人% g2 V* o' c5 W- Y# G+ j
用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总: b  I3 H/ L' G# o& i
平均分。*/
7 n' S2 ]$ ~* l9 r! ?+ [) E主要涉及知识点:二维数组的输入输出,及相应的处理2 |% H- Q- v4 [% ~/ z( Y
#include <stdio.h>
  p$ B- h# x3 C  R#include <stdlib.h>
4 @5 i) `" R: P6 hint main()  N: b6 g) @8 e0 @6 S& e
{7 L4 m, [# w( U) T) x
float a[4][5],sum1,sum2;
: K" d- H, s/ f9 m. rint i,j;
  K. y$ z6 |2 W9 sfor(i=0;i<3;i++)
: K; x6 r+ A$ ofor(j=0;j<4;j++)
9 H  }7 |! C2 @+ P" F& @6 r) Hscanf("%f",&a[i][j]);! q9 ^4 b1 C4 R+ }
for(i=0;i<3;i++)4 {3 f% W' Z2 q8 U
{
# O: _) F& O% j$ E2 `, Y8 fsum1=0;7 ~$ `; ?" n+ G# \7 Q7 |
for(j=0;j<4;j++)
6 f, ~$ y$ o# f) M/ Asum1+=a[i][j];% W/ P1 T: z9 C; {" ]6 j% F/ z
a[i][4]=sum1/4;
) B; a: t6 J; U}' a( S* G$ v' Y$ ?! w
for(j=0;j<5;j++)
& D# S0 {( P; {; ^4 `{
8 D/ M  {$ a9 B1 @0 _6 ]sum2=0;: V6 r) L' ~% o" l+ A
for(i=0;i<3;i++)9 v0 \7 |6 _$ q* z1 a
sum2+=a[i][j];
! X- F, T7 N6 ~0 g  f$ m3 Wa[3][j]=sum2/3;
2 n/ Q/ ?5 k0 U/ j! U  ~$ t/ {* h}
0 l! h1 T" j3 n7 \" F  }/ wfor(i=0;i<4;i++)
0 t' L1 U1 u% }/ q4 O+ h3 @{
. N4 U0 C- Q3 Dfor(j=0;j<5;j++)4 q* G) |" y  [) p2 E! x
printf("%6.2f",a[i][j]);
6 l, f% F6 y/ Sprintf("\n");
. Q/ y8 b' C9 g/ `% }}
9 `/ y9 F6 q, T% X7 sreturn 0;
% t; Q1 n: w, F/ h3 u" W8 Q}0 B) Z$ P# h. d$ J: y) ~
7、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全, H5 R+ G& s, ^# G9 U8 @: I6 ~6 U
相同的字符串。*/
+ ^6 Y/ ^1 G4 U  i6 @/ |主要涉及知识点:字符数组的输入输出,及相应的处理7 P; O! E* p+ v/ A* B' T
#include <stdio.h>
/ ]/ c# [/ ?& w/ [! M/ ?#include <string.h>/ `( O: _! ?# N4 x* n
int main()6 f) e0 R) K" P5 q
{/ f" s7 q) }% T, z$ i
char s[100];3 t7 U# O! m* @
int i,j,n;) f6 Q" n7 x7 ^9 l+ g
printf("输入字符串:\n");
) N: B. e! o2 |! M6 I4 vgets(s);
0 M8 y' J# V* q0 p4 ~! y! m) t) kn=strlen(s);
. _+ h- E; ^% ]. P6 |for(i=0,j=n-1;i<j;i++,j--)
" m+ h1 z% s9 w& t) xif(s[i]!=s[j]) break;
8 B, P% I4 J- V* V; Jif(i>=j) printf("是回文串\n");6 v/ f# \: I4 r9 H2 P' X& ?# \1 m
else printf("不是回文串\n");+ p3 S8 y; \7 O, f3 y+ D
return 0;* H' d: Q: ^# X  _
}, E/ L- A% V3 n/ h5 x0 O/ I  V( B2 B
8、/*下面程序的功能是从字符数组 a 中删除存放在其中的字符 c。*/* e# }9 ?7 I7 K8 h5 }+ g
主要涉及知识点:字符数组的输入输出,及相应的处理
7 A' A6 Y; b( f, ^  {, d#include <stdio.h>4 v2 O6 M- @$ |6 e8 a: P
int main()
0 C/ y9 \) @1 t" \{1 j* j8 V: {' t8 Z
char s[80],c;  G$ L5 M" i4 ]$ S6 _. U- l
int j,k;% Q) T: X1 V1 L  a
printf("\nEnter a string: ");& m* r. y/ g/ r6 [+ U6 e
gets(s);$ g6 x9 k: p$ ?, n( N
printf("\nEnter a character: ");$ T/ N# o" [9 s& U. @& f: W0 l4 c% s
c=getchar( );
: {5 c% x% u- wfor(j=k=0;s[j]!= '\0';j++)/ \- G' r5 I: F6 N2 k3 N
if(s[j]!=c)
& J7 F% k, e5 B$ J0 [+ \* P6 N* E+ |+ vs[k++]=s[j];+ R$ b3 a" p- W& u
s[k]= '\0';
# c* {# E% G# v/ d& y. Z1 `9 lprintf("\n%s",s);
" {+ u' \. I, F/ Q. A3 I1 _return 0;! ?" s2 F& t5 w
}
( o% O' ?2 x2 U0 q" T; H- W7 S9、/*完善程序,实现将输入的字符串反序输出,如输入 windows 输出 swodniw。*/7 N  R7 b/ t! z+ h& \
主要涉及知识点:字符串的输入输出、字符串处理函数、指针的用法、文件相关操作& h6 u( `. G% {) E6 U8 Y- ^
#include <stdio.h>
" w, ^& N- k4 C& v' x* }+ \) J1 C2 b#include <string.h>7 k+ \! v7 h3 }& }) x; |
int main()
0 L  K7 `: Y7 |3 \{
7 a( H7 F  N* G, T  }- f1 y; b+ u3 Q" cchar c[200],c1;
0 J# s( \9 O) i! v& J1 uint i,j,k;" K5 g. f* }1 S. j
printf("Enter a string: ");
( g9 }3 H- K9 F1 O0 nscanf("%s",c);+ s! J% q8 }5 Q" R7 j  s3 Z
k=strlen(c);: J. a4 h/ w; g" C
for (i=0,j=k-1;i<k/2;i++,j--)& H1 t, e* R/ k: ^# ~2 G5 |! K
{
# q- [9 T+ l+ _" T7 j' Z: q9 Bc1=c[i];3 @" m5 I0 `, d& j; T5 B
c[i]=c[j];
( Q. Y; t: X9 |5 w, q( y* U/ I: cc[j]=c1;
3 R5 K: y& [2 h. M, z}6 ?. t/ |* n& q4 \( v$ E
printf("%s\n",c);
, l" ?* N) P/ U: x" e7 Ireturn 0;
6 c! I$ x. s' N0 U$ s' T}; m& @: R  J# A( L
指针法、文件相关:
2 x% Y) S# `7 [5 K/ ^; a#include <stdio.h>
7 k. j) p3 I. ~3 ovoid invert(char *s)
* y! g* V- [+ D& V/ d{
1 m  E  C; ?# k7 v+ K! |int i,j,k;% W: o- d# N2 ]1 v. W9 e4 _
char t;
- B& }0 h' Q! q$ @5 Rk=strlen(s);/ h8 {4 J1 z3 `) Z' h+ A( s
for(i=0,j=k-1;i<k/2;i++,j--)7 c5 t6 Q9 F0 j" _: _: l/ R3 O0 G- e
{
+ O- P' Q% Z- w, `t=*(s+i);, W4 c: i" E; ~7 e# c, s- K
*(s+i)=*(s+j);+ }; @  J! K( D- O
*(s+j)=t;
" N' V8 y" {: m: Y+ W* |}
8 k7 n' x' O" @. A( ], V' D/ I}9 L" \/ S& ]% f& q( P4 N
int main()
' h7 o: p7 J: R; p{$ K. @' o) L0 ^7 r$ o
FILE *fp;, p7 ~4 _8 v; s3 G  ]( F  Q
char str[200],*p,i,j;
! o% Q$ I, J# t) j8 dif((fp=fopen("p9_2.out","w"))==NULL)
' y" u3 A; n- x1 W6 J{
% H5 [( {+ n  e* zprintf("cannot open the file\n");
) F; U! g( G! Q7 w) s& R' fexit(0);
! H6 F6 |  Z( w* _% n! k}
& f) _/ t' {& l3 j/ I4 ^7 }printf("input str:\n");
5 ~/ o* v8 \. t7 `$ R7 bgets(str);5 R1 f% D, j+ l9 e1 C
printf("\n%s",str);$ ^; r- ]) b0 E! k/ y7 P4 D
fprintf(fp,"%s",str);
3 e1 }5 r+ [3 _- a* ]invert(str);
/ U: `/ Y' `: J- F2 \2 ^8 s$ vprintf("\n%s",str);
5 y* {% a/ l  \( z8 U! Y, Rfprintf(fp,"\n%s",str);
- A! a% y5 P4 |1 }7 n  Nfclose(fp);
' E7 I- A- E; r2 F3 q' rreturn 0;
: U5 \- H% B; p3 a}5 y' d3 \. j4 ]# N
10、编写函数 countpi,利用公式
1 x2 ~: ?- R: H$ e% B( T&#61516;
- U9 {( M' C# d7 I" u5 F# }. e&#61483;
0 u; a+ y0 h% V' Q/ l&#61620;# e% J; g+ @; x$ V5 E1 U& b
&#61620;
! R# l  I$ R. V3 Z" O5 Q) S&#61620;; M. `6 o1 R4 Z: }; p4 C2 R
&#61483;( L' d3 F, D' g+ Q- y! l- J% i
&#61620;
: W# R, @+ I3 a/ L; G&#61620;: A4 M% P, e- {1 W8 v/ Y
&#61483;2 u; R9 i+ v& F8 N# i5 B
&#61620;7 e$ M+ S$ c6 `% K" f
&#61483;
, j3 f" l  ~  o2 H&#61483;
; \5 Q- I. G5 B&#61627;) j, E* v+ }' }% J5 M
9. i9 P3 c  y  m6 L' J
4
, a+ f/ q: p) f5 C4 j# Q7
) ~. _) m; h, c5 j% Y3
' F) E4 W! f7 }% S" z8 E5% h; `# b4 i9 I$ D$ j2 o' y2 h
2& G7 D7 Z. C7 T! F. @
3. O0 k, f3 N* e: r3 z0 [
1% \" e7 c$ U2 i; y( c0 A; `
7
' i$ j$ o6 B8 A) C6 K$ B" \3
5 `/ }+ q5 P2 e+ i* ?3 d5
, }: m9 m4 o1 z' w2 \21 Z. D% l; T, @6 {  V! \) P; [
33 X" ~2 S* f: p# {8 s: w
1, L# S# E* K& E! d
5
% B( j- j. y- z2
2 N# L. N" z5 ^0 r! `36 e' r  O7 D+ T- c" u6 ?
1
) A3 V2 ]5 g: j# b' C3
1 _; ~" D3 T$ k/ `: a- w1 K" t3 l1
/ Y& {0 a9 I# {% S% A1
6 w* V; ^9 \6 e  B# E  V7 z2; a6 m7 L" {: N' Y
&#61552;
( H9 c/ c) F3 _8 T; o计算π 的近似值,当某一项的值小于 10-5 时,认为达到精度要求,请完善函数。将结果显
$ @5 b! J" B# u$ c; i$ c7 B3 c示在屏幕上并输出到文件 p7_3.out 中。) A3 w9 u4 `2 o% Q: z" R4 h; y
主要涉及知识点:函数、实数的比较、相关公式用程序实现的技巧、文件的操作( k0 |; c3 q! b' v
#include<stdio.h>- r# n2 W! N; W  K: E
double countpi(double eps) /*eps 为允许误差*/
" x& b) G4 j$ l& N1 M{+ E+ P" ~% }( O5 z7 w. N7 Y( p5 R
int m=1;- ^. j% c0 i% }1 f' i
double temp=1.0,s=0;
3 M3 J. ?4 d8 `2 b1 }while(temp>=eps)
! P9 N; Y7 e/ ]  Y) o{- F1 a! f, M+ ^, H# H
s+=temp;! X" X4 T4 ?' a
temp=temp*m/(2*m+1);
( }& j" c( t+ ?$ P2 n" B) V6 Nm++;
$ K* Z1 n; X" {: N9 J; w2 B}
1 J- P2 Z% W( `, Q8 r6 r+ y' Mreturn(2*s);
9 R  ]2 f* Y5 }) @- v}8 r/ P  Z! g0 [) W
int main()1 Y1 z$ M- q2 X0 F+ r9 d
{
( y' M) `7 l" i2 A, e6 ^FILE *fp;
6 p0 Q; S9 I3 b% P8 H% B" Q& `! K$ Tdouble eps=1e-5,pi;: z$ ~0 w2 S; @
if((fp=fopen("p7_3.out","w"))==NULL)
  E; \* l/ M/ A3 a) h{
# }9 r4 Z% J) r% A8 e" ]$ \printf("cannot open the file\n");
; s( t$ k% z( z/ R6 y8 j3 C1 e& lexit(0);
0 V$ f! ^0 o; C0 \: j; q}. Z6 M$ G. o7 M& V2 K, Y# D
pi= countpi(eps);4 D0 [, J2 k$ g4 x8 x  C9 `" n% k
printf("pi=%lf\n",pi);* z% O! i7 P7 R8 ]- E  y) m
fprintf(fp,"pi=%lf\n",pi);
, q6 j9 Q1 V3 O. w7 C( a* pfclose(fp);$ G/ H: r- j3 I6 n5 O2 O+ l
return 0;
# E+ A9 G. V$ ]}
9 r: G) h) I: ?4 j" \3 ?5 a11、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件 myf2.out*/, m& W' c( l  `. R
主要涉及知识点:函数、排序算法、循环嵌套、文件相关操作
: d9 K) z3 }( ~" D7 `; u) [  f  W1 q#include<stdio.h>
8 d/ R$ e* y! z! zvoid fun(int a[],int n)+ b& @# U3 M3 h3 W1 K# @$ h! v' p
{
! o. w8 p. O1 l( ~; wint i,j,t;
- X  c9 a# W2 D( i9 z" d3 Cfor(i=0;i<=n-1;i++)7 u# O3 K: D! P. |
for(j=0;j<n-i;j++)
  {: z. N9 b. f! kif(a[j]>a[j+1])
& H; Q$ ?& A) \/ j$ E{* ^" _0 P, r+ |+ }! s) c
t=a[j];
4 V* l8 g, w; r5 Q: |5 Ca[j]=a[j+1];9 l3 f% O5 Y7 K4 d4 l
a[j+1]=t;3 o6 z9 n5 I( G# G
}
& W5 c" E. J) M  @6 W! K0 l}
2 B3 A2 M' X! A$ m, ?+ pint main()
: p# l3 {, ^& s! \7 n) R; O. {0 v{
  A! ^3 @% L+ o6 X  S- Eint a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;% O1 c( r( \9 c" m0 [) w+ Q
FILE *f;  @% x0 |7 i; Y5 p3 C# P
if((f=fopen("myf2.out","w"))==NULL). E( O" s! B* h8 I( Y! p" G) w
printf("open file myf2.out failed!\n");
0 U7 Q, a) b% T4 Gfun(a,10);2 x' ~- A1 e( y
for(i=0;i<10;i++)
0 F  s! n* I: T( k; ]- u. T9 ~{  `) y: ~. O+ m3 E. {2 k* Y8 ^
printf("%4d",a[i]);0 W9 [9 k7 e( l& u; f$ |
fprintf(f,"%4d",a[i]);
7 C2 b' s4 w* N' w% H}. ~5 z4 S  `/ p) U5 V
printf("\n");
, e) k7 _0 a; G) X+ b2 S' m0 V' Vfclose(f);
5 Q  a" f" B6 q% O, vreturn 0;
' X% q2 ]$ S6 K}) u; T: [2 h" b. `- ^
12、/*在一个字串 s1 中查找一子串 s2,若存在则返回子串在主串中的起始位置$ l& K1 A# k% o( d
,不存在则返回-1。*/
1 M, N( M6 K; b4 F主要涉及知识点:字符数组、查找算法、字符串处理函数
$ `& E( Y( D' t5 N% x2 U#include<stdio.h>
! L& ~4 y# M; E# M) P+ N$ |4 g3 w#include <string.h>" z- @% T. h  P- x! d
int search(char s1[],char s2[])3 @$ t1 r7 H% f+ v1 U8 @
{$ {  q5 O" d7 r; j, y: C
int i=0,j,len=strlen(s2);* k4 z# d0 Z- m5 I2 s7 u, u
while(s1[i])
; o! [& r1 Q& y  r3 X, o- b$ I{
  |, ]8 W4 f( D+ T" hfor(j=0;j<len;j++)
' V% Q6 S8 c! iif(s1[i+j]!=s2[j]) break;" }& ], p6 z3 E3 M) I% h
if(j>=len) return i;
9 G7 M: l  W8 `else i++;  g( U8 F3 |7 E9 o
}# ^3 t9 Y! M/ ]9 n4 t) I
return -1;# @5 n4 z  ]1 J1 x4 K3 _) l
}+ a( e% D' P/ j$ F$ o
int main()( W" z  _0 S/ \- d2 ~1 H  Z# X# x
{
+ I- ]# T) Z, u- h; ^  fchar s1[6]="thisis";# Q) R, ?! R+ M! q" i& q7 {
char s2[5]="is";
/ V; O9 N% _6 z4 l2 }# I+ L! ~* n8 [printf("%d\n",search(s1,s2));3 ^  N) v3 M2 C/ ?2 H
system("pause");
. B/ }$ S) d3 f9 ]" _return 0;) F6 ?) N; b7 U5 a
}" w4 h( {. h, J7 ~! Z8 o$ U
13、/*编写函数 replace(char *s,char c1,char c2)实现将 s 所指向的字符串中所有字符 c1 用 c2
& r: N4 F' `. E# U/ R6 x# g; W替换,字符串、字符 c1 和 c2 均在主函数中输入,将原始字符串和替换后的字符串显示在屏
6 ^1 `5 t8 o! G/ \( C7 x幕上,并输出到文件 p10_2.out 中*/5 q: T$ r  Y7 p$ p
主要涉及知识点:替换算法、函数、字符数组、文件操作
% T8 k5 D9 A1 s5 \' W( f#include<stdio.h>$ d8 a/ T0 C9 b* g$ \
replace(char *s,char c1,char c2), x4 Q$ G& H2 W
{
, g- M' x# p6 r( s% ]  H+ S+ ^while(*s!='\0')
8 P5 s' k' e8 F{7 z$ e# k+ U3 i* g
if (*s==c1)
0 e% Y6 w& s; z) O# O5 W*s=c2;
; q/ ]0 Y& f/ |s++;
+ T6 A( f/ v5 Y  }/ }}: @; P% P! J5 W' C
}
  o9 U# Q1 l6 a  p+ A4 E2 Z; lint main()
7 k5 y. w: t% C* z0 q  F{
  K$ o. _2 A3 O5 k3 y" i1 BFILE *fp;
3 \: S1 q5 m; C; c/ Schar str[100],a,b;
$ a2 Q6 V6 L' f; L' S# rif((fp=fopen("p10_2.out","w"))==NULL)
  o) H: T9 M8 m1 x6 F3 N" w: d{! j$ b3 Z+ W( H
printf("cannot open the file\n");' ]  L( ?2 m  J5 r' W
exit(0);- x) l2 C" S7 {- x
}
! y2 Y$ x' E, Q! r. Eprintf("Enter a string:\n");
- h- s( B: j9 n; Fgets(str);  e  R. k. w+ \: V! ]% O, _2 {# J
printf("Enter a&&b:\n");( ~2 Y. }4 l! B! x( X8 {
scanf("%c %c",&a,&b);/ e( u# U3 b" v# P5 p
printf("%s\n",str);
3 P5 V  T5 t3 ]% K# B$ rfprintf(fp,"%s\n",str);% F; g% q( H5 d- B, r
replace(str,a,b);
( ?4 t1 p7 Y  g# W  h! H5 Hprintf("The new string is----%s\n",str);2 ]" q; b$ m0 d" U( ]+ G) h- H
fprintf(fp,"The new string is----%s\n",str);. ~9 B0 Z& [# @, l
fclose(fp);, w% Q! p2 x5 x; g
return 0;4 j) L: u0 V( k
}
0 ~* _% g, E8 t14、/*用指针变量输出结构体数组元素。*/
# D( y3 t% [; @; ]' T- ^主要涉及知识点:指针与结构体、结构体数组的赋值、输出
0 i+ O2 Y2 T. M3 [#include <stdio.h>
7 v! g3 k) w9 u; I3 [8 \struct student- E, ?4 j$ o3 F' W6 c- @6 ^# h3 G
{
4 Q1 K, F1 j: T4 P3 }int num;
. ]$ ]" d: k  y' Y4 ochar *name;: w" o9 Y6 b: X& w8 ]8 p
char sex;
5 _# D( P" E) t* zint age;! i9 R1 ~4 m* P4 B
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou/ y  V2 \: [* `, @$ ]
",'F',19},{1005,"Wangming",'M',18}};
  {' [1 m; _* e5 o+ e' c# lint main()* f. w0 Y6 A) d) K
{
" J  N- t( T* D' hint i;
( _$ y# y# ^5 D+ f; C& f* `struct student *ps;
* ]* X4 Y. M  X4 N- ~- Hprintf("Num \tName\t\t\tSex\tAge\t\n");! w9 D9 G' C5 x9 E) y, C3 P
/*用指针变量输出结构体数组元素。*/" i$ \! u5 p1 i
for(ps=stu;ps<stu+5;ps++)
/ C. R$ v! ~. C6 f0 aprintf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);
$ [3 @5 o1 Q$ i% b) F; r, P# U5 L' U/*用数组下标法输出结构体数组元素学号和年龄。*/
6 ~3 u: c1 d1 U& nfor(i=0;i<5;i++)4 L$ O$ |" n5 |( p4 m$ m
printf("%d\t%d\t\n",stu[i].num,stu[i].age);
5 Q8 _. m8 _( ^. O; x! f' greturn 0;
8 S. ]  Z. M3 w. h}4 x( X  N4 X) w5 Q& j5 ~
15、/*建立一个有三个结点的简单链表:*/
2 I# \% x, i. @9 _主要涉及知识点:结构体、链表相关操作
9 c# ~4 \0 F/ i3 d+ W) @#include <stdio.h>
$ R# u% G9 l: x1 d3 Z: W. E#define NULL 04 P" g! y" @% F3 @1 p# \/ c5 }
struct student
) |( b$ _" R8 c{
/ g6 N1 @8 P( Hint num;
5 _; S! c; ]) h5 m! H* kchar *name;9 f, d) G; I0 C: l* [' o
int age;8 I8 z5 U! `7 t  ~
struct student *next;
& r% V1 o& m8 W; m4 ^};* P4 s& O, R6 u( S
int main(), C0 m; ~9 P& ^8 U7 r% a
{4 F* D% o( C! T) q6 Z( V
struct student a,b,c,*head,*p;4 W' _, ?7 b* u+ N9 P
a.num=1001; a.name="lihua"; a.age=18; /* 对结点成员进行赋值 */5 S" T% _  H' i# [! A6 W' \1 H
b.num=1002; b.name="liuxing"; b.age=19;
/ T* m! x+ I2 X! F; u; b1 qc.num=1003; c.name="huangke"; c.age=18;6 S, M' n6 E/ f- O
head=&a; /* 建立链表,a 为头结点 */, v, W1 O3 Y5 @3 o! c. W
a.next=&b;" \% u3 d2 c& p! k4 g
b.next=&c;
* _# M" a" p$ y, fc.next=NULL;
5 `8 `! P1 [% q( C6 Gp=head; /* 输出链表 */
* _& R1 j: y+ E( _: |  M8 [2 a4 O. Zdo{8 h4 `; ]# m* J5 S7 {7 \2 e/ K8 r! P
printf("%5d,%s,%3d\n",p->num,p->name,p->age);
, D/ K5 q  V% H# F4 E5 Z9 H/ up=p->next;
5 X4 |& W. d- ^* z, J2 k}while(p!=NULL);8 J/ M7 P9 f9 a4 }2 x/ h% b
return 0;% @! Z, K8 X, P
}
% @/ w6 p# Z" F; k0 _; p4 v% `+ `& ~& d6 ^. L! G3 ^5 B! ^

$ m- m, i. ?7 {+ f% ]

评分

参与人数 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, 2025-1-23 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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