机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2217|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序6
8 T9 R3 \# A. F题目:用*号输出字母C的图案。 - _3 e( c! K7 F3 K' u
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。   x. W. ~# b. r$ m
2.程序源代码: 0 w* B4 z+ k$ R5 V! P9 x' G7 [
#include "stdio.h"
) a% c- R1 T( amain() { ! h# m9 \3 s' {  H
printf("Hello C-world!\n");
) S" T' P! c2 w! oprintf(" ****\n"); & Q% t, `& b; T: E1 H6 O8 E
printf(" *\n");
7 N2 s9 H' R' o  u. Oprintf(" * \n"); 4 Y3 E3 h* S; ]0 i) @, k
printf(" ****\n"); }
$ c0 W1 b7 U' ~# {5 Z============================================================== 7 G- T* O3 w8 d) u) E8 j+ T# h
【程序7
. n3 ?% n8 h( w9 x! t% j( o+ }/ _* l题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
- r- _) a1 _' T2 T1.程序分析:字符共有256个。不同字符,图形不一样。
2 i. o( a4 K5 k3 \- l3 o2.程序源代码:
9 y5 _6 k# z% M, D! F6 @2 u#include "stdio.h"
! Y( W8 v# r3 H, z: rmain()
; Z& b1 `) k" K3 g{
. r2 H5 k) B7 ^/ ]5 z0 echar a=176,b=219; ; z; i# g9 {% t; x+ R# J- v
printf("%c%c%c%c%c\n",b,a,a,a,b);
' j! i+ H" S7 @5 zprintf("%c%c%c%c%c\n",a,b,a,b,a); - c1 M: c5 P0 g5 @! S. c
printf("%c%c%c%c%c\n",a,a,b,a,a);
/ L2 R0 n/ P1 W: n. V8 gprintf("%c%c%c%c%c\n",a,b,a,b,a); $ d$ t* n2 Y- D
printf("%c%c%c%c%c\n",b,a,a,a,b);} 3 A6 C/ ~/ S. y/ D( h
============================================================== ) s/ J" Z2 [& C) C9 C/ E) V  k
【程序8% y- I* }1 O, c- m. f
题目:输出9*9口诀。
" P7 x- K2 E, c6 ^1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 # Y! E5 H! {; L2 J+ Z
2.程序源代码: . h% a1 y1 M3 O& J' [5 P1 F
#include "stdio.h" & s9 B" r+ A8 D- _" n4 l
main()
- V) L: h) K5 }, k{
- y( |8 I" d7 J5 mint i,j,result; 4 V" _, T: ?& D% d; B' ]
printf("\n"); : ^- C* I5 a% j  y& b9 X
for (i=1;i<10;i++) 3 a+ n; i. {) f0 |% o2 m8 P
{ for(j=1;j<10;j++)
1 A0 k7 V3 j* \: k{ 4 z+ G/ K- W# ]- `' m7 a& I
result=i*j; / E# c. j6 D' {2 L7 Y+ F' S! e9 e3 y
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
7 ~. r* [. k. i} # d- Q  C% M3 f7 g% r6 l1 W
printf("\n");/*每一行后换行*/
. r: U: g5 I1 f5 _$ R% ?} " F! x2 v: L% J
} 1 H8 z: o- k4 D
==============================================================
4 m5 X# o5 y3 P# v+ l0 n【程序9! b+ E2 C7 F' l3 o+ Z
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)
% h. P1 M  H* P9 a* ]1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
. \- y6 c* m" G- E( m4 v6 Q2.程序源代码: - A6 [: ~5 M6 V
#include "stdio.h"
4 G. a% `; J2 B' gmain() % u, i; H/ Q9 V% G
{ $ F0 |/ i1 Z# R
int i,j;
; \' F8 P2 g: _/ @; ~  @! Cfor(i=0;i<8;i++) . u# v- [, L3 f' X6 i0 i
{ - B2 E! b( _2 b8 u& Q8 f
for(j=0;j<8;j++) % j1 y8 Q/ ?0 G  _8 S( p3 T, T- e
if((i+j)%2==0) 3 n" O1 t* |& j  F
printf("%c%c",219,219);
# S; Z- g7 y4 F7 E7 ?, a, _else
& O# _/ O  I: `$ o7 a5 }printf(" ");
  I. N# w$ f, f. N: pprintf("\n"); ! p& m6 `: V/ d; f; X* {, {
} / P5 }% \& x, j: U/ I! t
}
6 U% a8 t6 j4 s' I5 v============================================================== 2 Y* z3 \4 @+ J$ n
【程序10: x' ^! C# Y# |+ u" s6 l
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 - n2 g: g$ ~, b7 u. i
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 % n' i( Y5 C! O1 B$ x# Y" ~/ p
2.程序源代码:
# l# z) R9 l9 U1 A' C6 X#include "stdio.h"
) ?  N3 n: A( I1 e; s8 {main()
5 ^9 N% ], L' r$ Z/ _  g{ ) M, J& I: D' |' x5 R/ F
int i,j;
/ l2 V) a0 X7 H0 v. t4 O9 u: m% P" \printf("\1\1\n");/*输出两个笑脸*/
0 `2 g5 g; G" U/ c! afor(i=1;i<11;i++)
9 k+ l+ ?/ e( Y* j: d, r8 x{ 6 L- Z6 q1 \6 J! i" }5 _4 v
for(j=1;j<=i;j++)
* l1 j$ E6 [" L) V3 z# m9 dprintf("%c%c",219,219);
& b& ?  O5 ~" Hprintf("\n");
- |$ k8 W1 [* [7 `9 y}
5 n/ v+ E5 U; S! p4 j- @0 a* g}
+ {) }5 a' h7 S1 M- C8 V/ d' }& h, c' P# z

/ S* g' f1 `9 L. [% h
" v: b1 o$ _+ c5 _0 `作者: zhlei81 2005-1-22 11:29 回复此发言
) O1 w8 ]& h: u3 v9 V/ b+ l5 ]% t
--------------------------------------------------------------------------------
7 I1 ?% M1 ?4 h0 l: j
- T7 D8 U$ p8 K" B3 _% |% ?7 g$ D, u. I3 回复:经典C源程序100. H6 I8 e: b; ?$ s* \3 _1 w
【程序110 t# G& u9 F( a7 ~6 ~9 h# r
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
0 T/ h! c+ `* C6 A! Q后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? * m5 g: C  [" d1 y( M
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 2 e# p8 ?3 q7 y0 w5 l& x* S
2.程序源代码: : j! [; j6 T) r+ |/ x3 M/ z
main() 3 n2 X# R3 d6 }! P. G: |
{ 3 f& A( t% `  J+ M. F$ ^
long f1,f2;   z8 a8 @* A( }; ~  j! H
int i;
3 k( w; {; e0 r6 Gf1=f2=1;
' {6 m! Q0 @0 Z$ t& gfor(i=1;i<=20;i++) + ^+ m/ e8 i- C3 B
{ printf("%12ld %12ld",f1,f2); " Y% b& P- |  M% j
if(i%2==0) printf("\n");/*控制输出,每行四个*/
9 e3 }& ^, M0 w7 }5 T' W9 uf1=f1+f2; /*前两个月加起来赋值给第三个月*/
; T$ s* r% o6 j; }% T2 }+ v- Pf2=f1+f2; /*前两个月加起来赋值给第三个月*/ & U# B5 y6 ~$ o  s
}
+ N' [, m0 x8 F# C! C) W} , o% g0 p' p* w4 z
============================================================== " k& l, |0 s. T4 ^: `
【程序12
- r2 W1 H8 O2 `  k- D5 i0 N题目:判断101-200之间有多少个素数,并输出所有素数。 7 H( [1 h3 @- @4 z+ u7 m. |
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
: L  X1 |  ~3 a" K8 K$ y2 J: c% s则表明此数不是素数,反之是素数。 ' z+ ?8 F$ D2 Y, H' W0 J
2.程序源代码: 2 [! k- A! {/ n2 j; E4 g
#include "math.h"
' O/ r* }" s/ Zmain()   X4 x6 ~5 j! n+ ~
{
% H3 O$ z/ }- T, i8 f- \int m,i,k,h=0,leap=1;
. X: ^" M+ u/ s: K  J" T& bprintf("\n"); 6 l8 \* L6 V3 s  v! H9 b" B: J
for(m=101;m<=200;m++) # E3 o0 B! X( z  ?4 N8 ~9 x8 _
{ k=sqrt(m+1);
' L8 d5 S& D' O+ b% ^for(i=2;i<=k;i++)
) R7 `8 J$ V! A& Yif(m%i==0) - @% t* l! ]. o, a/ ~( ~
{leap=0;break;}
$ j9 p5 f  V; Kif(leap) {printf("%-4d",m);h++; ( }$ h% s( I2 v% Q
if(h%10==0)
! F5 e- \. E  j- Iprintf("\n"); ' t% b! p4 J! z# f& }6 f
}
3 v* L  q" y( I5 E* }: G* X+ G+ Hleap=1; # T' c; u/ a+ v& a
} ) j1 [) d1 N1 w; r
printf("\nThe total is %d",h);
( k$ |/ M$ z6 t- I' E} 4 u8 ?. @( U% A) C2 e$ Y5 q
==============================================================
1 ^# R+ @3 W  O' y: T【程序13- z5 \( r0 m- o% p# K( G  J
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
9 f  |7 x" B1 I本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
' T2 L( H* P% M1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
5 @# f: |, B7 |4 i3 n2.程序源代码: " W2 j3 D8 {  z. I' Z, K  O+ z& W
main()
5 f/ L1 A/ M' m$ Z0 C' v{ + e: f2 n9 O% P" `% @
int i,j,k,n;
: k& g7 x) N' {: ]$ y/ zprintf("'water flower'number is:"); " l! |! G0 C8 J$ S+ E
for(n=100;n<1000;n++) ) H% y3 D  ^3 `
{ ) M. ~9 Q  f* C; {( E
i=n/100;/*分解出百位*/
: i9 g+ u7 N% _! \" qj=n/10%10;/*分解出十位*/
' [: a3 r7 _/ o' _- @k=n%10;/*分解出个位*/
7 D5 z6 Y  G& M0 hif(i*100+j*10+k==i*i*i+j*j*j+k*k*k) ! o- k) A- H6 e- M3 M
{
7 `% P( f# u! b( z7 h. Tprintf("%-5d",n); $ V* {0 Q+ b" h7 g
}
9 C, a& k5 I  V; X4 W) C) }} % V9 g  k2 y& }: p
printf("\n");
& }. H, N/ [. M# d} ; N. \) Y* X7 Q5 z
============================================================== - S7 J1 K8 c+ t! b. G
【程序14
) E" t) G- T3 R3 a0 f/ C题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5' a+ D$ H- [, O4 Z

+ u% a! P4 f5 B8 }2 m- Z6 D; i. t6 L2 t: W程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
8 Z: O- {, n% Y3 Q6 p5 B5 x3 N1 j: h& w(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。 $ L# @; N, W' [# k
(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, % J. U! E0 l) y/ m! F2 z, T
重复执行第一步。
% M* u' c! H% i5 }0 m2 w* L(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
  M" u. U+ G5 ]" v  _2 a# Q3 k+ R* a( L9 C) ^- s2 r5 d! _
2.程序源代码: ; m7 k+ P3 x9 D& [4 i8 J
/* zheng int is divided yinshu*/ 4 Z9 F; W! z4 @
main() - ]6 D( F  A1 ~6 p8 F, A
{
: _! I* M/ g! i9 ?) f) Gint n,i;
' ~) [) l" O/ b2 {printf("\nplease input a number:\n");
# p  @% M# ~6 r; P# o; {) X* V. pscanf("%d",&n); 1 W+ g+ J$ g3 O* y0 }; x( I1 H6 n
printf("%d=",n);
- L+ e  U3 E8 r$ P- Xfor(i=2;i<=n;i++) 8 e+ ]4 y3 H+ r1 B2 C  f
{ 2 n& m; ~+ m- e! N7 \# K
while(n!=i)
" v( h8 Q7 G0 U3 t6 c3 n4 @{ " r# W5 [3 j( l3 S  M* o$ z
if(n%i==0) ; a8 ]7 s$ l  o. a; K5 i; C
{ printf("%d*",i); + W. k3 R9 {, G8 C0 }
n=n/i; * ^& b! E4 F. t- s
} & N. \& {- d9 A+ K
else
- x: ?6 u7 y6 _6 Pbreak;
) E0 y5 g' K" L( N' r}
6 m/ s5 w) k# H  h4 @}
  z+ V+ C7 u2 T  p5 W% _printf("%d",n);} 4 \8 N9 g1 v9 [9 N  {* e
============================================================== , f2 w5 \2 s9 o  j) L% T
【程序15
  o0 y, C6 `  K( v* d( W) ~题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
& _. |; V* R- @! l60分以下的用C表示。 : I; y0 ]2 N9 z$ F/ [% U
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
. {4 j: f9 Y; x2.程序源代码: , D" L7 \# x9 j8 S4 b
main() / ?) b0 C7 ~2 d! H4 H; M% c8 B
{ % y& b" b# w: Y1 m( D( V5 F! g2 h
int score;
4 X2 |5 V/ X# Y6 k* m7 Y8 U- E  Kchar grade; * q) {/ V' |" r6 M; C
printf("please input a score\n"); % ?# m0 \* L2 p& N# h
scanf("%d",&score); : M7 I2 D, g  }4 n' a9 d7 M
grade=score>=90?'A'score>=60?'B':'C'); * E, j3 r+ d' f9 ?
printf("%d belongs to %c",score,grade); 1 Q. s& h3 c) B
}
% c% D8 c/ q- U============================================================== 1 L, N; c* ?! U5 a5 F; O2 f9 h

6 d6 C( W1 ]: |) b; \/ }! J7 A4 E* v
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-10 19:02 , Processed in 0.054464 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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