机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2345|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序62 K  t4 C2 M  S7 f1 V) b- M: u
题目:用*号输出字母C的图案。 0 i6 G" h! ~0 U
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 & S7 j% H7 y- x1 W
2.程序源代码:
8 c9 j, |  t# H) Q  Q4 r#include "stdio.h" % o  j4 b% j! [" g: H6 X
main() { 8 Q6 ~$ P+ K3 |0 B
printf("Hello C-world!\n");
0 M) ]4 g: M/ ^) w( {( nprintf(" ****\n");
6 g4 y  u1 \, U1 a; _printf(" *\n");
4 V6 P$ q! q2 S8 v$ h/ Zprintf(" * \n"); ! [# g5 z  W7 w& s
printf(" ****\n"); } 2 n, l  B+ m7 h! ^
============================================================== ! U* R: \9 K+ s* H; ^. j0 q, H# L. @0 e# E
【程序7& h, \& n( o7 _  q1 i( B* a0 V$ v4 @
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
/ H2 S/ S2 w/ J# x' p) @" N' s; p$ m: W1.程序分析:字符共有256个。不同字符,图形不一样。
: X! ?; b" O; V+ p, i& m2.程序源代码:
3 z3 o& u: t! g: y% H/ Q#include "stdio.h"
( h7 w/ h4 ?9 _5 Q# a2 f& |main()
( X3 J7 y* S" _5 I: b3 b{
5 W$ E+ R. q5 ^5 U" A. achar a=176,b=219;
0 ]2 j* W3 P; F+ A4 Xprintf("%c%c%c%c%c\n",b,a,a,a,b);
1 L" f! @$ O8 {  T: N, ?% Kprintf("%c%c%c%c%c\n",a,b,a,b,a); 5 Y8 {! F4 }4 h$ f9 i+ b7 H( j
printf("%c%c%c%c%c\n",a,a,b,a,a);   q; E7 t& P/ j% Z
printf("%c%c%c%c%c\n",a,b,a,b,a);
: l! e/ r7 c6 j6 {, w5 iprintf("%c%c%c%c%c\n",b,a,a,a,b);} . T% D" {% j1 L0 R
==============================================================
4 m7 u; A  T5 H& x# x7 s【程序8  r. j6 p. ]+ n, ^- L7 ~
题目:输出9*9口诀。 ' v- z1 D0 U/ V# ^6 O5 |) h7 q7 l8 @
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
8 T* k# {" K. f1 w) i1 q6 `( t& q2.程序源代码:
4 s$ p. R4 W7 h) P9 m#include "stdio.h" 3 j. w: z. w& `4 F; h8 X- F  Z
main() 6 q0 k$ |' h$ |" u9 t8 }; _  m# L
{ & K/ C' g& q- d* l' ~7 b1 X
int i,j,result; 9 W& Z& }4 E, p1 b9 F
printf("\n");
2 b4 o* J# U0 [" `/ mfor (i=1;i<10;i++)
* b) }9 T( O" K; k5 X. ?% @{ for(j=1;j<10;j++)
# V# o1 ?; }2 \5 F  b{
" @6 D0 d8 J* `9 a8 U% \result=i*j; . w( q9 [. t" N0 o4 U
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
' j5 o' m/ m5 U$ A6 y: i8 o/ t$ F} 6 Z# q# Y4 f, J  N$ R" D/ {3 F. l$ t
printf("\n");/*每一行后换行*/ 3 v& D5 O. H1 o; E% v
} + M( _" g' g' N* L& l
}
  M2 R3 {* s; z9 E9 V============================================================== 4 D# [+ A0 N2 v8 L0 J" B
【程序9% U) o% ]8 _8 j! ^: y0 v# `" A% s
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)$ F; q# R8 N( O  F9 I6 l
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
! D, D/ H, B* H  c3 D) p4 s2.程序源代码:
3 j4 |% Y3 b6 ]2 X7 j/ m" V#include "stdio.h" 1 U* m) S3 W& O; U
main()
+ U/ L  v- n; w0 x' c; D{ $ i' H& d) {6 ^
int i,j; 5 {/ V5 ^6 V8 X1 h+ V! {: s
for(i=0;i<8;i++) * H) H3 V! _7 d5 A
{ : a7 w6 ~$ s4 Q& p% G" X3 Q
for(j=0;j<8;j++) 0 v2 F' c; h& Z! }" S( ~# Q8 t
if((i+j)%2==0) % O, E- j0 a- j3 l% u; x" s* p
printf("%c%c",219,219); : ^( c, Y) B3 E+ u, W$ [
else 2 {' F2 D! ~: s
printf(" ");   ^- F3 L% A8 M$ G0 s
printf("\n");
3 ?1 y7 @) M3 H+ ~/ [+ }: Y, {}
  n' E' A3 e* d  v- f  ]' Y1 P% ?}
) z& [" F. j  n8 s==============================================================
  C4 J0 g  R7 b) {5 d9 [6 n【程序10
- r- r# d' ]6 J( S) K8 e$ ~题目:打印楼梯,同时在楼梯上方打印两个笑脸。 2 |4 J: \/ h& d+ E- |
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。   K/ U7 ^2 Z# ^  R! ]# D9 o
2.程序源代码:   T! @) V6 T* u# @
#include "stdio.h"
6 {" K& }2 Z, v" Jmain() 5 D* Z/ @% \% j0 H/ r7 X& H
{
) d4 t6 u. h  Y- ~- ]int i,j;   T6 g% S' Z& E2 V) w
printf("\1\1\n");/*输出两个笑脸*/
; ?0 j- [" [4 g( {: G  g- c* Pfor(i=1;i<11;i++)
& g! g) c( c( I0 O1 c{
/ D) O; p# K& _for(j=1;j<=i;j++)
9 a- V0 m! }- n/ U. ?+ i+ o7 i: h! Mprintf("%c%c",219,219);
* J! B/ r4 L" H! d+ }4 O7 t, [printf("\n"); 5 ^; W4 |. b- P5 m) R
}
1 p: ], U; P. r: T} ; C; n0 i) @6 Q/ S" v- o+ h9 b) ^

1 H' y1 D) t% i7 }  e. K- W
/ n2 c/ q* E9 J: m3 R- t+ u. }5 G8 \  R6 h" ^# T/ o9 Y) j+ M
作者: zhlei81 2005-1-22 11:29 回复此发言
5 m' t' C1 |. j& l. q
- I& B1 N+ L/ P+ e4 k- ?( P/ v4 u-------------------------------------------------------------------------------- $ A! p. e- P* _# D
3 f' i2 r8 F* _9 ^' q) c
3 回复:经典C源程序100
/ d; a2 E2 A1 G! T【程序11+ B2 K/ l2 t' H
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月   p3 M& N) B. L; x: {
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? * s5 ^& P; f/ N7 ]0 b! ?2 W6 M4 }
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 4 d# u# z; W* m% w
2.程序源代码:   `( {7 I" C. h3 B( `
main()
9 A. P0 E7 k  I/ x0 B{
: l7 I4 C$ Z% t' Y6 b1 N  ilong f1,f2;
+ s7 ?/ i! r' l" e- \- S6 w! C/ tint i; + u! X/ L+ F5 X( t* x/ g- ?2 s5 `
f1=f2=1; 5 D0 @2 n; P! Q5 m$ ]
for(i=1;i<=20;i++) . ^6 c. n! H& ^, f  j* E
{ printf("%12ld %12ld",f1,f2);
6 s. F$ C4 |. L, \' `; |" j! mif(i%2==0) printf("\n");/*控制输出,每行四个*/ ( P8 r2 o2 k: k# l; H0 W
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ ! ?, K& S# E5 o4 }% F" ?
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
5 j$ J7 n! q- A; q8 d}
( D* b! h: s) ^7 [+ y* T( t; P} 0 E+ H2 y3 x3 a; ^7 K$ \4 q
==============================================================
) f$ Q7 B* y# @$ q【程序12
& n) B5 |1 I* l& H, I题目:判断101-200之间有多少个素数,并输出所有素数。 + m( c4 ~4 J5 L+ ?( S. W( E
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 6 m7 J& W$ ?9 O- }, `5 u" S/ S
则表明此数不是素数,反之是素数。
9 B+ O6 p  y1 A- u2.程序源代码:
+ L4 |" [' V7 U6 Q#include "math.h"
( N0 @4 S! l* o& ^+ ^4 A: Gmain() ' x' p5 t' P& @; Y- S0 ^3 h/ V/ `, O
{
3 I; V& f# ]4 c1 Nint m,i,k,h=0,leap=1;
& {6 j' z$ K- o* yprintf("\n");
2 `* h1 K+ b) Y( h; s7 Ufor(m=101;m<=200;m++) 2 `; @4 t! c* z! m- I9 ~
{ k=sqrt(m+1);
  a5 z( G. U$ M& i: d1 b" {0 xfor(i=2;i<=k;i++)
5 ]- G! G4 b. k' p# Xif(m%i==0)
3 D* e; d& S8 l- `{leap=0;break;} 1 x; K9 M# F0 J
if(leap) {printf("%-4d",m);h++;
# F# Q/ x/ \) ^- m; n, tif(h%10==0) 5 `# j, ?- ?7 L3 |5 A8 e0 m
printf("\n"); 3 M0 _7 h8 f/ A4 v* f5 B' N7 h. I
}
0 L& A" A7 z' J# S; `leap=1; . t/ h- b6 \  Q# J/ W/ L5 Z% K
} ! N0 d( |3 D$ _/ M0 A, G/ W* B
printf("\nThe total is %d",h);
- X' _/ Z+ u/ P0 V! ?}
0 d  O: T5 @# d, [& {% D============================================================== 3 u- M. V9 _0 M) @
【程序13
( `2 F* p+ Q2 Z, M题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
; X; g. q( ^5 I  F本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 % b) Q. P5 a# L9 z' V! i
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
, @9 k* f8 S4 t6 D- N  {+ [2.程序源代码:
7 i+ |% \5 \% j% Rmain() 4 |; Y/ Q3 q$ W) k8 v+ l7 b
{
9 D& R9 n4 M% S. O6 {; lint i,j,k,n;
; a7 x! F6 L1 g9 vprintf("'water flower'number is:");
, ~6 r+ E1 {  @$ w  q6 }: dfor(n=100;n<1000;n++)
4 d7 ?- N3 f$ E& F{ 7 I( F) F0 d4 ?; b& _6 m
i=n/100;/*分解出百位*/
0 Y" E4 L' f/ A& j& P$ vj=n/10%10;/*分解出十位*/
9 K: h# W- ^, A: wk=n%10;/*分解出个位*/ 1 q/ A3 b9 \2 \& u) |" j
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
: _) t5 x; `6 r' ^4 K{ 5 ~$ F/ R6 p5 l. @& @
printf("%-5d",n); * T! O3 Z# K2 c2 T. b' ^
}
) f9 b4 u1 u; ]- n8 ^}
% k5 j1 l0 R, hprintf("\n");
7 H( z# R% N) |# x) r}
  B' ]* l" C) g+ M==============================================================
. N/ ?/ e7 e: h【程序14
+ O4 L" q. O" F题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5: Y, @+ e5 h! `9 \2 B) d$ Z

( e( a* Q: ^8 E' k  [9 X程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: ( O# w, P: R" K3 z
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
( ~' j. }9 A4 t  k6 E(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
$ b7 F4 a+ i( P- R  y重复执行第一步。
1 C7 s4 l* H0 q$ [(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
. D& E# E$ B9 ^6 G3 y$ o9 F$ @2 {, \) z* j" c# D- ~
2.程序源代码:
  [) Z/ f# ]& n% H) ?: p+ |/* zheng int is divided yinshu*/ - T3 Y) O# P, b# f& \, N/ q0 a
main()
& O; u0 t3 W% [( x" w! L+ a$ x{ 9 e1 I# |* j4 N; L) R
int n,i; 7 U9 d! q$ _8 i+ \0 r
printf("\nplease input a number:\n");
2 Y! X) C3 G( s* Zscanf("%d",&n); 2 u2 Z( E& A! t* u
printf("%d=",n); . w3 o, B1 P3 J- x7 J3 T
for(i=2;i<=n;i++)
. R! B& C6 k+ p! p{ 1 [9 J" c( n6 Q, Z: Y- c, d( p
while(n!=i) 9 n! h* c4 ^; W! ~) j) C5 J  |
{ # D3 s: Y5 ]! ?! h3 h7 L
if(n%i==0) + W/ c1 [  b+ K; J! v0 ^+ y: x
{ printf("%d*",i);
2 P+ N0 [+ k/ x, H' pn=n/i; / d' _& @' X1 R8 x* E
} $ |  q- f+ P7 @: m/ w5 d
else $ Z$ K& r% T7 S
break; 8 s' q7 ^  E  {- ^3 h2 i4 {! c/ w
}
0 }0 G% j: s. X- d}
) @. f( X/ Q4 R4 H" O+ iprintf("%d",n);}
8 D% O2 K; [9 f* ?==============================================================
7 H7 ~2 ]% G$ T% f3 X1 P【程序15
# Q) e5 H, s( y8 ]+ H3 I/ f题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
3 s1 H/ H) m6 z  H: E  y3 \60分以下的用C表示。 / ^! [( T; I, b; F- a
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。   \1 K0 U/ a9 J7 Z9 \+ S* z! y
2.程序源代码: 4 O# c! \5 h% H5 E
main()
+ W( l4 [; J4 K5 n8 p# S! ~" H{
- \: M5 b% l5 r5 @. w2 E. Cint score;
: J( y9 r7 G+ [9 y( j$ N1 c0 q  O: wchar grade; - _2 `3 x0 \" ?' U
printf("please input a score\n");
8 a# @4 m0 M4 ?3 z0 cscanf("%d",&score);
" ]1 C  m2 n4 c6 h  B+ i, f* q; a+ x- [grade=score>=90?'A'score>=60?'B':'C'); 1 [3 I$ q; j- Y0 [; c
printf("%d belongs to %c",score,grade);
) Q3 s2 `& Z0 z} ; u: j) ~; B. l5 r
==============================================================
; i8 z; m3 N5 c" @( ]- Q* i

: [, i! Q& w, {& e6 Y! N$ P
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 08:01 , Processed in 0.055891 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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