机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2350|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序6
/ A& j8 p, Q( [6 ?9 z题目:用*号输出字母C的图案。 0 R) u5 \( r# A; s
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
* S. [5 E% ~  v9 Z2.程序源代码: + {* {+ y+ v' p' f
#include "stdio.h"
% o$ g. l9 w3 [% j+ D  P. Fmain() { 1 E' e) K9 B5 a+ N9 Q2 _. u" C
printf("Hello C-world!\n"); 5 d: m" O# c+ {8 N5 o# ^/ X
printf(" ****\n"); 7 j7 \; o1 Q" y1 M) `+ f
printf(" *\n"); 4 {! @* D2 ~5 O( d" f' v
printf(" * \n");
; K$ T- A5 G0 O8 N: b' ^printf(" ****\n"); }
' S( p7 v9 L+ }$ H+ h/ O- B==============================================================
- q% @2 K, T3 K: M  G* B【程序7
6 f! |$ T% L  M5 r题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! 9 Y0 ^  Y4 w+ V' I+ S1 T5 h1 k
1.程序分析:字符共有256个。不同字符,图形不一样。 & X% A7 o3 b% V3 B9 I+ n
2.程序源代码: , _, v! p* w. a- Z& a8 i5 X6 p: Z
#include "stdio.h"
1 G# k( {1 Y+ x8 T  Y, rmain()   [! @0 `( x5 A6 K) y
{ ' P! n, o0 p5 I3 I
char a=176,b=219;
( s8 e6 X$ c" h5 h! C+ Xprintf("%c%c%c%c%c\n",b,a,a,a,b);
% K) I- @) F# E' P4 ^printf("%c%c%c%c%c\n",a,b,a,b,a); ) X: h3 i* E% S/ F8 _* R, o
printf("%c%c%c%c%c\n",a,a,b,a,a);
3 R8 d2 r$ Y8 h; I3 m( Xprintf("%c%c%c%c%c\n",a,b,a,b,a);
' o& ?0 L; A, x$ gprintf("%c%c%c%c%c\n",b,a,a,a,b);} ; Q7 I! l* z% W& ]4 A) W
==============================================================
& f6 m9 }* u; _! H; N, Y! Q8 ^9 q【程序8
  ~1 X( s0 B/ ?# z' s4 N题目:输出9*9口诀。
( w/ o7 c8 R3 n( `1 `( M1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 : W+ A0 P. Q* b
2.程序源代码: ' N4 P4 C) c  ~( ?
#include "stdio.h" & V7 A3 Y# y1 c1 j) z
main()
4 V3 c" K6 G% _5 \. R- b- x; O{ ' r7 N. T4 ~' l
int i,j,result; 0 M4 @# \$ I: o9 I6 E4 b
printf("\n"); 5 r1 x3 G* O, G8 V; S5 C3 ?; B
for (i=1;i<10;i++)
: c4 |( e, c# @, r; P{ for(j=1;j<10;j++) - j" j4 B& j$ X! a; \$ q" g5 x
{ + K/ i6 N$ n0 T
result=i*j;   K- P( U( ^0 d$ @& g+ `
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
' `+ H1 R3 i& `' }} 9 a; q2 C8 h! h2 E7 t" C+ n. j
printf("\n");/*每一行后换行*/ ' j- \2 n% n! x$ \' k
}
4 c6 i# s1 U; M  r2 P1 z} , `; X! [* F# J" G( M) z  n; i
============================================================== 0 A- Y% i: J4 z4 b: H- X1 G
【程序91 W9 D8 p1 A: n
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)
; f4 S( D+ }9 ?2 ~1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 9 P- W2 c* E7 t
2.程序源代码: 9 p- b$ H8 V* p7 B7 x* g
#include "stdio.h"
( Y5 D) @, I9 g- k4 K7 o% h5 `main()
/ C$ B. i/ C. @0 ]$ z{ 9 n/ |1 U& Z) y" B) I
int i,j;
6 \  t# g, r, O' Tfor(i=0;i<8;i++) ' E" c. a8 v, h) d6 m# r
{ 9 B( G; C* G' D: I! p7 i' w6 A$ n$ a
for(j=0;j<8;j++)
" c, E! g# c4 n# K7 K# fif((i+j)%2==0)
( L; j! f& Q# {! }  wprintf("%c%c",219,219); . P# Q2 a: c; _
else
. ~$ w$ {$ w2 F. |% {0 _2 sprintf(" ");
. Q& T. X* p3 ]# E9 Lprintf("\n");
. d) V& A( }+ w0 [- F}
7 c; w  w/ G8 m0 E7 X7 E9 g} ( f3 M; E. O6 S8 i
==============================================================
1 c' M- L$ c6 Y3 A7 j% |6 K! J; t【程序102 y/ ]0 e+ ^) z, p, n
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
2 v2 k; Y" K! M  z, ~1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
+ K7 o+ Q3 b9 s2.程序源代码:
% a$ k/ ^. q; }" y#include "stdio.h" ) n1 y% O3 G3 d+ @3 W$ h
main() 4 u" f9 G$ x* B  B4 M' H( N2 l
{
# F' ?. a2 m: x& kint i,j; , l2 `' Q: [% M9 E; I
printf("\1\1\n");/*输出两个笑脸*/ 9 i. u2 q7 z8 D2 M
for(i=1;i<11;i++)
0 ^' e, X: o2 E- y/ u{ 8 o) }6 Q+ d- n9 C
for(j=1;j<=i;j++)
3 ~! R4 v4 k  L& b$ y2 _; e- M7 Bprintf("%c%c",219,219);
$ ?* I+ v1 v4 vprintf("\n");
% m) ?; K, [7 T0 P8 @}
7 {: r' t! b& |& G0 ?}
: s7 U" R6 l* X; P1 |% W# @4 k+ ]% q" z3 m5 }

9 K4 _- C0 Q$ o# z2 r' q; c9 Y4 R4 r2 H& j, k$ X% }' s* |1 E
作者: zhlei81 2005-1-22 11:29 回复此发言 - b$ k8 J, P$ L6 h

' t' t/ o* x! u--------------------------------------------------------------------------------
/ U0 l% M9 s8 p9 X9 n5 Y4 Y0 i+ f3 X9 T
3 回复:经典C源程序100
$ T: F! J3 s5 r, k【程序11
) C; @9 @+ ]+ ~9 t题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 9 R7 C, I( e3 T
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? % H% p8 X( ^; e0 i+ O# j8 v+ Y
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... " c/ f4 ], U0 W! N/ @
2.程序源代码: : u7 ~7 _2 r/ k
main()
/ O6 e/ |; w" J$ R' ?, Q& G{
/ E* b3 w  M9 K- }) O5 Blong f1,f2; 7 {" N- k5 x% x2 P. [
int i;
2 b: z* N" a. N& @0 pf1=f2=1;
3 T; R4 Q! ~2 q4 T2 E  pfor(i=1;i<=20;i++)
9 b, J  }  ?3 i{ printf("%12ld %12ld",f1,f2);
( e; c/ ~+ v$ V! A( A0 N3 z1 B0 E) rif(i%2==0) printf("\n");/*控制输出,每行四个*/
+ ?. O- F& b, ^( p8 Y; ?2 [f1=f1+f2; /*前两个月加起来赋值给第三个月*/ * n! f. F/ r  Q. ?! j
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
' E. D! d- _; `/ b$ f  H}
) n6 M, R/ w' v% x1 T}   e9 l9 ^" ]) w/ w- E/ X: {4 b
==============================================================
$ l! U% O0 {! l% C* W. S6 ~# G8 v【程序12
9 ?8 ^. w9 m) {% A! u题目:判断101-200之间有多少个素数,并输出所有素数。 4 B+ [/ B  S/ W( L2 H, \3 P
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, % A7 m& q% `; \4 E" I! K$ V
则表明此数不是素数,反之是素数。 # r* s0 C  |  r1 W' e8 z
2.程序源代码:
3 u0 K. X# d6 M5 d#include "math.h"
( @9 v3 Y4 y+ X+ J- e6 T9 hmain()
9 o) @9 Z3 J9 ?, n" G{
8 S1 j4 y3 [/ v# n5 C0 ]int m,i,k,h=0,leap=1; ; _2 Y* Z  \3 v
printf("\n");
: [! H2 k! {: M& Y* }2 W# G6 Pfor(m=101;m<=200;m++) ! E% h7 i8 R0 a
{ k=sqrt(m+1);
. l5 Y5 _  V6 E# t) \for(i=2;i<=k;i++) : _3 U, X) p3 N- F& X
if(m%i==0)
( u( {2 A3 u) s{leap=0;break;} 7 z9 o' |0 T( M
if(leap) {printf("%-4d",m);h++;
  m; X" B7 C9 s  sif(h%10==0) 6 b  K" ?7 P6 M+ E; ?
printf("\n"); 0 G8 r5 F+ R8 A1 t: z; d# ~, O
} - j( g3 Q/ R* b5 ]6 K$ |/ k
leap=1; 9 e* q2 v: ~8 ]" w  C3 B% Y
} 7 y4 h# {# ~; G. C( l; c
printf("\nThe total is %d",h); $ \- I% `) z% C9 @! \, i
}
& A9 p6 @. r$ U$ ^============================================================== ; ^- c! C3 h; d* L# D& n
【程序13
6 s5 S8 o; O4 T* C题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 5 _4 k6 k+ V8 a8 @1 _% R
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 9 D( s0 l. c+ l+ h" R
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
1 N# H+ l( f7 W, n# w5 `2.程序源代码: ) x% Q% [! ?- J$ B% ?- S& m7 V
main()
4 _! F$ J# a9 V$ ~1 `{ , b0 n7 T; @2 V
int i,j,k,n;
7 r9 D% w! q8 i; qprintf("'water flower'number is:"); " ?- i& q2 N: h
for(n=100;n<1000;n++) & \8 O4 l: @* v+ @5 q3 Y2 @! t
{
9 {/ A3 R6 F. _; D5 z0 R3 @+ {i=n/100;/*分解出百位*/
4 a$ J0 S7 n; l+ [. X2 v! N5 Hj=n/10%10;/*分解出十位*/
* [: l) w6 W" {  l0 Xk=n%10;/*分解出个位*/
' i& c& Q* f# O( p9 k. jif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
/ h$ c7 N+ j6 Q{ 9 O3 F3 }9 X* f) _' h! d2 m6 A  p) V
printf("%-5d",n);
* |8 S8 J0 t) u} ) O/ p  d8 I' W' W5 N# p3 d! w
} $ e/ _5 ^: {- g0 U' d. H$ ?
printf("\n");
, a, g" y" `: w" P. |( b+ {}
2 S4 n; Y/ l+ L& Y$ o, y" i==============================================================
# _) V6 U1 S8 Q【程序149 @* O3 {* p. T; K/ e
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
; U. e0 z6 W5 n& |/ e9 s. ~
( b: @+ s3 b- }程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: - N  i# M+ `$ H3 O7 E
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。   b0 M& M* d# f
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 5 x/ B4 N* I1 f4 L
重复执行第一步。 * ~: c; H+ @7 r0 Y/ Q
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 " d- a2 \. d" h. y2 H
$ m' ^! h; _6 K
2.程序源代码: - d$ w' d8 ^( t4 J+ E* h" Y( Q
/* zheng int is divided yinshu*/
; @7 I- o% E( Y6 s* Xmain()
; Q3 E6 g+ m5 I  B{ " g( d, g" a- j) p6 I
int n,i;
0 F) X! \% x. U7 [! dprintf("\nplease input a number:\n");
2 Q  \  Y* N. |, Vscanf("%d",&n); 5 V+ m" I+ o, h- F& N% i$ f# l
printf("%d=",n);
1 P7 I6 ^! a: v6 @6 M( q( _for(i=2;i<=n;i++) & s2 i, C% S; ], l. a. ]
{
+ \* ?. p5 O5 A6 R4 nwhile(n!=i) ) ]9 q- F- w! n, C6 U) d* ?
{
( p* e3 _- T+ m- H# `if(n%i==0) : r  B; C- d/ [) e0 t( R: [& D7 z
{ printf("%d*",i);
3 X  X! \6 y% Q5 d* f' `5 u! Mn=n/i; 0 H. ^7 G8 U: Q0 ^; c, E
}
: ?6 T7 w! q* H4 J3 p6 |else 6 Y* [! H' G, b. j- m/ b4 U! H
break;
* L$ y. T0 M& U+ H. T3 A& @}
% i$ y+ N2 B9 c1 B}
1 G$ I* i6 t6 J1 H. C% [/ {, @& Tprintf("%d",n);} 5 V; O8 x9 \0 M, M8 W' K
============================================================== 2 u4 p9 _, e6 @
【程序15  X: ]6 i! O. M1 b1 X7 v( j
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, ) X3 p5 y5 p9 D+ q1 l! [/ e
60分以下的用C表示。 " ~2 h, x0 ]( q$ Y' q* f, `
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
5 {7 |+ r" }( G' Y/ U! v1 `2.程序源代码: 5 l3 X7 g/ Y3 j$ h$ I5 D7 _. d: \
main() / R# ]- s' t! o, c% p7 D2 o
{
& @4 ]  m* ?  m  X9 d2 oint score;
  K9 X  A3 J- g" _' m) o3 j1 Rchar grade; $ x7 V  f% g8 ~: ^1 M
printf("please input a score\n"); : f6 n  @- j% T+ K5 a% ?0 k% i
scanf("%d",&score); 9 ?7 T, N$ q# `+ X' y' \. e! n
grade=score>=90?'A'score>=60?'B':'C');
" l# q3 J& |0 B& @printf("%d belongs to %c",score,grade);
5 Z! Q* H3 |1 N$ r) K}
# T5 |& s( K9 D# U0 [==============================================================
3 x' V% S3 Y  G( m( j2 X# ^
2 f0 x- E& ^4 y: I6 U& i, W* j
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-28 01:40 , Processed in 0.054474 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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