找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2606|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序65 E$ Z( |& }* v+ {" G; \8 W
题目:用*号输出字母C的图案。
* C0 H1 f1 N+ v) B1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
6 Q0 g+ ^6 i- ]8 h6 w- J* F2.程序源代码: $ M+ j5 r; b7 s. x# }
#include "stdio.h"
: `9 V2 l) D: K. U& t1 H; tmain() {
- q$ F, B/ ?1 o2 G8 I# D' p7 ?: U- Bprintf("Hello C-world!\n");
- }+ b: V, [9 A! v! |, Q$ `$ Q; _printf(" ****\n"); * k+ k2 g/ [- x' h$ H5 U7 `8 j5 R
printf(" *\n"); , _( z+ f1 U; N2 G4 i0 y4 p
printf(" * \n");
! z2 Q9 i$ h4 h+ l' w7 ?( gprintf(" ****\n"); } - O4 Q6 n# x& o/ Y
==============================================================
6 s  n  v4 r0 Z+ r7 G" F, B【程序7% t8 U- a3 F2 V2 V& Z- s3 S2 {1 L
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
2 u1 }$ a* G  W& C! z  E5 P; p1.程序分析:字符共有256个。不同字符,图形不一样。
, Y8 E2 t/ T2 F7 e2.程序源代码: 5 C0 G6 |" d: ^& E0 Q
#include "stdio.h" ' o) V  o6 u6 T/ n% ]
main()   S" {/ \- F! l# y% _9 i2 a
{ 0 _" w" S$ \$ N# L1 ?
char a=176,b=219;
4 o3 @# }7 |; A( z7 Zprintf("%c%c%c%c%c\n",b,a,a,a,b);
% B) V( F, s: r8 b4 G& Xprintf("%c%c%c%c%c\n",a,b,a,b,a); " x& }) P3 [; _( M/ w+ |
printf("%c%c%c%c%c\n",a,a,b,a,a); ; d" C, Q1 \+ y' o' _& e& K
printf("%c%c%c%c%c\n",a,b,a,b,a); 3 e1 u- t5 G6 L  x; e
printf("%c%c%c%c%c\n",b,a,a,a,b);}
! `& `6 {. |" j, J! l) }==============================================================
8 f$ k" l9 w/ b, }【程序8
* J  o% a. ^7 s( z" `4 P题目:输出9*9口诀。 0 `- S& q3 s7 A" O% R
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
( y- C5 }1 e* }. `2.程序源代码: * P8 Z0 p3 F( w4 c: b  o
#include "stdio.h"
' H5 l/ {3 s% y( s1 F# mmain()
! I5 v& K( ]) H* d" ~# Q{
! t! _/ P  e  w8 [- {+ Iint i,j,result;   R' P: \$ v' B/ N/ ?5 M, Q9 m- q
printf("\n"); 2 R" H( g( c7 g- h( ?
for (i=1;i<10;i++) ! D& E6 k$ `6 h# ?) R  Y  Q, f
{ for(j=1;j<10;j++)
3 D2 K# f& X8 B* c0 {6 U% O{
( w% V% g, U& ?result=i*j; / }* a5 A6 m5 }+ U# i3 _
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
- }, F1 g- e; j6 z}
$ j( [$ R& o* o) e* j0 Fprintf("\n");/*每一行后换行*/ 3 J: {9 n& i# ]+ ]7 n) G, @
}
/ z) |* w/ c5 M* T5 h+ d6 E& s}
% z8 W" {1 b! [6 v/ H; @% l( U==============================================================
: ?1 Q$ e9 c- m& Y' {0 T3 [【程序9- V, Q; y) {+ W# \
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)
/ v; C/ w+ ^& O, D8 \/ M; P1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 ) L' k& U) J. c2 b6 w- M( A% L
2.程序源代码:
. B4 w$ }" b* [* ^  _#include "stdio.h" % F: j# ]) S3 d% ^
main() 5 q8 |7 H5 G+ [* Z4 v) T, Y
{
# n1 V  d  c6 C4 f2 u5 q3 rint i,j;
0 t7 f: i/ h' W7 x/ xfor(i=0;i<8;i++) $ z: @+ i3 K8 Q8 c
{
- D6 R5 f1 k" Q7 }( b; L: _for(j=0;j<8;j++) - T& T; s6 l; s; f# l: S6 H2 r
if((i+j)%2==0)
3 R- _" W5 C1 u. z4 }6 Qprintf("%c%c",219,219);
8 z; Z8 b/ ?- @3 D* k) Qelse
* ^* A  S3 M4 ~# V7 }printf(" ");
, W' G! e. P2 R. Rprintf("\n"); * V3 r  O* q5 L- a  b7 H
}
: h' H, O4 B" z4 ]5 b/ M} 8 P# Q$ m- P  i! U
==============================================================
' e# Q5 p3 n  Y1 i/ \. `【程序10
$ x0 v- p( U) ~' b5 y题目:打印楼梯,同时在楼梯上方打印两个笑脸。 , b6 e- w1 }6 E  j# W' A( P
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
/ O# _2 B8 D8 ?/ E9 G* d/ Q) Y2.程序源代码:
7 m: Q  V; ^* M#include "stdio.h" 0 z' a1 |8 s. k+ [# ]+ D# O9 ~, O
main() 5 B7 `# b- H$ \5 x2 C; F/ G
{
: U2 e! P' }- {1 f# b( ~5 M& Dint i,j; 7 D. U3 e9 r: b8 l
printf("\1\1\n");/*输出两个笑脸*/
. L, \0 [2 ~  M$ E! Xfor(i=1;i<11;i++) 7 p3 n& ]& |! ~' F
{
9 c2 b3 S' D7 _5 ]5 Y  Q! T. P& Efor(j=1;j<=i;j++) " O( G7 A$ n$ v- a" s. S$ W
printf("%c%c",219,219);
) P  \6 w& \; w: j' Zprintf("\n"); ( R9 q  H$ H# y. R1 z: b' l$ [
} ! U! b6 b. ^7 \$ a1 d
}
% C- l$ h* @3 Z  Z3 [2 A6 v: {( Z4 y; u% `( `& Q1 k$ v1 u" R
; B- e( n- i! @+ X5 Q

# c, Q* J: ]) ]; m( F0 y. }作者: zhlei81 2005-1-22 11:29 回复此发言
; W( S' g+ `' Q; m
5 j, P) f+ [# p$ B7 y7 q2 a( ]- @-------------------------------------------------------------------------------- 4 }( ]( b- A$ A
- p" F( t- Q. S0 X7 w; x& m. E( S
3 回复:经典C源程序100+ v" |# u1 p- Z  Y4 a$ w
【程序11
2 `5 z/ t$ P+ w8 I; @- Y题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 / p; W/ ^4 y9 \1 Z
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 2 S0 N/ Q4 c/ R, p5 I. W) I& w
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
; N. P+ t/ K# s4 w0 r0 e: l2.程序源代码: & Q4 M  a' y+ T- w. A3 a( Y
main()
& [; ~! p8 I  C5 i{   s4 R+ p. u  |5 \# t
long f1,f2; , t; u7 w' u2 W% X
int i;
( c. T7 p3 w# r  p# g' ff1=f2=1; & h$ Z# n/ E, a- m. Z4 j
for(i=1;i<=20;i++) , j, p6 u9 K3 d; ?6 y  d
{ printf("%12ld %12ld",f1,f2); 8 h1 J( i) C6 i" `3 z( L# n
if(i%2==0) printf("\n");/*控制输出,每行四个*/
  m6 r/ ^9 a- V" Bf1=f1+f2; /*前两个月加起来赋值给第三个月*/ 2 l3 f1 y# Y7 h- U. c) X
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
% o+ s5 C2 _5 f0 k1 Q* `& K1 V3 V2 O}
+ Y3 M! _* ], q0 T: m}
" ^  A8 @2 \2 \============================================================== " `* @3 }5 j/ I  ~" \: {. s
【程序12
. }: N5 F" U: z4 `9 B" x; q! L8 R题目:判断101-200之间有多少个素数,并输出所有素数。
: A# b3 L; j+ ?2 b1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, & d4 k1 f' m+ d. Z8 M1 i
则表明此数不是素数,反之是素数。 0 Y- w# Q; r) Q% x8 N
2.程序源代码: 2 H- o2 z. Q3 A! W4 c
#include "math.h"
+ X) i) [( k, M9 n7 Emain() 4 d# v9 L$ U( C1 Y; ?! L- N
{
+ T  g: m+ y0 w' Cint m,i,k,h=0,leap=1;
( e' O6 I# [# T: X: ?' qprintf("\n"); % I; t% F. l, ^- |. T; r( h3 s9 v
for(m=101;m<=200;m++)
% I% m$ B2 V% }: [' e, F/ R{ k=sqrt(m+1);
$ q. F7 \: s! L6 Nfor(i=2;i<=k;i++)
2 E. X3 M( _, N$ Sif(m%i==0)
* C- Y) |$ L! G- P8 g5 k{leap=0;break;}
" a" f# P$ K/ I+ q" w5 `5 C" I5 M1 r: Xif(leap) {printf("%-4d",m);h++; , k! f& @( m- e& T
if(h%10==0) . e; d. R& e" x- h4 p/ p
printf("\n");
3 o; q: z" h; e8 f, G$ I" Z} ; h8 v$ W+ m* k6 u$ Z3 q4 L
leap=1;
2 y* C! J5 f  h9 X1 J3 |}
; G9 a2 v) j; I5 T& `printf("\nThe total is %d",h);
1 X  S* \, x& p6 _& ^0 y) y5 E* U3 Z}
/ t: ]' `: {8 o0 U$ X1 J  `$ j& M==============================================================
1 k* R# v" t  t  y+ U6 A* a; Y【程序13! ]% v# G9 }, Y
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 ! M/ j6 _- |" F, F% L, p
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
% [* h6 Z) _: z# G9 j& S* Y1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
  Z* T1 w, e9 {# y8 j0 N2 x9 ?2.程序源代码: 5 k' f" V; i2 f6 C' K6 @
main()
) ?/ {/ S$ \9 P4 L7 g- W8 q{
' l& l" {7 U8 Q% R3 |  dint i,j,k,n;
3 _: {1 {; N; e# fprintf("'water flower'number is:"); ' N' A! z+ g& o% n  t- [1 L3 ?
for(n=100;n<1000;n++)
, T7 |- c9 q" q0 A, O9 ~3 V{ : I8 O# K- S$ |7 O) c5 C
i=n/100;/*分解出百位*/
5 S" y8 i8 j: t8 m- u% @j=n/10%10;/*分解出十位*/
: ?- S( w) ?9 ~/ D# }k=n%10;/*分解出个位*/
( Y- `+ _4 J% {! X+ E9 Zif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
, w6 n+ l4 `6 [{ # ~+ M- m/ |: K+ g
printf("%-5d",n); * }+ U/ a: ^8 j9 D! Q3 X3 ^
}
' q" z, Z& B  y! K% O" S, p}
: M* I* [9 `1 s6 R2 fprintf("\n"); 7 v/ o+ F6 O8 U  M
} & O5 ^; q- b+ q
============================================================== + H" |' x- Z7 L" L
【程序144 f: O7 V- T! g" i
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
) L9 D7 E; _" W! j1 @8 b7 S8 v/ U2 i' [, z3 \
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
  A& p8 L$ A, n: d& |- c(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
5 W& A: {9 q& O6 W5 n(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
3 w6 ?& y1 e0 v& `+ x. Q重复执行第一步。
6 e% g: u4 v' H% u7 G$ h3 Q(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 " a1 T, ^1 ]' C
% @& g; y- A$ e" b/ L
2.程序源代码:
4 z! h0 U  p  R; g3 t! j/* zheng int is divided yinshu*/ ' o4 E5 h1 j6 `3 b
main()
9 W0 I" X; {( N/ y* M- L{ ! X) x% e, }$ a( Q) {! x
int n,i; 7 O5 o: S$ H7 C# @4 h+ l# w4 d
printf("\nplease input a number:\n"); 5 W3 P1 H0 H  U: j
scanf("%d",&n); ! T! T5 S8 M  |2 _
printf("%d=",n);
/ d- \% |- ~1 _) x) `for(i=2;i<=n;i++) / D# v$ ]  ~# M
{ & E3 S0 f  W: W- j3 K/ A. q
while(n!=i)
  z! N6 J, f, z6 P{ + A6 I% S/ X: B+ a  P7 f6 Y- ^
if(n%i==0) ! G* A  W2 k) {
{ printf("%d*",i);
9 i) d  @" C" v) ^% In=n/i;
4 r& o) N/ S0 A) ]% o! \7 T0 Y}
* f% }6 |2 S3 A0 Selse
' T: S1 c$ \  x" C2 s; dbreak; ' x+ s4 B% c7 E( M/ T
} & F% V5 O6 s8 d( @% B  R
} + H& h  O* q8 I( y) @/ ^: R
printf("%d",n);}
2 X6 s% ?& Q. P============================================================== . H8 T( |. V3 Q, s
【程序157 n, B3 n4 w/ a8 ]: U
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, 2 ^& O4 o. c9 r: o/ e3 y
60分以下的用C表示。 % v+ u* h* R2 i2 n2 d! R1 ^
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
5 B5 L5 A* F* Y2 V3 S& Z2 o! b2.程序源代码:
9 u2 h' W9 H+ k% X" Zmain() ! Q% ^* R1 R: g7 @3 c0 H! O: H  {
{
2 Q: ?, a4 }8 @' Z  b% H4 f5 Oint score;
* ?7 i$ q) h% ?4 h/ Vchar grade;
. [8 t0 _2 b: p1 L* X1 uprintf("please input a score\n");
3 c5 ?  r5 O( x. ?scanf("%d",&score); ' l* T2 x  p" y! j! j/ X
grade=score>=90?'A'score>=60?'B':'C'); - H6 Z% \2 T+ S1 E8 a
printf("%d belongs to %c",score,grade);
" v, K! O* N4 H' t: @! |} 2 p9 P! ]2 a2 v! d, S6 W
============================================================== 3 F$ a, @2 m2 }1 c0 s9 w8 U; Y
6 z+ w! O5 y# V2 q, [  |
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-6 06:59 , Processed in 0.081115 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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