EDA365电子工程师网

标题: C语言经典算法77-86 [打印本页]

作者: dilidili    时间: 2017-10-11 18:53
标题: C语言经典算法77-86
【程序77
% {9 J- ?9 ~' r! R题目:填空练习(指向指针的指针)
5 r. R( s3 H4 }! ]1.程序分析: * U" L8 _, i: d9 {3 P
2.程序源代码:
5 a; @5 K  J+ f9 [7 }1 qmain()
4 Y# ^$ |' z  t7 ~7 e7 o4 L: u{ char *s[]={"man","woman","girl","boy","sister"};
) y7 _* F- M  X1 G. lchar **q; ; L% i8 m* ^' Y  u+ k
int k; 8 |! v3 D; t5 M3 d0 n
for(k=0;k<5;k++)
+ _" ]8 |7 L( R( s; O" l{ ;/*这里填写什么语句*/
# Z+ N, s. l% @- }. tprintf("%s\n",*q);
$ N. e: @* u7 E0 V/ {/ a) M3 v}
7 T/ |% b: z+ p2 s) S9 z" l} + v. i. s- t& G! c9 F5 ^, k3 u! C
==============================================================
* Z/ V/ b) o" n% B8 T% L$ E2 r【程序78$ n) e( Q/ Z7 C
题目:找到年龄最大的人,并输出。请找出程序中有什么问题。
6 g+ ?+ @- A- h% N8 o1.程序分析:
/ @9 [7 p; j# W4 P2.程序源代码:
0 c# [6 p! U& l9 U#define N 4
" m/ W( m% u5 U6 n0 {  w, R#include "stdio.h"   v8 k4 m+ R" o$ d; ?, Q# a8 ~; B
static struct man 2 g* \% G+ R. g! y
{ char name[20];
% P6 s8 |, z( B) \: `int age; ( _3 z  s: ?. o% M5 i4 O* O
} person[N]={"li",18,"wang",19,"zhang",20,"sun",22}; ) r, b" S$ u. J8 N, v1 X8 L; ^! U
main()   Z6 p' z7 Q8 B! `% x) M" V
{struct man *q,*p;
" \; N" f6 J2 [int i,m=0; 0 M" t1 ~4 G; n0 m3 ~% u! T
p=person; ! w+ X$ C  B% x
for (i=0;i{if(mage)
* G1 t& O, K% r" Mq=p++;
9 o% Y/ P8 \" I! fm=q->age;}
6 M0 H7 M% T; |printf("%s,%d",(*q).name,(*q).age); / G# u* x7 S% e; I
}
+ d" o4 z; ?4 T============================================================== $ E9 Z' ^  Z: Q5 O% E" |
【程序795 N8 N- `+ a3 e" ^# M) V
题目:字符串排序。
- d$ g. C* Y2 v) S( J* P' {% T1.程序分析:
% U0 Z8 @# D- g) N" m2.程序源代码: & a0 A8 s9 u2 C- Y
main() ; b% s2 K- p: J7 K
{
' m9 p# L5 B% V# `char *str1[20],*str2[20],*str3[20];
! z3 M0 B9 A+ Y9 S' g! j( F9 dchar swap();
( g! ~" B* I2 wprintf("please input three strings\n"); + N7 @/ X) \: g6 l6 u  h$ u5 y
scanf("%s",str1);
' S$ b4 `! f  A) ]scanf("%s",str2); & G! u1 |7 |/ d8 q, W
scanf("%s",str3);
9 T+ k7 d: b- ^0 Cif(strcmp(str1,str2)>0) swap(str1,str2);
* d  _1 F  d1 b- \if(strcmp(str1,str3)>0) swap(str1,str3);
* R& @* g: [5 _1 cif(strcmp(str2,str3)>0) swap(str2,str3); ) @$ Y, T( z1 |7 ^" K
printf("after being sorted\n");
1 g6 h6 u7 t. l, o; g& t  Mprintf("%s\n%s\n%s\n",str1,str2,str3);
4 A3 A2 f' Q' S5 p! B/ ~4 [}
0 P  c+ d3 c# B9 bchar swap(p1,p2)
2 R0 f+ A6 p' @8 uchar *p1,*p2;
2 ?( Z: J  r2 L% ^( B{
" X/ V' a5 n1 b0 ychar *p[20]; 7 `9 T8 ]3 M, g0 M$ j7 A4 i
strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p); 2 J4 P8 i0 ~8 G# T
}
9 `, u0 _; ~8 N1 W" I1 ?============================================================== / v, ]0 P- j; Q/ U3 ^0 ?* U
【程序80嵌入式信盈达企鹅要妖气呜呜吧久零就要 : {$ I* z! ]: a9 G: t
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只 % Q7 {  s4 k  j( N  a
猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了
' i; i) ?- P& y8 C+ o" W: M一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,
4 o1 @: j6 c8 u9 `% l问海滩上原来最少有多少个桃子?
+ Y2 u5 g" l6 ?; P( {; _( _8 }1 X& M1.程序分析:
( s  c0 P% K, ]! w9 `8 N* h9 |2.程序源代码:
! v5 D4 B  j  `+ e5 i' Rmain()
( @. |& h8 a( ^6 `- ~; X0 A3 T* {{int i,m,j,k,count;
' d7 @* ]/ w" }for(i=4;i<10000;i+=4)
! s+ k. f) F9 C5 N( q. v: w; b{ count=0;
6 P7 X3 y6 b1 h$ o) im=i; 6 Z2 ~6 Q  i2 Z0 K
for(k=0;k<5;k++)
% e8 q" }# L2 s' S{
; e. J5 d, Y. L& T0 s4 v  h1 uj=i/4*5+1; : S4 E; @+ O; F# R
i=j;
' H" K/ s* \: B5 K4 `- vif(j%4==0) ! k3 X4 v4 C% u. Z/ P+ K; n) m
count++; & T% _4 l9 j& p5 T
else
% J8 w3 E% u  z2 R0 `4 T0 H; _/ ebreak;
. ?# S, Q& I! f}
5 q5 x8 w5 j/ \3 g& ai=m; $ g* f$ |! c  P* b+ h! X
if(count==4)
8 B0 C1 u8 A, I{printf("%d\n",count);
: y% |# v/ c- N9 N( w6 D  O1 qbreak;} 1 ^2 b) T9 p+ o* K  {$ z
} ; |: U& b3 u! H' Z8 i
} 2 p5 S3 e7 L" U" B. ^
【程序81
5 z- U9 v2 x! s6 l7 [) ]+ q题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。 3 w7 F$ r4 O: E4 M  o
1.程序分析:
; H" w! Z* g4 H2.程序源代码:
/ X8 e) i4 j5 z- F' k" E* y" ^output(long b,long i) 2 B* Z! N$ K) u" W7 E. K3 B% F* P
{ printf("\n%ld/%ld=809*%ld+%ld",b,i,i,b%i);
6 H( X# z. R( c3 `1 @5 d! z& J} 6 ~2 S6 n: z% {1 G
main()
  h, @' v, e- ^+ t{long int a,b,i; 5 Q6 b) l# `& z; Y/ P$ H- L
a=809; $ O: N2 Q+ Q' m, O! j" L* d8 s$ }) V
for(i=10;i<100;i++) 1 |3 ?+ b- |/ e0 W4 r/ E, j
{b=i*a+1;
5 j. e  z, S  z) Xif(b>=1000&&b<=10000&&8*i<100&&9*i>=100)
% J& I0 i+ M8 B5 W. f, H" Koutput(b,i); } + q4 ]) m0 S$ o+ F% ~( u
}
1 p4 _6 y0 D* Z+ H; m==============================================================
5 Q8 k2 R8 I2 Q2 _/ ]$ I【程序82
, Y+ {! W9 Z' M& U9 I题目:八进制转换为十进制 $ g- a( s! a' }
1.程序分析:
7 M2 z; Q* V" r. M8 g5 I) E2.程序源代码: " S8 J" F8 y, Y
main() / C9 @4 z2 `/ `6 X! K" B
{ char *p,s[6];int n; 2 }  k5 h7 c# ?2 {" l
p=s;
* z( g; \0 f+ G$ h; V! {. Dgets(p); & J7 ]2 R* v7 S- R2 X! @7 w
n=0; , x0 G( J0 Z4 n" K. P- a# f
while(*(p)!='\0') 5 u4 q4 j: C: _! G7 d" m/ r
{n=n*8+*p-'0';
6 `4 }  U. t2 F  W" i( @- G  gp++;}
' @2 a, B1 C# ]3 Sprintf("%d",n);
$ k8 H* }: I/ p* Q4 |" i% U# j} 0 P6 R1 t& V+ k; `1 i, W! ]+ U
==============================================================
1 v0 X* W0 r6 F) _; |2 X: G% K7 P, E【程序83
, u. E8 c) p% ?3 `1 ~5 d$ O题目:求0—7所能组成的奇数个数。
7 h$ V) c6 U6 D, }8 S% K1.程序分析: " @: D8 v, W- y
2.程序源代码: + }* J6 z6 b6 H  y# c4 K
main()
; \" X  J: x5 q* w% U6 c. N3 H# P{
$ @+ p& }% r* U( tlong sum=4,s=4; ) P: a: a0 n1 `$ z( P1 Y: _+ ~
int j; 5 k- W& I+ s1 k. K+ C4 \) H0 o
for(j=2;j<=8;j++)/*j is place of number*/
5 k  M2 N* \; e, A! Y7 _& L0 |{ printf("\n%ld",sum); ) s- L  P( W6 e! x& a" p
if(j<=2)
2 ~$ k% Q9 h5 ?$ O$ xs*=7; * f% L4 |7 s. G6 J5 m+ X& D1 E
else
& L" R+ t! [8 {s*=8;
" L4 |: l0 q$ ?8 Wsum+=s;}
! v2 F. x/ b, [printf("\nsum=%ld",sum);
2 ]' N  l* l! T}
/ k; b$ Z( ?( h==============================================================
) M/ B2 W  n  p4 q2 v【程序84
6 |/ A% x4 F$ B2 X7 V1 J) Y  P8 N题目:一个偶数总能表示为两个素数之和。 1 l  r( n1 E7 I% v
1.程序分析: 6 [+ s6 M5 N- z  A/ H8 P
2.程序源代码:
; x" n$ g6 f5 F5 l#include "stdio.h"
- g9 \2 r: P) o. V2 |4 n% v#include "math.h" ( S. a; D8 u4 W" C5 C9 }$ _
main()
0 @5 B/ f& S  o3 i{ int a,b,c,d;
# Z3 x, I" C. V1 A1 w  ]0 R, ^scanf("%d",&a);
# `+ j' {* b& S9 b! Bfor(b=3;b<=a/2;b+=2) / K5 h( N( a* {1 W3 M+ p8 Y; E9 I
{ for(c=2;c<=sqrt(b);c++) # Q; J: S. f. V5 `: Y
if(b%c==0) break; ) `8 P- s0 r/ K6 U0 y8 T: P
if(c>sqrt(b)) / [) |0 n+ Y+ p& {2 V: d
d=a-b;
- W, `  A" [% O, X* selse
5 S7 F7 V! F  r# c7 A0 Ybreak; 6 ]0 _# a. u. t" `- _
for(c=2;c<=sqrt(d);c++) . c5 e+ D# J% i) ]) Z, \6 g
if(d%c==0) break;
* ^  v) ]0 ~: C! Xif(c>sqrt(d)) - Y( {# \! Z! P% [% Z* }# T
printf("%d=%d+%d\n",a,b,d); # y& ~5 ]: d: W+ Q8 n
} # y  ^4 }0 @# \+ k
} $ F. J) P4 B0 W+ }- R) X% w$ n% B
============================================================== " H, Y( f6 R' N) r- k
【程序85
0 ~0 U5 H. x5 |( b: U/ f题目:判断一个素数能被几个9整除
1 Y$ e- R; u/ e1.程序分析:
# L' o; x! Z* s. b% I5 U2.程序源代码: - d+ f. q1 a" `- W2 _3 H
main()
- Z* @$ ?& ~, _0 ~+ _  w{ long int m9=9,sum=9;
/ V" C' J9 d5 W# v3 p4 L/ n' bint zi,n1=1,c9=1;
/ I8 T) ]( x' r( [/ O( D4 G) Wscanf("%d",&zi);
# W" M) H# a* G9 `7 qwhile(n1!=0) + f; c6 X0 V* Q
{ if(!(sum%zi)) " \+ F. _7 Z* H3 ^. U& e) B' Q( s
n1=0; . S$ B7 O! Z  b7 Z7 p, E
else * ]. g' B: Y- S/ x, p. d5 h
{m9=m9*10; & p" l( B% l- t" I5 ^8 N( T
sum=sum+m9; ; K1 u$ Q# m3 L- S; C
c9++;
* I" h( R- I# ]; g0 |8 O}
3 T+ t3 v- j9 Q6 M2 R8 f: ?} ' x9 E) E6 w/ Y! n6 N& C2 I
printf("%ld,can be divided by %d \"9\"",sum,c9); , L. G$ Z0 m1 Z$ y( h
} / ~) t/ A2 j% j
============================================================== 1 Y5 X; `( U8 C& O6 t# I, d
【程序86: R* N9 y  z0 H
题目:两个字符串连接程序 6 W" l2 T! B3 i8 A2 s0 R  h
1.程序分析:
! H+ U5 }/ X2 C' m" g7 w4 S2.程序源代码: ; [* ^, P0 u' P$ D6 f& \- j0 o
#include "stdio.h"
6 s% c. m# w& s2 K" lmain()   S, d4 r, n$ h7 I/ T" M+ h; s1 y
{char a[]="acegikm";
6 f7 x5 K1 `# Qchar b[]="bdfhjlnpq"; & P' A' Z( S3 o% c
char c[80],*p;
( B2 U& o7 N! w7 w) a7 F% Rint i=0,j=0,k=0;
' k9 {# H0 q+ Vwhile(a!='\0'&&b[j]!='\0')
2 D0 Y+ [# B4 f, R0 Z4 V6 z" l: C{if (a { c[k]=a;i++;}
$ `; }" b8 \+ h. ?& k% G- nelse 4 }0 d3 Q, x! Y3 h; i
c[k]=b[j++]; * i2 {* a0 ?' K8 N; l) a
k++;
( Q) X8 V% J0 C* z}
% K& ?2 A$ J# D9 Z% Y* `' Wc[k]='\0';
/ X, o/ E0 k" l1 Q2 Xif(a=='\0')
1 M9 K8 N6 \5 J+ S( z9 y: rp=b+j; ; ?3 a, D* X0 ~9 m3 K
else
# P9 a3 m3 T6 R7 S/ b: hp=a+i; ' o; e6 I+ G6 L' k
strcat(c,p);
& C- y" b9 U1 {0 C6 W% Oputs(c);
4 F0 i/ P9 J8 U+ d/ O}
) X* L' q* m9 X7 {, s2 S

  W% j/ g8 G9 O8 {
作者: a4536300    时间: 2017-11-6 10:37
666,回味C语言
作者: dilidili    时间: 2017-11-6 11:57
a4536300 发表于 2017-11-6 10:37
4 R, b! k" K( ?0 Z% T5 p. O666,回味C语言

* }8 c" ]/ r9 C: o( C* ~# F8 h现在学到哪了?! f' P2 Q8 ]( s% }5 s% ?9 ^

作者: a4536300    时间: 2017-11-7 10:15
现在改学C++了& n2 l; f; P& h  @* a; D  y% ~





欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2