机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2127|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序6
* v% _# n+ w, T3 s6 ~题目:用*号输出字母C的图案。
' e0 j- i. e2 `; e% ^' e+ C. S) q$ w1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
% ]4 [5 `" S2 Y1 s. [! X" n2.程序源代码:   }7 h1 I) q. z) X6 T% I- Z# e
#include "stdio.h"
% \! O( W( e* U5 F6 Fmain() { ! F, \0 u7 L, I* ~8 M
printf("Hello C-world!\n");
# q2 `% m/ @7 `printf(" ****\n"); / U. R* |( k  D- B5 H7 P
printf(" *\n");
, z1 F1 T) E  a3 H, f; b: g5 Sprintf(" * \n");
/ `" r( L# [9 |, @2 hprintf(" ****\n"); } ! P1 k- @. p8 i' Q$ k, U& @
============================================================== " c+ J( y4 ~3 q0 L
【程序7' A/ G+ u, u1 p" q2 S7 `
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! . P5 v# s) u9 u4 ^: m5 _) n& A
1.程序分析:字符共有256个。不同字符,图形不一样。 9 c. i3 l& G9 A- W8 |2 Y8 L
2.程序源代码: 6 q& H! t3 V: u2 [# a" H2 `
#include "stdio.h" 8 ?$ U' z) N( U; @" r1 `
main() & A1 n) z/ _6 j% ]/ P7 Q- _
{ ; [  B) V' X8 I  i1 ], v
char a=176,b=219;
1 o6 e6 _( Q. ?: D% `( d" Cprintf("%c%c%c%c%c\n",b,a,a,a,b);
' \/ e" n: G$ ?9 @8 F" rprintf("%c%c%c%c%c\n",a,b,a,b,a);
  B+ h1 {5 n+ p3 `( N( [printf("%c%c%c%c%c\n",a,a,b,a,a);
8 i4 ^1 W4 w1 r% Tprintf("%c%c%c%c%c\n",a,b,a,b,a);
/ \9 U9 W. l$ |" Y% s* P) y4 hprintf("%c%c%c%c%c\n",b,a,a,a,b);}   i+ e. o" u- [- S; a8 ?2 @
==============================================================
* `4 S5 s1 I% Q9 [6 k: d【程序8
/ s( G  |; e8 h8 C  D题目:输出9*9口诀。   e, Y4 c( x$ M5 k- t6 p4 I! f: `/ p
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
1 T2 c  i: d. Y7 Q2.程序源代码:
& l6 Q" f7 b& @( {, U#include "stdio.h"
! W- x/ }5 t+ ]( Pmain()
; c0 c" y5 l# C- M{ 0 Q; Q2 a, X- [
int i,j,result;
5 m- h7 _% p4 U; n/ jprintf("\n");
0 H  l) c3 C2 X) m9 o! N( R1 \for (i=1;i<10;i++) & J* ]2 [/ d- b+ J; W' v7 c; `
{ for(j=1;j<10;j++) 4 @- m, i. z+ r. }( e
{ , \% h; Q1 J, `% h
result=i*j; 8 m( G8 d8 `3 @0 k/ s
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
# b6 @- {$ I& E! _$ v} - T* ^0 F" p: y. C9 Y, T. ]9 X
printf("\n");/*每一行后换行*/ 2 N. K7 U" B! z1 {4 \, N( H4 ]6 w
} & b  I. r! Y0 Z! H7 `! ]3 d
} 5 v3 T' q5 H! o$ T9 e& J
==============================================================
* y4 _) S! u$ `8 Q1 L# M1 }【程序9
5 e9 ?9 Z; A9 R- Y题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)+ ]; P& M- [1 w' A+ R; u8 n& _
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 6 x1 X8 h! J5 `- H
2.程序源代码: . T5 a# u+ u8 O
#include "stdio.h"
) m; X1 [7 |; wmain() ( ?  J7 n* ?0 u* e% w
{ : I/ F1 L% c# K( D
int i,j;
  ?; c5 o( E. h% i& sfor(i=0;i<8;i++)
/ ~, S6 r) B9 L* \# `7 G{
  a  A/ b" ~5 l  efor(j=0;j<8;j++) 1 h# G( s6 \- K
if((i+j)%2==0) ) ?# x0 b7 a2 ^! T6 ~
printf("%c%c",219,219); 2 L2 b6 _) s5 T' r- g0 o
else
$ U% q7 t! H0 [* Q. y) b2 k% U. Xprintf(" "); 5 N$ T% i7 a) S: D2 Z6 j
printf("\n"); ' O! ?6 w+ d5 \6 {, e) L0 f, G
}
$ w) E# p" @8 a$ i: q: O7 J1 O}
$ B- c5 L7 I* ^( j2 x============================================================== ( W- q# G) R- w/ U6 L
【程序108 d- p, s( G! P1 E+ e
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 % M% E* w  D: \& D3 e/ a1 }7 V8 O
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
+ }! g' `8 i6 s& v1 l2.程序源代码:
+ I8 e! H& r. W: P6 m4 n6 @#include "stdio.h"
& V+ H5 \6 t9 s4 x7 r+ _1 c! jmain()
9 V8 N4 \9 C: v$ R: c& |( {{
3 H3 ^* \) @3 a' ]* d5 uint i,j;
) K4 [8 ~/ B# V8 h3 Dprintf("\1\1\n");/*输出两个笑脸*/ 2 z0 n5 N1 u& D0 D6 s  s( @4 k
for(i=1;i<11;i++) ) f. }6 |( W, w# t$ B& x
{
/ f% p/ Y& S+ M$ K- E, ]for(j=1;j<=i;j++) 0 p% T( T* {* K7 \3 r1 f
printf("%c%c",219,219); 6 c' Z; L- J: D: W* s" M
printf("\n"); : ~% C3 t: T0 g. D7 G& y3 @7 V
} 9 w' X4 M: d, P: a
} 3 ~4 @( C3 ?' F$ v. x

6 H6 w- g9 r5 T% s! C* U% B% ?4 z, c/ N  f' g
" M7 M; v; d) O7 t* k7 v5 W9 a! I! |/ @5 N
作者: zhlei81 2005-1-22 11:29 回复此发言
3 m( I4 {/ S3 F+ l' l/ o, H
+ i4 O+ [6 a2 Y) [0 ~9 _3 q4 p--------------------------------------------------------------------------------
3 g) ]8 u; e/ X( p& V% `8 w+ U) c8 M0 I) I; l3 H  v
3 回复:经典C源程序100
. e7 t( |8 [! n* K% n$ T' m【程序11+ D! v; V" p4 H8 ^
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
) g" K- n) J2 v8 W' o, Q后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
+ G6 C5 g9 B8 H) K1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... - t% ~- F& h: f. Q& W$ V$ h
2.程序源代码: 2 b# f# x! U3 D
main() 9 j, U8 ^, G! U' H" k! j6 I
{
! `0 Z1 \3 t1 `! ^' |+ |long f1,f2;
5 `: _: i$ |) J* g0 S" |int i;
$ n  Q0 N. U+ Z6 R: uf1=f2=1;
& h; F( f# ^( s( ^2 t4 t" {) ~" {for(i=1;i<=20;i++)
3 w. i* }  \! r' \9 \{ printf("%12ld %12ld",f1,f2); ( M/ L* E1 t  u* k
if(i%2==0) printf("\n");/*控制输出,每行四个*/ : t1 F3 J0 r6 z5 \; E; H. c- ]3 L
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ - T3 o6 N  R9 v* {& M& q
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
. Q# W3 o  ]! J) t- C}
: [: ^5 M' C( k6 T& d! ]$ o}
: I+ c0 Y  U- u; F. m7 @* P% ?==============================================================
# X+ k; E* `, }2 `* G【程序12
/ G3 [8 U( p5 ~# `8 n题目:判断101-200之间有多少个素数,并输出所有素数。
; i. q6 i' C) Y% Q1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
- i6 ]- y6 D2 ]/ Q/ `5 [, k则表明此数不是素数,反之是素数。
& Y  N; H) C" k2.程序源代码:
# p) _9 _% X! \5 p1 c, _#include "math.h" 0 ^- O1 u. B1 R9 T8 g5 w
main() & I3 C! Z# g" _
{ 9 m$ N' W) y+ B( J8 S6 {: Y$ t: V/ K; _
int m,i,k,h=0,leap=1; " e: }! [; S# b$ x
printf("\n"); 0 ]2 a, k% t- r2 i) N3 m$ C
for(m=101;m<=200;m++) 2 F! b+ c2 M/ z
{ k=sqrt(m+1);
9 b3 z/ L' t: A, D- @) ^for(i=2;i<=k;i++)
0 K  ]  c2 e( tif(m%i==0)
# s* D4 V. w. ?4 J9 y* s( Y{leap=0;break;} $ ?4 H1 r+ E  `: a& E( l
if(leap) {printf("%-4d",m);h++; 6 n" G+ `0 x* I3 h3 b' {/ H% M
if(h%10==0) ) L. i7 h) J6 i  J" m" H" j
printf("\n"); . H2 |5 |, i/ @  `0 p. u( \: g6 d% ^
} " t2 C) Z! l6 {2 A# M: S2 G* [
leap=1; : T# \6 l5 U4 N5 r
} / t$ p# z% _3 O4 v! U
printf("\nThe total is %d",h); : ^" o' {* y+ M. |
} % I$ k% I% n) Q, v
==============================================================
: I6 v" L( }8 ^) M; i【程序13- P3 s; M; d5 }; ?' a
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
8 N1 b6 q7 P2 d. \本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 0 Y- a/ G0 J* {% P3 }  k! s
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 ( |3 o) A1 N3 Z6 q  R) {
2.程序源代码:
1 _6 j8 e: P6 [+ E7 ?main() ( c5 t4 y: h0 S3 X, h0 U: d
{
: s& m1 _, w3 ~! N1 lint i,j,k,n; / H7 D" [1 \4 j8 h
printf("'water flower'number is:");
+ v& d4 ~# O/ P/ j7 q; ufor(n=100;n<1000;n++)
. Z8 E2 M7 r/ i0 u0 B  @% z{ & A  K! c  i5 @
i=n/100;/*分解出百位*/
1 R6 T; w! W% E. mj=n/10%10;/*分解出十位*/ 6 S8 u# p2 i8 n+ U) m3 |
k=n%10;/*分解出个位*/ ( w6 U% N: H3 {% e3 J, H+ G9 `
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
7 L0 B* R9 i3 s0 j{ ! ?- \% w% H5 [+ y! J, c3 v8 T
printf("%-5d",n); & g& @% R/ J, F) O3 Y5 `% K
}
: o9 ~0 G2 s0 s7 e}
- {# W5 E4 N5 c, J5 W2 mprintf("\n"); " i+ j- P/ i7 v+ ^8 g/ \' b9 F) R3 b
}
6 \1 W/ w4 t$ V  e5 Z- }==============================================================
+ a' o% T( n1 A  Z( ^2 S; t9 d【程序14* ?0 l' c  T: J0 E
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*58 S& [8 P) h- O. S, d! o7 l2 J

* Q3 B$ v$ m4 b2 g4 M  O' ?2 {2 }程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
+ W5 r0 Y# p$ F" g! s  W7 o(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 " o) }' r! t9 F( B! x1 X6 J
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
' [+ T* N  M7 X) H; B6 ?7 e重复执行第一步。
# {* ^' g0 P6 v: v: Y(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
$ `$ R$ o* y8 e- }1 E
+ e7 J7 m$ }$ W- G2.程序源代码: 0 q/ b6 k: X/ q  j& ^1 W
/* zheng int is divided yinshu*/
4 U0 N4 j$ F" Vmain() , E8 p' _5 m9 q# i
{   A2 r  E  U( `$ J
int n,i;
. e1 x8 s3 r7 z# u/ P% pprintf("\nplease input a number:\n"); $ }4 N  o# d! P. n
scanf("%d",&n);
' |! q& `( }, Nprintf("%d=",n); ) r1 t, i2 z; X3 a  G# x
for(i=2;i<=n;i++)   r5 k) U$ O$ `" v( H" G
{
- h1 o9 O2 s# q9 twhile(n!=i) * c% ~& f, G% F0 @% _' ^
{
% Q7 |+ g" I0 x4 sif(n%i==0)
/ s4 ~# M+ X* a5 j. n{ printf("%d*",i); % ?! I& I- ]/ ?  O5 h% L
n=n/i; 3 C% e5 e, ~+ _! m
}
3 v7 h! ~" b4 Eelse 9 Q# q' b$ N; a. m8 _5 C+ q
break;
( v0 W) Q0 T: _3 T+ W} " M5 C/ ~6 @' N4 `! }6 \
} + n/ R1 ~/ [  ?# ~1 r( ~
printf("%d",n);} ) ^& b3 t: M4 i( V: y
==============================================================
% N- d& K% ~9 }1 N! w* s【程序15
5 m; l3 a7 l: ]' C) R) l题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
# ~5 ~1 p6 Y3 X, T' U0 P60分以下的用C表示。
* G+ W* `/ u) p7 P1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
8 [# k, ~: |. s3 u, q4 E; \$ w$ i2.程序源代码:
, ^2 r% W; L% i9 T0 `main()   n5 g# W5 [: k* @% Q/ j
{
1 M) v2 h7 R# C! y: x. |+ I) Wint score; ! v2 P- H) b7 b
char grade; : W% S  J% c- F
printf("please input a score\n"); ' Z( H; I6 G' s, B& K5 i
scanf("%d",&score); $ U  B6 ?4 H. d: h1 K: @
grade=score>=90?'A'score>=60?'B':'C');
; J3 k0 F$ O/ W! A$ Wprintf("%d belongs to %c",score,grade); $ k) X0 k$ l+ p1 m3 E) z
} - A4 D5 z( I9 q8 C& M
==============================================================
: g. p  ^& m# N( I. e( W
2 \3 t/ r8 T8 Q2 w
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械社区 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-3-29 19:17 , Processed in 0.053637 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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