EDA365电子论坛网

标题: C语言必背18个经典程序(大神请忽略) [打印本页]

作者: 奋斗者    时间: 2015-4-19 18:16
标题: C语言必背18个经典程序(大神请忽略)
9 I  \9 r" m$ _! \$ c7 R
1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/( n2 T7 ~+ e6 j$ j$ \1 E! f% A
#include "stdio.h"0 B2 T/ s9 c4 _, A2 f) T" g
main()
# d3 e/ B, P3 Q{int i,j,result;% L3 W) |$ _" D$ x& K: u/ V
for (i=1;i<10;i++)& k% t8 O! w# ^
{ for(j=1;j<10;j++)3 Z/ \3 g" k( @' ~. F
     {( \; ]  |7 }: U5 A3 G
        result=i*j;
# d. j# B9 L. P        printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/: {; F; E& z9 b$ S8 s5 p" _4 B
     }
) R4 M( M  V% s  R( P2 Q; z. \- n    printf("\n");/*每一行后换行*/& E! Z' c* J7 n3 N
}7 }6 k3 Z  S5 b& L$ P8 p- b
}
" b% h9 z  f- z; h# K- c% O7 a
  _) x8 L* k9 v3 p' v, w8 L6 p# L2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?* x) i; Y8 t' R3 s5 D$ S
兔子的规律为数列1,1,2,3,5,8,13,21....*/
  q) j6 [- H* ]: P# imain()  m' V! I" G" Y0 [- g+ R* k" q
{. _. c  `3 M9 X. [* E- W3 Q
long f1,f2;
; s8 d2 ?& J# Iint i;
+ s7 M5 A& s6 y. zf1=f2=1;
/ [! \) s0 r& T" afor(i=1;i<=20;i++)
4 \* s: H# F7 t/ t  t# g{ printf("%12ld %12ld",f1,f2);0 u7 l! h+ Y) _0 \  w- I; R
   if(i%2==0) printf("\n");/*控制输出,每行四个*/
* @/ C( d7 @3 [- N   f1=f1+f2; /*前两个月加起来赋值给第三个月*/9 U  `. u! m$ A" X0 l  n: D* r) @9 n6 o
   f2=f1+f2; /*前两个月加起来赋值给第三个月*/' H+ J% g8 r9 v8 S+ j9 Z: P* A
}
6 }6 M& p4 k( h0 I' b4 }8 \}: G6 N* o% p) u7 h: z3 G

. u2 G' o+ _$ I8 f9 ^3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
* b+ z+ }* {  a0 E/ o+ x! J程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
: R4 F$ F1 j( Q$ y% N3 J1 x     则表明此数不是素数,反之是素数。*/
4 U2 p4 m% {+ \; C6 O- N! P#include "math.h"2 K4 B' T" E( ~
main()2 O7 t3 ~( v7 T9 i% Y
{' K$ p9 U9 N& F6 e
int m,i,k,h=0,leap=1;
. t4 v' Z/ [5 Oprintf("\n");
+ G9 k  d* _% x% B6 F& xfor(m=101;m<=200;m++)
+ w. y# n: w* p$ B { k=sqrt(m+1);3 ?! y( p- E5 c
   for(i=2;i<=k;i++), J9 P8 x8 k/ ?5 `  C) @
     if(m%i==0)+ Y) K7 s' ]& g7 ]" |* T
        {leap=0;break;}  m9 e" L; j1 j7 t, V2 t( u) l
     if(leap)    /*内循环结束后,leap依然为1,则m是素数*/3 {! s# u- E1 H# j3 u/ v$ X
        {printf("%-4d",m);h++;  j  A5 k" y4 ]# G
         if(h%10==0)# z6 o- e" |: v/ c3 F  T3 w$ I
             printf("\n");! P8 N7 \' H% h2 J+ x# X  x
        }
9 Y' q0 G. Y" w3 }0 M' n0 i   leap=1;
: u: z- \" V4 D# N }
: m' S: ?- ?& C4 Cprintf("\nThe total is %d",h);
3 c( }2 e4 v5 E& j- T}
& s# `/ j& G! y% v' R7 C* S3 h1 G: v
/ Q# c; N, Q* b1 P4 G7 g* [4 ]4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程6 U2 S8 R1 x+ A* O
   找出1000以内的所有完数。*// i8 B. F: L- o- i. `/ O
main()
, w. s0 h, Z& |% }, f/ d{# @% `: T- ^9 ~4 T- J
static int k[10];  w5 D% s' m& d
int i,j,n,s;
0 T9 d0 }0 ]/ r- d1 p1 {" Lfor(j=2;j<1000;j++)
5 A: u, B" W! B- ]* [! v  {
6 l3 p( p( R* v9 {7 P   n=-1;
$ N- t' F( A1 ~! O  I   s=j;
$ H( ?0 r. \+ F' i) @! ?( s- Y$ k   for(i=1;i<j;i++)+ Z8 m( s. l! k% ~7 A
     {if((j%i)==0)( h% B. n" s$ o) V7 E
        {  n++;
( s! [/ O( x5 V6 a0 @           s=s-i;
4 ~) \9 J/ ]3 ?; b$ V, e           k[n]=i;5 [' X4 E0 l( I# K! ]9 B
        }& U7 S9 b/ B1 I1 O8 J: g4 W
     }' g$ Y; e+ E+ u9 h
if(s==0)
' K0 Q  [0 u0 Y- I8 C$ N {printf("%d is a wanshu:  ",j);
1 P+ k8 h8 [8 ^$ ?/ Y  for(i=0;i<n;i++)
. l6 B! W1 K$ A7 [# z: C* i      printf("%d,",k[i]);( H- w* `5 y4 i" ?
  printf("%d\n",k[n]);9 Y+ Z7 ~; _" o2 k+ ?4 U
}! m! q& H. J1 I1 |' C5 s
}' Q+ c: O# S0 Z% @6 U0 ~
}
% S% b3 F# {9 v+ ^5 m% i9 \& x, D  d. k8 a5 J. Y) W
5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,. m+ v! M; f: j0 j/ p7 ?5 h9 W8 u  D
请在空白处完善程序。*/
1 R' c+ _4 L2 W6 Xmain()/ H* P: O, i. t- m
{  int  a[4][4],b[4][4],i,j;       /*a存放原始数组数据,b存放旋转后数组数据*/+ h/ d! @" ^& o2 }3 E" a
printf("input 16 numbers: ");
+ J$ E2 i$ D$ O( }7 B6 X7 W, o/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
( {. o  R5 k! l4 \$ F$ M3 x for(i=0;i<4;i++)* D8 D' b( z# @: {
     for(j=0;j<4;j++)( s; ?$ X; J1 J
     {  scanf("%d",&a[i][j]);
8 f. W8 S# h, i8 F        b[3-j][i]=a[i][j];
6 I( |( N$ J. l+ j      }* v, i' a; h+ e/ G
printf("array b:\n");
9 O, W* _8 u3 \ for(i=0;i<4;i++)7 n7 m. T1 ?' o. [
    {  for(j=0;j<4;j++)/ J. E2 S& N( ^6 r  L
       printf("%6d",b[i][j]);
$ a& I& o4 J1 i! V       printf("\n");% X# @$ I2 |6 h# V6 J* s$ i' }1 x
     }
! [- h- S) I7 \; V9 V) b- T}
8 H( u& ^% \" {6 ?1 P. Q% W
1 U4 U" ], t, S- E- D8 y% T6、/*编程打印直角杨辉三角形*/
. P$ x; J% ^. ?main()
# S/ q$ x8 g4 e& r# J5 P{int i,j,a[6][6];
( B: E9 q- s; }: p5 nfor(i=0;i<=5;i++)& S1 ^2 c4 e9 N2 O( ]/ T
{a[i][i]=1;a[i][0]=1;}+ S1 k) j3 ^' e
for(i=2;i<=5;i++)
  S' D" T8 O% s: `9 R4 J  for(j=1;j<=i-1;j++)
) F5 O6 t8 f+ o7 o  Q   a[i][j]=a[i-1][j]+a[i-1][j-1];5 i$ |* h" l& ]3 q: f8 z$ t5 b
for(i=0;i<=5;i++)
# E7 [: r$ j! R+ U  {for(j=0;j<=i;j++)8 Q* Q* |+ T9 m1 M$ J
      printf("%4d",a[i][j]);
3 {. M7 ]( u% ^* J* V* `) z0 u   printf("\n");}$ E- h8 A) z$ T3 j0 l2 Z" [
}
0 B3 E, H( m% _* _7 R
# T6 N/ G: A% ^7 W7、/*通过键盘输入3名学生4门课程的成绩,; p; n7 d+ M1 f9 j  J
分别求每个学生的平均成绩和每门课程的平均成绩。
3 S. m7 x* _" r& b要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车
# s0 e  M; u$ h) k9 k/ v0 w3 [其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/! m6 o! g( w+ y) N" G; R4 ^& [
#include <stdio.h>
- }# G; ?9 Y+ ?+ h# v3 s- y" \+ m& @#include <stdlib.h>
) \2 w8 _& L4 omain()
: ^* b+ R/ @6 y, k+ T1 V* N4 q. s{ float a[4][5],sum1,sum2;
( ?  u& T$ t3 O1 ]' N: Pint i,j;/ ^5 Y2 c; V8 A; k9 A/ B
for(i=0;i<3;i++)
/ ?. q1 b. a% }" C( ~, o+ L  for(j=0;j<4;j++)
! G3 P# K+ U( H) n3 `0 C    scanf("%f",&a[i][j]);0 `3 m* a4 P: v- v
for(i=0;i<3;i++)
1 S/ ]/ ^* K2 q* o2 |. a{ sum1=0;
$ y. }' O8 m2 O3 z( d. r% Y7 u  for(j=0;j<4;j++)
! R+ \6 r0 n$ {* v& A8 F    sum1+=a[i][j];3 ?1 k$ G) h) l, C
    a[i][4]=sum1/4;
0 m6 l$ F6 ]: J( x}
; E) g7 s# u3 _  _! kfor(j=0;j<5;j++)  q9 D9 G: P: K1 w0 E$ t0 y
{  sum2=0;( V4 s+ ~: |" v% C" Q6 K# s: t3 A
   for(i=0;i<3;i++)- `2 D2 C/ a' x) @7 d0 N
     sum2+=a[i][j];  T* n3 R) m- P0 r9 W; U7 _
     a[3][j]=sum2/3;
/ k8 Y- h+ P( ]& A% e }) n% w2 ~, f8 r/ i7 y3 V1 A" r! a: A
for(i=0;i<4;i++)  h; O1 R1 Q, y5 d. X0 C2 [  O+ g
{  for(j=0;j<5;j++)( P% M9 U* F% c0 o9 n
    printf("%6.2f",a[i][j]);
& e( w' I8 A+ v) U% B6 M; K6 i8 ], |% w    printf("\n");
. Q/ W% ]" g1 e$ s* l }
. ^9 w+ I1 I& i3 d) p}
- O# e# r4 |, R* G) h/ |$ t+ w- V( E' _/ h/ Y; F8 U
8、/*完善程序,实现将输入的字符串反序输出,) P+ C. i5 M) y6 \( y3 G: [
如输入windows 输出swodniw。*/
  w6 F+ i% o9 x3 a' j1 d- L: a#include <string.h>
6 X0 C- D* H& ~/ S& r9 Zmain()4 J  m" b3 m" a" G+ {
{  char  c[200],c1;6 @  ?- U# V+ e
int i,j,k;
  I" P& l& ?* b/ E printf("Enter a string: ");: A2 |! H" W5 P+ h+ R
scanf("%s",c);- V& I% r$ M" M
k=strlen(c);9 g! s7 O; q8 ^
for (i=0,j=k-1;i<k/2;i++,j--)& \7 j* h5 z# k% f
   {  c1=c[i];c[i]=c[j];c[j]=c1;  }  h3 \0 I- Q, Q& w
printf("%s\n",c);        
! I6 ]. {, c+ S' n}! L, [! X5 |! C
指针法:) H/ s$ Z) x2 M6 \
void invert(char *s)
3 w# K5 W% o9 ?% f. o' X{int i,j,k;
( K: {; w/ @" |6 i" s4 Lchar t;8 u+ w9 U. Y9 H5 g1 [6 }
k=strlen(s);
* q( ?; _( F/ W- Lfor(i=0,j=k-1;i<k/2;i++,j--)
; `& k! f8 x7 R  o{  t=*(s+i);  *(s+i)=*(s+j);  *(s+j)=t; }) M2 w/ \+ K. X  Z3 w) z$ G
}  Y* @# m- ~& R
main()
' O9 n8 j; T$ O, r1 u" e$ C{ FILE *fp;: B; l4 E8 Z  S9 C) |) k. s0 U
char str[200],*p,i,j;1 z$ }% E) [0 h( j2 W8 s
if((fp=fopen("p9_2.out","w"))==NULL) 5 b  p" _4 M# y' `4 q
      { printf("cannot open the file\n");% u/ X6 r6 ~" S) j/ C! _0 A/ v
        exit(0);                       & ~' Y7 f* s; B" i. j( \" L
      }0 v$ |$ k: v  q/ X( s4 Q) v7 L4 m
printf("input str:\n");
: h  p, G& g4 h" b# H. mgets(str);. h1 K" c: J, W; z
printf(“\n%s”,str);. O# {: {8 ^7 _2 P& m/ B
fprintf(fp,“%s”,str);
% V& c2 N( M9 S+ q: b. a( g* rinvert(str);
% a- u  M( u; g( N2 m  printf(“\n%s”,str);
# @1 `8 e  A1 jfprintf(fp,“\n%s”,str);
$ u! g/ h6 B6 M7 J; @5 jfclose(fp);
) [6 t/ [9 [; V1 N}! I# \- V& p, i, O, q' u
2 |" r( n9 t( o4 @0 f& p0 a( x
9、/*下面程序的功能是从字符数组s中删除存放在c中的字符。*/
3 ]* J9 w- h, z#include <stdio.h>
5 D1 K0 u  s& j/ h* E0 ~main()4 [0 U/ A3 p( T' B/ g6 i7 z1 i# n
{  char  s[80],c;! l4 d# C) w( S7 k
int  j,k;9 p: g% d: N) |0 o) x9 j$ d/ E7 B
printf("\nEnter a string: ");
7 O8 g' E; H8 }' W/ P2 T) c gets(s);
; X8 \9 M5 S  _6 V+ a: Q printf("\nEnter a character: ");" l! A% Z% J& m
c=getchar( );
+ T! J+ B, z8 k% B' y: { for(j=k=0;s[j]!= '\0';j++)
9 N6 A* r5 W9 t, r8 }) T; L if(s[j]!=c)! z+ t& k8 G3 b
    s[k++]=s[j];2 `3 x' H( \& {# f' `
s[k]= '\0';
) r; M3 w+ N- R! O6 y" K% c6 } printf("\n%s",s);) O' y6 Y+ h# g0 ]
}# a  N$ I2 E. m/ `8 \

' {3 z2 g- U7 u; w10、/*编写一个void sort(int *x,int n)实现将x数组中的n个数据从大到小" M* @& D- Z' F/ K
排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_1.out中*/" g( ]( m) `# r
#include<stdio.h>
: P/ W0 C9 _4 \4 \# a& C, N9 gvoid sort(int *x,int n)+ d( }( D0 i2 }. [: V7 R% w6 O; H
{# V7 d  X9 Y, Q% u/ r
int i,j,k,t;, s. f. p0 D& \! X6 J$ N9 a0 n
for(i=0;i<n-1;i++)
0 T2 F" A' c* C: p2 U$ ?{
  ]2 \! T0 m1 d. o6 U0 L) Mk=i;" x1 A/ V3 j) Q. u) T% I' `
for(j=i+1;j<n;j++)
/ V6 Z2 P& F% Y; L1 ~. ]& k if(x[j]>x[k]) k=j;# I5 u; D# c' |& j1 `  B
if(k!=i), \# @4 m$ j1 ^
{+ y) J, [9 z5 P
  t=x[i];0 H$ o: C$ k( K! o$ M
  x[i]=x[k];; h4 Q6 u7 m3 w0 y: ^
  x[k]=t;
, C4 q# z; M) E3 W }
8 h2 Y1 Y3 {9 F: d' j4 A}
$ y+ {3 f( M1 b9 g}
1 X+ P/ c6 j* G. Zvoid main()
* w! U% q$ Q3 ~: x- c2 d3 ^{FILE *fp;
+ y3 j$ K9 x# h# i; q; q   int *p,i,a[10];8 r) _9 R5 s3 S4 `
   fp=fopen("p9_1.out","w");                      ) ~5 w( P9 n1 y4 [" ?& C
  p=a;
4 `9 a5 T+ D. T* kprintf("Input 10 numbers:");
6 d5 r6 {5 N1 r5 R0 `- K1 Sfor(i=0;i<10;i++)% M% a5 }; F6 V4 h4 c
scanf("%d",p++);- v. h2 ^( P# D$ X
p=a;3 b  i, K: u( x: m
sort(p,10);
( _- Q$ `0 }& Afor(;p<a+10;p++)4 P. v7 h/ E* m/ N% M$ J% ]& ?
{  printf("%d ",*p);  z% b" j9 a3 g1 b) u
      fprintf(fp,"%d ",*p);  }
" P; S. w4 F. _/ G1 \      system("pause");
' S+ c" s) {/ W# D+ q  fclose(fp);
3 H3 p' F8 o, @8 j5 O4 T- F6 }}* f7 S! p8 x: w. G1 G( N- ^
' f) }* w7 F: ?; y* r
11、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列*/7 j  D3 `$ y3 z: X
  main()
& U$ y5 d3 D( O7 n- i( N4 T. A  {  int a[10]={0,12,17,20,25,28,30};       /*a[0]为工作单元,从a[1]开始存放数据*/
2 ?& c& |4 i5 O     int  x , i, j=6;                         /*j为元素个数*/0 \" a& |) `/ @0 w3 f
     printf("Enter a number: ");0 U! F9 r6 ^" y% c7 }( B
     scanf("%d",&x);
& |) ^1 ]1 i& e$ P     a[0]=x;
& A* F; [* Z! X# q: D8 S) h     i=j;                               /*从最后一个单元开始*/
$ a4 T& \( w* }( z     while(a[i]>x)
1 O& M8 Q7 V0 Z2 ]4 w     {  a[i+1]=a[i]; i--;    }   /*将比x大的数往后移动一个位置*/+ e0 D, P8 A: P9 ?
     a[++i]=x;/ ~& x+ j" G7 W5 K, x$ A
     j++;                       /*插入x后元素总个数增加*// j& R& T6 @# {+ m# s( j+ Y. F( I: E
     for(i=1;i<=j;i++) printf("%8d",a[i]);- ]8 @( l  m1 k. }, C2 e
     printf("\n");
$ I- ?; K/ f; i: g, N0 F}
1 K9 j- J/ q$ E  J  B+ {  V5 J" v5 ~( \

+ k3 b# `. e' L3 S) e5 M12、/*编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件p10_2.out中*/# `* J5 G% h% m  J$ O$ Y/ m. k  n% m
#include<stdio.h>
4 f+ Q- N6 S" Y; \, z% @# v! ereplace(char *s,char c1,char c2)
. T4 l3 k/ N) w" @; G{ while(*s!='\0')
4 W) m$ o( T  S. A. d2 b$ l {  if (*s==c1)
+ U& V& R+ T% T) T9 r7 s8 |       *s=c2;
8 ]- [; ]" Z+ Y' q: E. b       s++;
  I/ B7 X) _- g. H+ |' e# E4 r7 ]* M- B }
$ R" x  c/ L8 w2 \) W; R0 \. ~}
9 v' w4 A5 b* u- G' Y2 i; {9 zmain()
& }" |; |8 d9 P6 l8 g3 i9 p- f9 f{ FILE *fp;
, p) b, N. I& lchar str[100],a,b;3 h( R0 B: ?3 k- |
if((fp=fopen("p10_2.out","w"))==NULL)4 F9 }6 {( {4 W: i6 v2 x8 j+ N
    { printf("cannot open the file\n");& g( q2 h2 Z6 m, G- {0 j
     exit(0);                     }
* S6 x) |! E! ?9 @) f printf("Enter a string:\n");8 }# z' u2 m$ L  V( ~* e+ q. Z
  gets(str);5 _1 ?' _- q! A0 F8 O* N$ R7 Z
  printf("Enter a&&b:\n");5 S- ]0 b/ D& d3 F
  scanf("%c,%c",&a,&b);
% F  I1 b9 I/ k7 l: v# xprintf("%s\n",str);
1 X8 E' L2 |; w* n2 s, }fprintf(fp,"%s\n",str);1 ]! J+ V! v  t+ i2 E6 u% c7 k
replace(str,a,b);
# g7 s4 O! Q# U6 c4 nprintf("The new string is----%s\n",str);
4 O3 W( x5 J% s+ A7 Yfprintf(fp,"The new string is----%s\n",str);
- b8 S- U) i$ c+ L) afclose(fp);
6 m$ o3 L; S4 n0 r}' @) \, C! ^. O5 _
& D+ p" Q. f* D; l
13、/*在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置
. u6 r$ f8 A% m4 {8 M5 q1 P0 Q,不存在则返回-1。*/
- Z: H- Z( B! ~1 x( ^main()- [0 s5 B+ z; @0 }) U* ]- M
{char s1[6]="thisis";char s2[5]="is";6 n$ G0 X- U7 y/ \
printf("%d\n",search(s1,s2));
' a$ F! J2 j: a0 j  [system("pause");& L4 X  a+ B# W4 O, v
}
0 x% v4 Q" q% w/ _( h0 A/ Bint search(char s1[],char s2[])) l+ e! B% y& O8 `2 U
{int i=0,j,len=strlen(s2);" Q) Z7 d5 {3 X
while(s1[i]){
" t* X. p3 R! C% I! j0 W1 Ofor(j=0;j<len;j++)
9 C% E/ `% I- f- _; P- Kif(s1[i+j]!=s2[j]) break;/ i1 M( G; C! ?" n4 X
if(j>=len)return i;5 W, u0 r+ L# f+ _+ d+ _4 x
else i++;: |  H% K5 k/ Y2 ^/ U$ I
}
7 b4 x/ v- R9 Z8 {1 U' {! M& areturn -1;) @% Y) r2 \# n, A3 d
}$ h5 {% [4 g% L( Z7 g. x$ p' v

2 C! ~5 t# ?# l) E* Y! {% b14、/*用指针变量输出结构体数组元素。*/; _$ y5 ^  F, P+ J" z, ^5 _8 r
struct student
% c# i0 W  ?/ |) ]+ y5 d{
2 |8 H5 P# M- q1 K7 r4 Pint num;! p1 C: W# F% [/ R
char *name;, \5 B2 T" L+ Z- q3 z
char sex;3 l9 V' `, P5 {' W) X
int age;' D$ j7 @6 H9 ]
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou",'F',19},{1005,"Wangming",'M',18}};
4 Q+ \8 U' b' [5 D: l/ b) Fmain()1 t' t% ]3 B  n/ r) A( m$ f
{int i;$ p) q& E6 J6 v6 {0 U1 v- g" o# [
struct student *ps;
' A- p4 H' N/ T- L& u5 Oprintf("Num \tName\t\t\tSex\tAge\t\n");  
4 ~! {) u, B2 X( Q* ]/*用指针变量输出结构体数组元素。*/5 J- ?8 R( Q5 a. A9 T
for(ps=stu;ps<stu+5;ps++)
$ S" ]7 o- r+ K$ R& Cprintf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);
) {7 `. ~  Z# X9 G6 G6 Y/*用数组下标法输出结构体数组元素学号和年龄。*/
, S5 d6 R0 Z+ [7 W- M" L2 N1 d$ Sfor(i=0;i<5;i++)
6 ^8 e" P. i5 A& ?# o: \printf("%d\t%d\t\n",stu[i].num,stu[i].age);
. D% y, L  M5 B}+ N! M4 g, U, ]) F
9 L* z3 z4 ~& i9 Y9 K& z2 c1 P
15、/*建立一个有三个结点的简单链表:*/' {5 a6 F4 |! N1 x8 @- ~2 h  e6 N
#define NULL 0: f' m! b9 A) C
struct student
0 b" A: A# v4 ^/ N; s2 O{" n4 K  ~; r- m
int num;( x' ^1 `9 T: l4 P
char *name;: Y, K/ B6 j3 D2 W- L1 O
int age ;
+ e7 O7 q4 A$ L5 S! S3 Hstruct student *next;) b( Y5 _/ \8 n# D$ r0 j8 Z% t
};9 F1 V: G* ^9 E, c0 ], J& P, C. `
void main()
( \) W0 z4 i" E{9 ^$ A3 p0 m1 L
struct student a,b,c,*head,*p;
9 z1 j+ p# q8 `1 q4 R8 S+ f0 }" K3 sa.num=1001; a.name="lihua"; a.age=18;  /*  对结点成员进行赋值  */
: V' h, ^* v4 V$ B4 F5 Db.num=1002; b.name="liuxing"; b.age=19;
( |6 y9 j2 Q) L; a: H& ~c.num=1003; c.name="huangke"; c.age=18;/ N8 H6 L; ]# F! t# L8 ]% H# H
head=&a;                           /*  建立链表,a为头结点  */* Y  o9 r" U! |1 B" j
a.next=&b;
# S. Y+ ?0 y7 A& d  {$ U( Bb.next=&c;- ~& b- A* Z4 F) A  @
c.next=NULL;
5 N; l. C6 x1 ]4 Z7 Ep=head;                            /*  输出链表  */: x( d- D6 T8 j6 S/ X' q
do{3 {, M2 g0 w6 B9 h
printf("%5d,%s,%3d\n",p->num,p->name,p->age);# c- l9 W# a  g3 Q8 b) Y, z
p=p->next;
! G: f" T4 G$ }/ C9 R}while(p!=NULL);( k1 t$ f# C' ~0 w4 B( G
}1 x  T* |0 i9 f

! C  p! a: ~1 |& D- ~16、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。*/; @' S( h% P# Q; s3 V, U1 W
#include <stdio.h>  n3 w- j- v. I% _* |# L
#include <string.h>
0 A( u: ]2 l' S, t- q+ n( R+ a& t#include<string.h># f# a: e- ~- K: U
main()& |- U8 p8 i. W3 p1 S1 b, _
{ char s[100];$ w+ Y5 D7 v' }  ~- h. w2 b% e
int i,j,n;
- ?1 e. p+ M* T% s) k$ A, iprintf("输入字符串:\n");
" q! s* A8 F+ H# igets(s);( A: J7 K3 P  g+ H9 }" p
n=strlen(s);3 x& g" a  ?" A
for(i=0,j=n-1;i<j;i++,j--)
; K& g3 T: O! O& C  if(s[i]!=s[j])   break;9 H, c8 i' k4 L6 N1 ?: z& P
if(i>=j) printf("是回文串\n");
8 n9 P2 C0 K9 q9 U8 g0 Felse     printf("不是回文串\n");
1 j7 z( j! D/ d" G) e  a/ a}! _7 z& @$ ^$ R9 P0 n: I
/ \: [6 H- j$ W9 L- ]
17、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件myf2.out*/
2 l) W9 b" F* h: ?8 Y#include<stdio.h>+ r5 [' K7 v& p  g4 M
void fun(int a[],int n)# W  V0 @0 @* s$ U
{int i,j,t;' \. l6 U# p& G
for(i=0;i<=n-1;i++)
+ T' P( x! |* B; B! G9 Y6 qfor(j=0;j<i;j++)# t/ b9 }$ \3 f- K7 l
  if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}
7 ~1 q* t+ {: \0 w5 k/ a}4 l, C% s% j, i# v: \5 w9 K
main()
: b9 H0 q1 m& V5 D( W) [# M{int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;4 m2 s& W( N5 z) F4 Q/ g1 |6 J
FILE *f;+ A( N" L+ N3 C
if((f=fopen("myf2.out","w"))==NULL)8 R6 y( \2 y9 d- e
printf("open file myf2.out failed!\n");
* {" {  _3 c0 l. f/ Nfun(a,10);
( q$ J8 P; g; wfor(i=0;i<10;i++)& a) r' O+ P: ~$ ]. S
{printf("%4d",a[i]);
( F% }8 }2 D# _6 ~. ^  fprintf(f,"%4d",a[i]);
# i, R" i* A3 K& N }- d/ F. A' }. @: _( F3 f( W0 {
fclose(f);; {# D; N6 ^" O# V, J' e
}
2 k+ {1 Q7 K" `/ h; T
0 ^: m2 U2 k! h18、编写函数countpi,利用公式
: P% U/ [' L; c3 s$ ^9 b& p     
9 O8 j. y  w( d# v& X) Z2 Y- q' M- D5 v 计算π的近似值,当某一项的值小于10-5时,认为达到精度要求,请完善函数。将结果显示在屏幕上并输出到文件p7_3.out中。
# r) P+ C# G) i9 o2 o- p* C2 @#include<stdio.h>  i# j1 w  [  d! c. B
double countpi(double eps)               /*eps为允许误差*/
$ a% s* p+ r' h0 }3 e{, J6 B6 ~  T! Y# d
  int m=1;
3 N3 I" R  n$ m   double temp=1.0,s=0;& w4 \+ G* r& I" n* f! S
   while(temp>=eps)
& ^" Q, m) k3 t  I& ?: Q   {  s+=temp;
2 A* T7 P- O" V      temp=temp*m/(2*m+1);# C5 p" q7 P7 l% t
      m++;
- D  ]# N, f) P% X6 [   }
1 e& @9 Z% V/ T8 W$ V   return(2*s);6 g& k1 O0 {4 {! L  @
}
* e; O3 P: j0 Q1 w5 f8 M; ]) Fmain()
" {/ X2 [& K& Q% |{FILE *fp;
; O* e4 |! D" v, i) n1 e' Z   double eps=1e-5,pi;
- F- N! A& _* @6 `0 z# o, b   if((fp=fopen("p7_3.out","w"))==NULL)1 ?+ Q  ^% }3 d3 N3 c
{ printf("cannot open the file\n");
9 `- ^8 ~% [, z  Y8 h7 n7 x   exit(0);                     
1 ?1 P+ Z. `3 a2 B3 Z7 } }) r, T+ j4 \7 F- A' T' S
pi= countpi(eps);
! r1 N1 n5 s+ p printf("pi=%lf\n",pi);
% E  p$ e% I  _3 u2 qfprintf(fp,"pi=%lf\n",pi);
* t/ j8 B0 [6 u, Gfclose(fp);
- N, W8 A, _% X0 G) ^  a}
作者: sushouchai@sina    时间: 2015-7-2 09:01
谢谢
作者: dainy    时间: 2015-7-12 11:07
感谢分享! b8 l( A1 ~, [# I' ]6 p

作者: tuzhiquan    时间: 2015-7-20 16:56
第一个一看就很常用,其它的,看得太累………………。:lol:lol
作者: kevinlywzb    时间: 2015-8-6 11:17
感谢分享
作者: joy_show_wb    时间: 2015-8-14 17:49

作者: 2821462144    时间: 2015-8-20 08:01
学习了
作者: 流光、溯雪    时间: 2015-9-13 12:50
好东西要收藏,感谢分享。
作者: 松溪居者    时间: 2015-9-13 16:27
谢谢,学习了
作者: zpf    时间: 2015-9-15 18:02
好多看不懂,还需努力!
作者: fzdy1314    时间: 2015-9-27 21:06
谢谢分享,谢谢
作者: visualzz    时间: 2015-10-30 09:08
都是for循环啊




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2