找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2553|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序6
$ ?" D0 b4 z( H7 T+ i. u% U题目:用*号输出字母C的图案。
/ \! J1 O' A; `) K1 t1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
: `+ f* A- b9 e% v2.程序源代码:
% o" a5 i2 b2 {% N4 O#include "stdio.h" ! Z3 E( C- \. w0 |; \  |! z
main() { ! W( }- S6 B. M, |
printf("Hello C-world!\n");
# r- G& A, a- D: Bprintf(" ****\n");
$ H4 }, R: M% \' E' Z! Q7 nprintf(" *\n"); ; W6 d4 p+ S! }8 d$ h$ n
printf(" * \n");
2 Y: W4 h% c# k$ H* v) @9 Lprintf(" ****\n"); }
7 E% _' {" `3 a, g  q==============================================================
: t4 v0 C  K2 K. P) _# p7 X& a【程序7" I; u/ o1 p4 R
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! " w# g+ R0 j6 R* O& F6 @* a
1.程序分析:字符共有256个。不同字符,图形不一样。
6 H( {8 K6 C6 w/ Y  m! S5 T1 _+ V# O2.程序源代码: 1 m* K* A' K! y, \+ W0 ^8 t
#include "stdio.h"   A% j; u- H' A, @, P  L3 X% S8 ~# d
main() 3 H8 A1 l6 D8 j
{ , w/ l. I4 I. t* }: E- i6 B
char a=176,b=219;
# k; c, J  L# z  Y9 O, Kprintf("%c%c%c%c%c\n",b,a,a,a,b); 1 {  w6 E" ?5 i  y+ p- G% B1 `
printf("%c%c%c%c%c\n",a,b,a,b,a);
4 E% M$ O& ^: S5 Sprintf("%c%c%c%c%c\n",a,a,b,a,a);
+ a: M- d$ f' Qprintf("%c%c%c%c%c\n",a,b,a,b,a); ' n/ _' X1 X1 ~! ~9 D6 ^
printf("%c%c%c%c%c\n",b,a,a,a,b);} $ u8 F6 A1 b& d  {5 w' Y1 E
==============================================================
8 b7 R) P1 j2 G% m3 K8 {% D4 A7 P5 Z【程序8
1 X8 v/ G; y* u' S5 o题目:输出9*9口诀。
1 U- H# G% c7 R7 [1 Z0 |. q/ ?1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
0 p& ^6 O' T5 O' `+ `3 P2.程序源代码: 5 i( I$ F2 N$ I7 K% D7 x; m
#include "stdio.h"
+ r: X7 U) B1 w- s, ~main() + V$ D5 ^# a) M. j* n% z# r
{
) {/ B4 `) X( J! d# vint i,j,result;
  O+ I# c; ~! r: w' aprintf("\n"); # ^0 E, l1 h* q8 h- h! C9 Y+ @( [
for (i=1;i<10;i++) 1 Z3 ?( y. }# N
{ for(j=1;j<10;j++) $ @& n5 |% C. p+ o
{
% D3 x3 u' p" o& t+ wresult=i*j; 1 r6 r# z# [5 e0 c3 v
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ , J+ Y' y: ?- U/ D7 f4 P0 A
}
. x4 ^) J" j* F4 e  c2 c% sprintf("\n");/*每一行后换行*/
" K1 w3 a; X: x  }, f% r}
( y% U6 y2 A6 S: @* w/ |  e}
5 a* h( P* t2 g! D============================================================== $ `5 }; Q* |1 ]8 `% @
【程序9. ?! G" u, u' A
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)* m  H- s" V, t1 |2 y4 R$ n
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 * M5 ]* ]' C1 n7 }' D' }8 W
2.程序源代码:
# l$ O4 w3 P3 G1 H#include "stdio.h"
& a0 \7 N7 E- w  i% K4 \main()
3 y% N" `3 o' u9 A{ ; E3 {: E) s/ L) u1 L
int i,j; / X9 g. }9 D  ]! w' o7 c
for(i=0;i<8;i++)
" M0 k3 @3 Z* L/ W, r6 m{
1 S1 Q3 H9 l& F' n! n6 z4 ^3 U0 e, `for(j=0;j<8;j++) $ Z* Y* q" k1 ]& v
if((i+j)%2==0)
7 E$ q8 b+ w  P2 t0 @" `0 ~printf("%c%c",219,219); ( i$ h7 x: G) O& A
else 4 Y( R5 R" H/ _8 L, u
printf(" "); & z% ]- l& w! [3 T
printf("\n");
2 N7 @" \3 C) w6 [}   {% V+ t5 t- f+ }
} : ~# J/ j7 w* e* t. U- z
============================================================== 5 o7 B* Q0 P- X% q# d5 q
【程序101 |6 B1 T8 z' S- q! j: k) m6 o5 s4 N
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1 c% \; x2 I( y( z$ F
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
( P, R. A2 g7 {) F! a: o4 L) B2.程序源代码:
1 A, g0 ~3 t. @4 n# H) k#include "stdio.h" : \! C: ~' ]' S) [$ O& \
main() ; o, G/ C) }7 i" y+ ~2 ]) \9 i
{
+ \; E8 m! Q/ c5 P, Dint i,j;
7 T* x, j; e: {printf("\1\1\n");/*输出两个笑脸*/ 5 X, V( Y- A$ C- ]9 F4 q* e
for(i=1;i<11;i++)
% i* w; ?+ {, r0 l{ " m# c2 S# }8 `7 l7 X2 \
for(j=1;j<=i;j++) ' f4 ?" R* ^$ p' [1 @; f# I7 p
printf("%c%c",219,219); % M7 c6 N. k9 G/ J. B
printf("\n"); . N6 s- T  Y+ }
} 9 h$ H* u/ u1 O
} ( d: @% K2 A, H/ j6 e
6 Y  H# N* L+ a0 j

" a( f: k) |1 L, P9 p0 y3 S, s$ ]  O) R+ G1 Y' N
作者: zhlei81 2005-1-22 11:29 回复此发言
% u7 f3 C9 N' o. _7 O& t7 ?4 `0 j" f3 P
-------------------------------------------------------------------------------- & B# ~+ A6 M1 L! Z$ V5 b2 E
( q; H& ~/ U1 ^6 L
3 回复:经典C源程序100& B' m% J4 y& O
【程序11
* u3 s6 X% b% k: B. W) F% Y! A  w题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
/ _& Y; U" L  R8 h后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
$ b% z* a  L5 S* x# F1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
# @8 e+ T0 f' s4 n2.程序源代码: 1 D# l- K9 e/ d# x. e
main()   b3 P# P3 L8 O* W
{
6 ^" f  a6 B# u- B* x0 [long f1,f2;
( L1 S! F2 {3 k5 p0 n" @int i;
* `! X* O, D! ~7 q/ ]f1=f2=1;
2 y* Z4 A  x! U$ B( k* ffor(i=1;i<=20;i++)
" O, J8 _: ]' G0 T{ printf("%12ld %12ld",f1,f2); 2 o* `0 z3 _0 f$ W3 v% ^0 Z
if(i%2==0) printf("\n");/*控制输出,每行四个*/
3 a; [* [  C8 ^/ Y& z; I8 Of1=f1+f2; /*前两个月加起来赋值给第三个月*/
7 _; @5 s. f2 kf2=f1+f2; /*前两个月加起来赋值给第三个月*/
1 ?! x! Q6 ^7 U; \} . Z- x, g5 y- P' t# G5 b+ b6 J
} # I, x" }: }! v! X* u
============================================================== 1 j5 |1 s5 t8 r( N
【程序12  a  ^# Z% Z  t6 h, s5 D9 j
题目:判断101-200之间有多少个素数,并输出所有素数。
9 v5 [9 O3 y! h/ e1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 6 _2 C! z, K3 m2 h+ k- e
则表明此数不是素数,反之是素数。 8 m+ [( V+ x& b1 g7 s; t2 i4 g# _; _
2.程序源代码: ( h4 M+ b5 C3 u6 v1 k
#include "math.h"
" K% K+ G, ?+ q; nmain() 3 {: n( K) J9 E! d7 V- O( F& K
{
1 `& K; {, A) U4 bint m,i,k,h=0,leap=1;
. g4 A. e2 }3 [( P) p/ B# gprintf("\n"); : ]1 v  N3 x1 R  s3 U
for(m=101;m<=200;m++)
, E- E5 s) U2 m1 t, R{ k=sqrt(m+1);
7 i3 e" Y+ ]! ?1 D: u2 X, ifor(i=2;i<=k;i++) " P  l/ ~) l- i6 U5 V, V
if(m%i==0) . A! m. W/ U5 f, i6 K; C8 Q
{leap=0;break;} ' u, [& J: E+ i) W6 _( i
if(leap) {printf("%-4d",m);h++;
& v7 P/ N" l, ?7 \2 Y* vif(h%10==0) 4 U. A$ V# q! H) F
printf("\n");
  {, U0 h2 ?7 F2 v' U2 T) o} 2 r4 X9 x/ [) S, R. f5 t2 V/ S6 I1 ^
leap=1; & T- o- h: z1 ]# H/ d$ H0 M% a
}
" G# R9 ^6 f& _5 p* ^1 Tprintf("\nThe total is %d",h); ) N, C# Z3 r- m/ n
}
7 s) H8 K' [8 ?! e3 \- L==============================================================   N1 p0 V8 [% k8 |
【程序13
: U3 M4 g0 d# z8 l( M* X7 W题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
, ]9 u, n) {+ ^0 e, P1 x- C) h, G2 z本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 9 f/ E! S7 U6 _5 P& K+ D. c( s
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
1 O+ o# z: v' H; c0 o3 ]3 v2 F, h2.程序源代码:
  H$ y9 D2 m6 [8 r7 G! i4 Lmain()
5 u, v9 g3 P7 t) Z- m{ + i$ ?& x. Z+ C2 x; ~3 Q
int i,j,k,n; 2 Q) o. ]; `; Q( @0 f5 n1 b
printf("'water flower'number is:");
. j$ n% i9 x% V3 j( y1 }8 j: @for(n=100;n<1000;n++)
- n3 I. f$ P) o! X# I8 K7 N{ " s; ~9 }! E6 ~& l7 E8 b, I" U
i=n/100;/*分解出百位*/ $ h* [6 Y; Q" Q% ~1 U, V- R
j=n/10%10;/*分解出十位*/
9 Z2 L! I' `, {9 Q* Q7 z7 qk=n%10;/*分解出个位*/ $ }  }( W$ t3 g# N) |8 W0 m% C! {
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) 0 y- F6 J* N8 F6 h& D7 d
{ . V" t) |, ?  Z
printf("%-5d",n); % t5 H+ A/ y' a" z$ `- k
} 3 }: e7 _7 M; C/ @% b
} 8 j) J& b, Y/ C  M5 X; T# f
printf("\n"); , C( _9 W. H* ~/ {% N* y0 b, [
} 7 v# v7 c$ m& Q- ]+ K& c  [, x7 }
==============================================================
  b' `7 L2 p% T4 F5 O7 ^  N- [【程序14: k% }$ ~9 Q( a; c% t9 G6 _
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
' u8 L; z5 w1 s4 b) W
7 H: d2 t8 Y0 s- E, u0 o程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
0 Y- d* |- N( B1 ?7 U! s(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 1 y- ?+ L# n1 H
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
9 L3 U+ F% V/ V7 w重复执行第一步。
9 }, J3 T) Q/ v2 D: e, z" _% h(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
! r4 I! Y  w; b2 _$ D. }7 _' w, |. }' n3 m( p5 O$ R
2.程序源代码: ( j# \! f6 e& ?0 [: T9 m; s
/* zheng int is divided yinshu*/
4 g  v8 g5 N: \# wmain()
# w" Y+ G" X3 W. k  r. \- H; p+ m{
" `6 O" ~( F, q: T( A; Aint n,i;
7 _0 S4 k% X, C# U9 L; hprintf("\nplease input a number:\n");
1 c: A" r1 p# F$ k5 F6 A8 A* F, }scanf("%d",&n); - w: Y1 F! z4 g/ p
printf("%d=",n); $ r6 F: a3 v( u
for(i=2;i<=n;i++)
# \, b1 B3 t/ n$ r- h* l- H{
! A/ O) W' C& Zwhile(n!=i)
7 k2 p2 i8 O) R- y) ?7 ]2 Z1 o{ ( b  O3 Y9 y. ~2 K
if(n%i==0)
8 G4 N: F4 i7 O8 Z! W- O; v, T{ printf("%d*",i);
- k1 q+ d6 r1 p1 n' zn=n/i; # s/ D0 {: z. G+ Q6 A4 ^5 q
} 8 I9 h  h* U3 i( D1 r: U
else
" E! }  Y8 [) K" x4 Ybreak;
7 C- F& L# M4 n}
7 o4 P# T  N( a0 Y; k}
, R7 M: K. r% D- t6 yprintf("%d",n);} 3 ]+ z' l7 e  G0 z) C
============================================================== 3 F, c  @2 z& \) I5 j+ n9 B- s
【程序15
8 C1 w1 L6 n/ _9 l- r题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, 9 S2 K1 L5 j& z0 K
60分以下的用C表示。 4 s8 s6 ^: S4 _$ ^
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 . a5 Y  E1 A% V
2.程序源代码: 1 R4 R' q( ^% G
main()
! P& D( x: v) Y! X5 B! }% R{   d" I" C, t7 w% q* b
int score; 2 |7 s; j* c! @, h+ j/ Q
char grade; 5 ~2 \  f: A  n; E$ o
printf("please input a score\n"); 9 |. D. W; V" Y$ l* E
scanf("%d",&score); % }: s: H+ I7 [$ n* @. y5 c
grade=score>=90?'A'score>=60?'B':'C'); 7 M0 o/ D2 v9 ^8 W9 y9 u9 F
printf("%d belongs to %c",score,grade); 6 L: E) F1 \' d6 r- \
} ! J. [) A; m: @+ w4 M8 [! a
==============================================================
( C- s# l: r- ~% s0 K1 X

& U2 \! O3 [* g: [  {* @# i# o
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-3 03:48 , Processed in 0.071571 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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