鱼C论坛

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

C语言必背15个经典程序

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

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

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

x
C 语言必背 15 个经典程序& ?" C5 ~  I. j$ x3 S5 ^
1、/*古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三
& ~% t6 @0 Q' M7 |- {; n个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
# v- [! K) U& I( \5 O兔子的规律为数列 1,1,2,3,5,8,13,21....*/( I3 O, `2 L+ L4 ?% m2 t/ f
主要涉及知识点:循环选择的嵌套、输出的格式控制(可转变方式用数组、递归的方式实现)
6 q! `7 ~0 {: g0 Q6 G* C#include <stdio.h>5 K0 D" k- q' ~) |! j4 o' O+ R+ k! \
int main()
6 Y3 }( Y% r8 F3 [) {7 ~2 R6 [7 p6 A' O{
5 M; E' M4 }+ G0 ~* L5 W% ylong f1,f2;
7 ?1 V; W& _& v6 {- _6 Lint i;
: S: a5 v. a2 |% ]) uf1=f2=1;
# t) Q$ L, @1 S2 r! z' S8 nfor(i=1;i<=20;i++)
& G( Y! o+ M0 T0 R; n{
! S5 F9 E# E1 vprintf("%12ld %12ld",f1,f2);2 }+ A0 }5 N( X9 f$ |. |9 M  N" d' ]
if(i%2==0)
. }) G( B2 T" n/ e. Aprintf("\n");/*控制输出,每行四个*/5 I" r, J! l) E, Z
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
5 H0 `# Z( L# R) b! `f2=f1+f2; /*前两个月加起来赋值给第三个月*/  G+ o/ w8 L; G. A7 B( P0 l
}, Q. d4 T" K/ V, t( a/ P: B1 q
return 0;
. c) K$ z* P0 A; F0 b}
  p/ B" g6 p) I8 y2、/*输出 9*9 口诀。共 9 行 9 列,i 控制行,j 控制列。*/
; o# ^( }8 Y$ W$ }0 p, M4 V: `主要涉及知识点:循环嵌套、输出的格式控制" f, Q! B- n3 f
#include <stdio.h>
) q& q  t2 ^1 O7 ^int main()
5 M- B% h" d! ?2 ?{
9 }* ]( Z' J! K  U7 w9 eint i,j,result;! T- y- C8 |6 J) }" L
for (i=1;i<10;i++)
" L; B% z, R& B! j4 ^1 K' m{" d! h# ]" o8 B& J. E$ f* ~9 [
for(j=1;j<=i;j++)+ d& r: |& o6 u- ~+ P/ n) f
{
) B/ F/ `$ Z# X& o) Zresult=i*j;
4 P7 T- @/ i0 n! Pprintf("%d*%d=%-3d",i,j,result); /*-3d 表示左对齐,占 3 位*/' W! |. C: u1 X; O
}
8 F. D# c8 D' {" [9 Xprintf("\n"); /*每一行后换行*/. i$ _1 l6 @7 H. j  R/ Z5 C
}  h+ n0 i( m6 b. e! k
return 0;, W, ?/ Y! t) h* |
}
" [, b9 {7 k9 e* I8 f9 E/ R1 u5 a$ y3、已知数组 a 中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数" e! Y9 H2 W+ x5 B2 L
组 a 中,插入后,数组 a 中的元素仍然由小到大顺序排列*/: l$ g0 \, P. u" W) U" M+ @
主要涉及知识点:一维数组、插入算法、数组元素的移动
5 J1 C6 y- I. w8 @; X#include <stdio.h>
9 s) m/ r' N% y! n" d& p* vint main()
* ]' p9 A- q7 a: q{- L9 q$ `0 N# C
int a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从 a[1]开始存放数据*/) v6 u1 \4 M8 H: ?  O
int x , i, j=6; /*j 为元素个数*/
2 k/ [& K. I+ B, h  S6 nprintf("Enter a number: ");3 r; J! @2 ]  B0 G, A  s
scanf("%d",&x);7 z0 {1 a- B& L# ^/ A. g
a[0]=x;' k# h' ^3 e4 Z& j$ e
i=j; /*从最后一个单元开始*/* ~, l$ V& W8 _9 Z5 m  a: K
while(a[i]>x); ~1 i: r7 X' @& C/ R9 {& Z4 r, d' \9 i
{
; i; n5 @3 z+ z" qa[i+1]=a[i];
& S  L+ D' W$ R  yi--;3 j8 k: f' s0 |- S1 k, R+ W( j: c/ z
} /*将比 x 大的数往后移动一个位置*/
5 @5 N0 c# [! S% N! O& i/ H( ha[++i]=x;
% w. t" M# G2 q4 O9 O( {5 o/ nj++; /*插入 x 后元素总个数增加*/
2 H: p' w0 g6 pfor(i=1;i<=j;i++)
$ \/ ]) b- H+ k! [. @* ^( b& lprintf("%8d",a[i]);
) P& |( b6 q# w3 Cprintf("\n");
; q/ H/ Z- c( L4 t) y8 M/ vreturn 0;
: c2 O3 T+ ]7 Z4 u% Z* e}; U# i) y7 {0 B5 ?& t/ M( D" u
4、/*下面程序的功能是将一个 4×4 的数组进行逆时针旋转 90 度后输出,要求原始数组的" {9 N& j0 ~! @' R9 M- }/ d* C5 I
数据随机输入,新数组以 4 行 4 列的方式输出。*/
/ F. v2 H! ^" T, i+ H2 d, O主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制
$ ^7 G; ~. R. i! d, X+ o% a#include <stdio.h>
& n: Y' V# j; K7 j7 ?6 K) k; Xint main()
$ M# k7 Y2 Y. w9 `+ X{
* h8 [8 z+ J% K* gint a[4][4],b[4][4],i,j; /*a 存放原始数组数据,b 存放旋转后数组数据*/
# o( D3 M( }0 q; Dprintf("input 16 numbers: ");, W7 V1 Z5 }- U% V% P
/*输入一组数据存放到数组 a 中,然后旋转存放到 b 数组中*/
/ E( R& r1 F! R- s+ Vfor(i=0;i<4;i++)1 g0 [+ [9 w& a; }
{* ~7 d+ i- n+ _7 j- }
for(j=0;j<4;j++)
1 A" n( l. U2 t1 F$ `{
4 g* p4 b0 X4 P  P  {scanf("%d",&a[i][j]);' q+ q" u* F8 N  Q+ a
printf("%6d",a[i][j]);
( Y6 o# V) j  ?0 ^3 E8 C7 ^b[3-j][i]=a[i][j];& a) U6 D  G" w  j0 E% \
}
; c* M% f/ x1 N' xprintf("\n");9 e( L& b/ ~" W8 a
}) [1 P) @( w7 e* S
printf("array b:\n");
5 k" l5 S* z7 z4 E$ Y$ j  `. @+ p4 ]for(i=0;i<4;i++)# t  d" ~& X! ?3 o% q5 t
{
- W; x3 [1 ~+ Ofor(j=0;j<4;j++)
7 m5 e8 M9 {/ Cprintf("%6d",b[i][j]);2 D  Y, r& l) m0 B) g7 {8 u2 ^
printf("\n");
' o/ N; @) ~! c6 f) [( m}
* |7 z1 Q3 V5 X+ xreturn 0;
% f0 X. E, _& M/ L5 G}
$ l. G7 k+ F) q! ?5、/*编程打印直角杨辉三角形*/0 ~0 @1 ~( J( f; T
主要涉及知识点:二维数组的输入及输出、循环嵌套与二维数组的结合、输出的格式控制; Q. ~: j1 k1 |& Q) P
#include <stdio.h>- R3 [$ f: ^, K
int main()
% R7 V- H) Y4 B$ F& r1 K1 j4 y{' W4 F2 o- ^5 r8 F) Q; I/ L
int i,j,a[6][6];8 o3 F$ h. \* N  S6 N
for(i=0;i<=5;i++)
6 [# u7 y( v! T. h4 Z  y{" d* u* ~5 T6 @8 H
a[i][i]=1;: y6 Z/ V9 e1 w8 h& ~( c
a[i][0]=1;( z$ V7 Q2 y# q$ Q' b9 O
}
$ m0 n2 C' y4 c" r' ^1 @for(i=2;i<=5;i++)  ~* C6 j; }4 y* y' x
for(j=1;j<=i-1;j++)0 ]2 G( k' i5 _! k% V4 \, r6 N
a[i][j]=a[i-1][j]+a[i-1][j-1];
& o8 k# V1 c$ F5 b4 v9 Nfor(i=0;i<=5;i++)
" o# t& @0 Z0 d2 x{
, L. v6 G4 |# N0 ]for(j=0;j<=i;j++)  n; d+ L1 B; Q, G% u% C
printf("%4d",a[i][j]);5 c' T* X2 X# M* u0 A  S9 J
printf("\n");. Q' s; Z8 _3 f# `
}
7 p% p9 A# S5 G; z& i1 w- _+ Breturn 0;
: g4 `3 \, O# G# p- B8 [* O' _}
% B. q/ g# C+ j3 p& P8 S, K5 [6、/*通过键盘输入 3 名学生 4 门课程的成绩,分别求每个学生的平均成绩和每门课程的平+ x3 B# w+ n: @
均成绩。要求所有成绩均放入一个 4 行 5 列的数组中,输入时同一人数据间用空格,不同人
( Y7 {) U- ]+ d  ?用回车其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总( S4 T; E9 ]) ~# \% V5 {
平均分。*/
' X$ v# @. v( R6 }主要涉及知识点:二维数组的输入输出,及相应的处理
3 z# t. e$ F. A#include <stdio.h>
3 U4 u* e' ?* {#include <stdlib.h>) i( Y, v& i, H2 D8 W" H
int main(); M# l; K2 R; n/ L% U
{$ V# R) t% Z2 Y4 y( ?
float a[4][5],sum1,sum2;
8 ~) a9 `9 B) f- G8 j3 q% o: e0 y2 _0 Kint i,j;
1 {6 V2 r& @/ n+ v( ]" N& ^for(i=0;i<3;i++)) H" O) M  A: |. ?, [+ |1 T
for(j=0;j<4;j++)8 L8 M6 \2 Q$ t4 v# \
scanf("%f",&a[i][j]);( R3 t' e. E% h6 p5 y# B2 M+ f+ y
for(i=0;i<3;i++)+ B8 M8 Q# U' n. j' k# X8 J
{; b; K2 i8 C3 h" Y. t
sum1=0;3 v: |' R* t* S7 s! H3 D7 p
for(j=0;j<4;j++)* I* t: Y( F! r* z' N/ t7 I
sum1+=a[i][j];
" s* ]% J/ x. a- {/ w) Pa[i][4]=sum1/4;6 I8 ^  F& V# M( M9 g) o4 M
}
% F2 |% F$ `' c- U( A' lfor(j=0;j<5;j++)+ L. q+ H) U' T, \
{/ I9 R( W/ ~4 f9 O
sum2=0;, O4 y6 Q5 }# n: k- z0 M2 D
for(i=0;i<3;i++)# V8 m2 p5 f1 L% u3 ~" L
sum2+=a[i][j];
2 m# G4 L" W! H+ A/ M, G3 }3 Ba[3][j]=sum2/3;! \- b; S) V4 F  `# V, W) g6 d/ v9 B
}
# k2 ~  u7 s6 U" d- h+ e) N% lfor(i=0;i<4;i++)/ B% j  C7 w: ^- L. ~- [  h$ {
{" Z( ^* y4 T6 q) l
for(j=0;j<5;j++)' M) t8 S" L$ t. ?  b8 h
printf("%6.2f",a[i][j]);( i& u) d: i7 x: I
printf("\n");" N9 f0 J! r% Z. Q3 \
}
9 N, k( ~% L4 O! Q" Lreturn 0;
) Q2 h. w, f8 l}- }0 g/ Y+ _" l
7、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全% r8 c  l1 N7 n. H" K& b( u
相同的字符串。*/
+ n. Z: C9 O8 v- ^主要涉及知识点:字符数组的输入输出,及相应的处理1 V2 L/ h0 ~% A6 {/ G
#include <stdio.h>
+ F, l0 C: J, {1 H2 j0 g#include <string.h>
0 ?; n; K  X# \/ g! W9 L% fint main()
0 a3 }1 n+ x7 E! @, H{
+ o  t; i: d% Hchar s[100];
( l- L6 s% y! O# y8 O$ w; e$ mint i,j,n;; s: P3 y/ i# k- @
printf("输入字符串:\n");5 D) k8 Y8 Q: F7 b: E: \9 T0 G
gets(s);4 p/ C+ ?  L1 j  j# J
n=strlen(s);5 z; Z- U  e) H  Q" y9 h
for(i=0,j=n-1;i<j;i++,j--). o+ f- D' Q: Y2 s4 z- K% M5 O
if(s[i]!=s[j]) break;* d: b. s' o* g% c
if(i>=j) printf("是回文串\n");
8 p7 P& q1 Y: X' selse printf("不是回文串\n");
4 ?' \% g7 g6 E: ^$ [3 |% dreturn 0;& k$ g' W0 E9 h7 p7 m5 p
}
: S0 `1 V# a5 h0 m9 {% z8、/*下面程序的功能是从字符数组 a 中删除存放在其中的字符 c。*/9 h6 v0 h( U3 q
主要涉及知识点:字符数组的输入输出,及相应的处理: U' r' \4 k7 }9 M' Y' W
#include <stdio.h>6 w$ O" p$ C# |/ N) X7 p
int main()0 ^* z8 R+ J' J/ y+ {8 ~) Y" w
{* ^0 D8 W& M0 @. t/ G# t
char s[80],c;" c2 c; v( F: P, E/ v
int j,k;  T" Z3 T+ v8 V' a% N4 Z- E
printf("\nEnter a string: ");  ~1 u3 m9 T6 l! D. V& O
gets(s);
6 w4 f! P0 A* s; t9 rprintf("\nEnter a character: ");# u, @$ f/ E& h! \, F% R; s% e0 t  D2 p
c=getchar( );) F' r3 j2 U0 R2 L" ?
for(j=k=0;s[j]!= '\0';j++)
, S5 {5 A; t: i5 lif(s[j]!=c). ^1 V9 }2 s$ w- |" \$ \( @! ]! k
s[k++]=s[j];2 M6 H+ _5 b/ b
s[k]= '\0';
# Q+ C! M' I- x4 z& Hprintf("\n%s",s);5 O) {! E% r- q& j* O- Q0 L
return 0;3 U  w) I: S; d- D
}
# ~: I2 V: e! K9、/*完善程序,实现将输入的字符串反序输出,如输入 windows 输出 swodniw。*/
" m1 e4 S- Z* z8 g- i; {2 ^主要涉及知识点:字符串的输入输出、字符串处理函数、指针的用法、文件相关操作, s$ G. B% H  z$ V- x# K" C" w: P
#include <stdio.h>
7 R- ^; E0 s4 @#include <string.h>+ I$ i3 @6 q$ l1 F
int main()
1 Z8 e$ V' W# J8 ~, C{
7 P& n1 w7 L9 [# vchar c[200],c1;( S+ m& d6 T9 U( u
int i,j,k;
" \* H* N9 d( ^: _" x( s. C, Qprintf("Enter a string: ");
: s4 @8 F8 V$ Y* {! `scanf("%s",c);6 o: `2 ^4 c( Y5 m; Y3 r( H$ w
k=strlen(c);
# `6 @; ?0 c+ S9 Z' m! U8 Nfor (i=0,j=k-1;i<k/2;i++,j--)9 n7 W/ }! O6 A& j
{( u- `; m; B' \* U2 r+ G! Z
c1=c[i];" @& V" j! G  @
c[i]=c[j];
: ?& P6 l/ J* w2 B3 e: W6 J3 _c[j]=c1;
* x7 h3 [5 P" F& h$ x; B}
3 B1 w: U; t0 R& s0 w3 Oprintf("%s\n",c);3 N& L" g4 x4 R0 |! Z
return 0;3 U1 j  e8 o8 s# c2 s8 f3 m2 U# G
}2 T8 E/ B' A+ a* c( O
指针法、文件相关:
, i- Q" x5 \3 H" d. [#include <stdio.h>
" D0 P; l% e$ s1 ]/ cvoid invert(char *s); ?! j& J' u1 Z& T  @
{
9 Q: r. k- \3 t% i" l+ Y& Xint i,j,k;2 ~$ y- K6 y( C" m3 L' W. q
char t;
" @# z1 ]& i2 f5 Ik=strlen(s);
7 ^9 C: G; F; a6 V  k) h7 \" N2 b" Gfor(i=0,j=k-1;i<k/2;i++,j--)" n. V( X  }# M
{0 w& L! [8 h1 r7 w
t=*(s+i);  l& F! W3 e9 r
*(s+i)=*(s+j);$ y; t" u7 T# Q1 v. ~
*(s+j)=t;% r0 G( e; o( d
}- u! f; ?& |  K7 ^
}
2 O0 q! Z7 A! d. ]& Hint main()( |6 M; I2 _2 |% T: a) ]
{) F! n+ \: q; C# b/ h4 L
FILE *fp;
3 n* j% o5 F0 D; Y9 T8 hchar str[200],*p,i,j;* P/ h' g4 K& |# l0 d& H
if((fp=fopen("p9_2.out","w"))==NULL)
7 @& p9 j, T0 D, K{
/ \7 m0 E) o% X' B8 W# Qprintf("cannot open the file\n");& k; D; w0 i  T  ^) U
exit(0);
; n5 O+ w/ M) {! r7 D' i. s7 X" j}; S  V8 c3 K8 I6 r, d1 R
printf("input str:\n");
- f1 L' a+ z; u( h3 q2 ~gets(str);* y5 Q) H  x# P
printf("\n%s",str);/ {  ~2 ~2 p' j3 D  r' J3 @
fprintf(fp,"%s",str);
# D( {6 W  M5 ]; H5 m+ Sinvert(str);
- e3 \! q+ P7 Y% g+ X0 Tprintf("\n%s",str);
) }* [4 Q3 E1 gfprintf(fp,"\n%s",str);
$ m1 K5 q! o7 b5 M6 X% M7 ?fclose(fp);
3 i# m; T& ^+ }6 i2 ureturn 0;
6 V% S6 D: ~" y+ y; V8 Z  x" i}4 x& ?9 [9 j& X) Y: b" H6 s, X: h
10、编写函数 countpi,利用公式. |- Y7 ?6 V* \4 W0 m
&#61516;$ V. a' J, I& j  @
&#61483;
. B7 ?7 c4 P) o5 d/ w8 J) j&#61620;
% o+ o+ q6 z8 g% H4 ^; q&#61620;
) J4 l# _. q5 W. y5 b&#61620;. e9 D7 j7 r7 b7 @+ L4 O- f# Q
&#61483;" V: ~7 N9 b2 x% l$ h) g1 i3 g
&#61620;7 l& C2 c& S# ~* z. A* q! i  I4 t
&#61620;
4 z0 q9 s9 Y  s3 ]4 j5 i2 w, B&#61483;6 x: `- [0 Q" K
&#61620;* F8 F' E4 G( W4 u
&#61483;7 R7 d7 F' K/ l0 g+ d, ?3 n# Z
&#61483;6 W$ k3 T. |% _( O
&#61627;
' q( L% A- W0 X# O9' |, g" Y1 Z* z( g$ d0 m
4
( A1 v; l6 w/ ]# W$ O79 T  o0 g: p' u6 E# f. t' o
3
5 q; p0 P% h; b0 O/ r$ r5
6 K+ j/ {7 N$ X* p: b2
  x/ C+ z$ i/ {) n: e! P- R3
/ C# ?# d# _; `, p# s) ^6 I& u1
+ P5 v% k& m) |$ I' e! }1 K7 n7
0 o4 v6 E& l! C- q/ h" a3
. `; X! \% r* p9 U8 f5
4 h! V$ U" ^$ `: _" k# N/ v$ S! ^2! s8 p* v$ {; e% M
3
1 m$ Q) a' c& K' E! i0 G1. ~) j; t7 P: A6 P- Z7 l) K( |
5* a4 W/ i% m* Y
2% K/ x. ]; c. W0 i1 h/ `$ H
3; }' u3 K0 r2 d  G# i  h
1! J2 G) Y( b; V8 c' U
3# s  i9 S1 S+ B/ F$ w: p: y0 i
1
  z& a' {1 X( {1! X7 t) m) t8 D$ n6 z
2' A  ?; |) P/ }
&#61552;
% N, \; X7 [1 C  c( m) p  P计算π 的近似值,当某一项的值小于 10-5 时,认为达到精度要求,请完善函数。将结果显
1 w. {$ I5 B- Z4 l7 |) ?示在屏幕上并输出到文件 p7_3.out 中。. L  A% O( u( d# n- f
主要涉及知识点:函数、实数的比较、相关公式用程序实现的技巧、文件的操作0 d% \' @, N% k. G9 k9 C
#include<stdio.h>, G2 q% H8 c. |3 ~5 A0 h- t
double countpi(double eps) /*eps 为允许误差*/
) j' u# }2 h2 |* e/ p4 }; n+ L8 [8 {{5 V. w5 `4 `% ]# m
int m=1;
/ ?: |7 b: ~3 l! R- |3 _double temp=1.0,s=0;; r4 N9 z& J. x: f7 y2 F8 }3 e+ L
while(temp>=eps)
! B  d; l* v' a5 |{( p) s- ~0 O, n/ s8 U9 ?
s+=temp;2 G+ m; Z7 h" {: g) @8 {
temp=temp*m/(2*m+1);
; X& X, T* d" X" Hm++;' l( ]$ o& @4 ?
}
( m/ e! C- v( _( ^+ i9 v$ H* K) greturn(2*s);$ r2 [0 v3 }8 J9 {; w9 v1 \0 [
}. E* e+ Y. k6 {% c3 O
int main()
4 W& u' J. ?/ x6 U{
( n2 ?0 D5 z2 _$ x. }FILE *fp;
: G; F! z: c3 V& \' C; f, ^! fdouble eps=1e-5,pi;1 h' X. D2 Y, g0 U2 k5 F0 b
if((fp=fopen("p7_3.out","w"))==NULL)  J0 r% a# H7 D: D& V) s
{8 q* S6 j5 b% \6 k
printf("cannot open the file\n");% w9 {2 t: S! f1 T! {# b/ w
exit(0);
+ o, b; M: h! Z}; `! z( g* ]( {
pi= countpi(eps);- o6 T& ]+ F+ A; J; Y/ M1 z
printf("pi=%lf\n",pi);3 `. s; i% c$ ^% s$ A
fprintf(fp,"pi=%lf\n",pi);6 D# K! w' y' M8 [) t9 U
fclose(fp);
, W$ |/ I; k: x: b! t9 O) D: a! mreturn 0;$ S9 K. P  s, D( z4 f. P$ S( C' f
}
5 d  t' v- M7 z7 t. d3 h11、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件 myf2.out*/
) B/ k7 p* B9 a7 n1 g! Q+ [主要涉及知识点:函数、排序算法、循环嵌套、文件相关操作
. b3 V& R% K9 h6 @#include<stdio.h>. E4 ]9 A6 H! N  d( X1 R* i
void fun(int a[],int n)$ W$ b& r9 n6 L8 Z) i; `4 Q
{. Q/ D; |/ ^- ]5 C# U' l
int i,j,t;, C6 R. [( K$ N4 U+ E: {" e; M
for(i=0;i<=n-1;i++)9 t5 `% x7 k  F/ O) W2 A/ l3 T+ \' v
for(j=0;j<n-i;j++)9 f; o7 K4 |$ S1 }4 N4 l9 p5 s+ i
if(a[j]>a[j+1])
1 ^5 @: R' G- p) j1 s4 O{
5 }2 b) ?% g, ft=a[j];2 @9 o2 A. w' w0 t
a[j]=a[j+1];
* O. y" l6 a- U2 I9 v* j% Ia[j+1]=t;/ F& Q- W1 x' `$ Z3 V
}" g* Q2 y5 J4 {2 {' X: ?1 d* u
}
* ^7 J3 O7 ]( f2 u( ~int main()
0 a+ l: P3 B: \& Q{
4 ~" L; |3 U3 m0 ]. Iint a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;: i9 O% z3 N, n" @% d/ ?( C+ N
FILE *f;" `/ K: j& S; _$ |  q
if((f=fopen("myf2.out","w"))==NULL)
: y# @6 `  r6 l5 B0 |printf("open file myf2.out failed!\n");
, H3 H: F$ n8 hfun(a,10);
) |& [) E. a4 Z! B- p, ^5 Cfor(i=0;i<10;i++)
0 H  X% w6 N8 j3 g* M- l{
  {6 \. ~  E) d: |6 pprintf("%4d",a[i]);: _- A7 w& X6 L( e6 w
fprintf(f,"%4d",a[i]);
4 G1 {8 o$ o2 O+ N}
# p! X+ ]$ P" `* Nprintf("\n");
9 x* V; g4 N# P" cfclose(f);
! \0 Z$ s% t  J% yreturn 0;
4 m/ q' Z+ @# V0 C' Z+ P! l}
2 W1 b6 ~9 I3 \- E12、/*在一个字串 s1 中查找一子串 s2,若存在则返回子串在主串中的起始位置- R9 Q' Z1 v2 h
,不存在则返回-1。*/8 O5 q4 _0 r& |( l: N  Y$ k
主要涉及知识点:字符数组、查找算法、字符串处理函数
! t) x% Q7 o) T0 ~; P' n2 X) l& @#include<stdio.h>) H$ S6 l1 b# O* d. [$ }* i: D6 S
#include <string.h>  r5 Y+ G5 {- m- _3 Z$ T5 X7 [2 j& L
int search(char s1[],char s2[])
2 W  x' x( `! g) y0 |{7 D7 s( N: ~7 m- W, _; a
int i=0,j,len=strlen(s2);9 j. s: I7 h+ J3 j- a
while(s1[i])8 K. U; ?% e" d: P% x6 G* K
{+ n# ?# t/ @5 F- _2 e
for(j=0;j<len;j++)
5 P. F! p. t; Hif(s1[i+j]!=s2[j]) break;
9 O+ p+ Z4 |' X' |* O% y1 C3 ~if(j>=len) return i;
/ }+ ^& q. @4 b$ n- Q+ kelse i++;3 R# e* d  F7 \' u" J7 }: S) @
}9 v& F' G4 ?: {' d* Z
return -1;+ c: z/ ]: n3 N, p, A; j. `
}
3 H/ W% {: ~: B/ p8 I' o3 dint main()
$ v' H7 o8 z$ D7 m. q{
7 g/ s1 ?  p4 y/ h. U+ Vchar s1[6]="thisis";
% i7 I  |2 G* S9 D+ o4 I6 I6 A, [char s2[5]="is";7 F9 X. n7 _$ \+ j! s8 R% |9 s' O
printf("%d\n",search(s1,s2));* h$ u) B; Y. A( R) h
system("pause");5 t/ K- N  ~8 x. ~- ^8 s
return 0;
% L) b: G" O+ P# j}
' R1 L, I  l  U: Z1 E6 A6 E# S13、/*编写函数 replace(char *s,char c1,char c2)实现将 s 所指向的字符串中所有字符 c1 用 c2* O- `7 k4 E4 _8 T4 i* f6 f
替换,字符串、字符 c1 和 c2 均在主函数中输入,将原始字符串和替换后的字符串显示在屏; }6 c+ i4 B% U" B
幕上,并输出到文件 p10_2.out 中*/3 a! G4 D  C8 J
主要涉及知识点:替换算法、函数、字符数组、文件操作
" c9 {* A% f4 |! p! x+ U#include<stdio.h>0 @0 `0 A# M: ?0 e, x
replace(char *s,char c1,char c2)
* G' q) V1 {/ P+ T{
2 b. o5 T3 j& \# x# C( p  Fwhile(*s!='\0')0 a8 G$ B% h6 @6 o+ z
{! s* k/ J1 s3 e6 N0 N
if (*s==c1)
( p% J2 s0 P+ J: e* C*s=c2;. V3 N. f7 Z: U( I2 u% s
s++;
- B7 @' r) E& F( j9 K' j' z/ m}
; ?0 B) b% I1 S, \5 n}
- m6 r; b# A" S+ [0 m# yint main()6 y8 S1 m# n9 ~5 i8 x  F( K
{
/ p) L- H: Q. q3 I0 @9 A! aFILE *fp;, J2 L$ d9 m" X. k% G
char str[100],a,b;
; M1 r6 R1 ~/ I3 t# Z! Jif((fp=fopen("p10_2.out","w"))==NULL)
3 n5 @  {7 @6 M5 W; {  G- D{% ^; i4 I# N" Y1 ]- y, D
printf("cannot open the file\n");* P0 ^1 d" ?1 J
exit(0);; E# ?! @# u5 _9 e- K8 ^" @
}
$ u5 L' ^* D0 e* eprintf("Enter a string:\n");
8 }8 g1 f; t5 O) a) mgets(str);; C! G% ]) N! A
printf("Enter a&&b:\n");# S9 o# C# w0 u6 P" v) A
scanf("%c %c",&a,&b);) ?6 \0 R( I5 J2 X# C: E- u
printf("%s\n",str);
) U: K- }4 f2 u0 W3 j+ p% B. N& P% Rfprintf(fp,"%s\n",str);
$ G; h* [" s4 S0 D. Kreplace(str,a,b);
% Y& `" ~  v8 Q" H, t! n1 jprintf("The new string is----%s\n",str);
0 _% _) E3 p  c/ f* n4 Qfprintf(fp,"The new string is----%s\n",str);
: A4 W' C  e+ n! h* a7 nfclose(fp);( G$ [/ T# a  d
return 0;
! [- \, D# C% k# U, W/ X8 l}
- l1 g0 f4 `8 J$ u- E14、/*用指针变量输出结构体数组元素。*/
" j6 V9 J5 V: r1 p, d; U% p主要涉及知识点:指针与结构体、结构体数组的赋值、输出6 p6 [# M- A; C
#include <stdio.h>$ H; n# E6 }( r7 L. @9 c
struct student3 k, l+ @* \8 {0 V
{
8 ^3 N" f1 c1 S7 n" g( pint num;& L  V3 X: y- L' n4 e( f2 H
char *name;
0 t9 \' e# t, R; f" p7 h( Achar sex;3 V/ B& T/ \9 b: w6 _* v
int age;
/ V# L- C. T2 m* L: G2 B6 b- V}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou
$ k! c* }+ L8 Y7 ]! b' Z( v",'F',19},{1005,"Wangming",'M',18}};  O7 Z1 P: `# Y4 T. E4 l
int main()0 B1 m* b* j. F+ j! E8 [3 d
{
4 V: K# I# H7 g# Q3 @int i;
6 z: Q- r- \0 Cstruct student *ps;
2 ^3 ?  P# }: {- N1 Eprintf("Num \tName\t\t\tSex\tAge\t\n");
4 t2 H* x* \7 a) D# R/*用指针变量输出结构体数组元素。*/- g: b6 D3 C3 k% ?! ~4 N
for(ps=stu;ps<stu+5;ps++)2 I0 |# Q& g- d1 y# W
printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);
. g- g) L3 a5 O5 I2 a/*用数组下标法输出结构体数组元素学号和年龄。*/
& {* d- X$ d0 L2 d& kfor(i=0;i<5;i++)( o7 {5 Z1 S1 j
printf("%d\t%d\t\n",stu[i].num,stu[i].age);" B0 }) k9 R( u2 z$ m
return 0;
* E9 R4 u! E, ]$ I# @- z; t}+ i5 a' u7 b4 H" _9 K5 K7 s" R
15、/*建立一个有三个结点的简单链表:*/  Y2 S8 \% K5 Z. d/ B# ?9 ~
主要涉及知识点:结构体、链表相关操作
6 J( u# \! J: a9 C, b% J4 G5 c#include <stdio.h>
' z6 O/ T$ c3 b! j* s* F" P#define NULL 0
5 A8 U5 c' x" W  D7 mstruct student
# D, f- s* n7 l2 w2 |{/ k8 W) [2 i8 ~5 q
int num;
6 k8 d5 c' s0 m% zchar *name;% {: l9 q5 F. X
int age;
4 Q$ s+ L4 h+ `+ dstruct student *next;; W: u# k0 v: H) Y4 W0 N  g
};$ z( p2 _* ^( e& I% M
int main()/ S& k3 E+ J% h. i4 y* O$ C' L" t. M
{
" v# \6 m+ K" @: hstruct student a,b,c,*head,*p;8 O% K8 `4 R7 {* K1 d
a.num=1001; a.name="lihua"; a.age=18; /* 对结点成员进行赋值 */
  C. l9 l5 H1 _+ H9 Mb.num=1002; b.name="liuxing"; b.age=19;
  [8 M% {% |- }  x3 s# Qc.num=1003; c.name="huangke"; c.age=18;- Z- R( m3 p1 R
head=&a; /* 建立链表,a 为头结点 */* Q3 ^8 N) @1 X6 e
a.next=&b;& ~: a8 w* R; I1 w: ~$ h
b.next=&c;- B" l/ k9 f6 ?2 A; o1 o% Q$ e- \' @0 j& o
c.next=NULL;
5 ~5 ^8 M* H& Np=head; /* 输出链表 */% n( m% p, B  M# r2 W
do{. U: G; w! h% X4 G" M9 B
printf("%5d,%s,%3d\n",p->num,p->name,p->age);
/ s$ Z- M1 a; B' I+ Vp=p->next;
# _/ T& |7 M8 y}while(p!=NULL);/ T0 T' j* Q$ ~
return 0;/ B' C! K8 `4 w
}
4 s: |9 ~! X3 |' [6 p
7 K( ^- S9 M9 v6 E& B' B; p# [6 B# B9 p2 Z: A

评分

参与人数 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-12-22 09:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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