找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2565|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序67 k- i. L1 z- Y3 g
题目:用*号输出字母C的图案。
3 N: S( b2 b2 w: j7 O8 p; M8 e1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
" t0 k+ w- f! u9 V$ r2.程序源代码:
0 t! Z% y$ p+ {- G: @: {' U% ?#include "stdio.h"
( K9 t9 p5 U0 L' m+ Zmain() { 7 l. O" v- d; J9 `$ @  N0 b
printf("Hello C-world!\n");
# O6 \2 N7 W4 m2 [printf(" ****\n"); % k" V7 \: n# c1 w2 G9 F
printf(" *\n"); - n  S' C1 k& e% ]! f+ Y7 Y
printf(" * \n");   F3 w8 ~' B6 _9 w9 h& c* L
printf(" ****\n"); }
# c2 D) M0 l  a9 C============================================================== ' S0 ^$ T2 n3 [  U, i0 Q  a
【程序7
4 S. M  D+ Y7 h3 @7 u9 N) ?题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! & t* [. C. [$ W: }) {6 w( t$ `
1.程序分析:字符共有256个。不同字符,图形不一样。
( M- k4 Y" P& t& [" O) p/ M- N2.程序源代码:
* X, A' V1 p/ o+ j#include "stdio.h" 5 [3 k+ a4 v* J) Q! T- t3 [0 _
main()
0 P. Z& m0 m# |1 m7 H{ ' Z3 I  o1 l  x6 t% M# W8 q0 A1 R  T
char a=176,b=219;
' P) I/ J# z- U2 f6 Hprintf("%c%c%c%c%c\n",b,a,a,a,b);
% z/ J4 L. V2 `printf("%c%c%c%c%c\n",a,b,a,b,a);
. [$ u1 \9 {4 H2 E$ x& ~printf("%c%c%c%c%c\n",a,a,b,a,a);
$ _7 x5 @1 e* k. c, Y( n8 nprintf("%c%c%c%c%c\n",a,b,a,b,a);
/ U) d$ N) I- X7 u- A' e& C4 D- Z; cprintf("%c%c%c%c%c\n",b,a,a,a,b);} ; G3 w0 n! ?0 b- `3 j7 [
============================================================== * Q* _. z1 i5 J& X1 @& p
【程序8
4 a7 Q& g3 h- h4 E) E题目:输出9*9口诀。 : N+ s" C$ T& `: u& |" ?
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
# Y( t9 [4 C6 z/ F5 u8 ^6 }. U2.程序源代码: 9 u; `# \9 s" A' t1 `
#include "stdio.h" + C% b2 h6 \7 e+ [
main()
/ p/ `2 g% j% Z, H& W0 C) f{
: ]. m1 z6 F5 i+ w& m- p* d" t1 N% oint i,j,result;
, f( a( _1 g# S- W6 X9 o( m7 Cprintf("\n");
* @5 R8 b9 H( F) Cfor (i=1;i<10;i++)
# G3 C! ~' t* q: p0 g+ i{ for(j=1;j<10;j++)
$ x) N% c; w( Q# ?# i% ^& V, D{
" n8 {7 H0 W- F$ S  @3 cresult=i*j; 2 A1 e. c  _) H; g4 I; A
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ 2 y( v3 T/ t, T' ?& e
}
5 a) I. I& p4 @printf("\n");/*每一行后换行*/
8 m- o0 z! @, J1 G} 7 ^" F) e: ^, l/ i+ z- S1 A
}
  N0 J) L+ G/ a' c==============================================================
, ]$ P( @6 Y. _1 |$ d【程序9
7 ^4 o. k  Y; [; }" s题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)6 r; E1 p5 z6 \9 K; J. G
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 1 W4 v$ F, R& U3 {- i
2.程序源代码: ) g9 R2 h1 L. D( U! T+ h
#include "stdio.h" 4 U- ?# M- v; X: S
main() 8 Y, v% q) l" K5 B+ b' i
{ : `; l; _% e+ _" O# k7 C  }; j
int i,j; 4 I# L' C9 h7 T3 @1 G1 M9 V
for(i=0;i<8;i++) 2 h3 Q1 R6 p0 C: |% a
{   [2 _% N1 W+ i/ }" z3 r, f0 }
for(j=0;j<8;j++) ( Y  ?, ]) e4 t
if((i+j)%2==0) / [# H3 C( ?( B& Q. w% F
printf("%c%c",219,219);
; L% l. J# M& y1 w. telse 6 V2 O, X2 {& F3 l
printf(" ");
  j& E3 h2 u( v4 l  Jprintf("\n"); ' Q1 R& W# N% F& J
} , q- N5 A% ~5 E. a$ B1 T- F- s
} ' R$ x! K, \! S" T& W2 v- P- g
============================================================== - c; M; _' z- E; R9 p
【程序10- {0 [! d- D/ C4 F
题目:打印楼梯,同时在楼梯上方打印两个笑脸。 6 c+ Y5 l  P4 ]$ L6 Z8 G% k0 ]
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
( R7 Z& w4 ]: p, T; D( X2 V2.程序源代码: 2 r6 _; P; h' M9 [  d( P' T
#include "stdio.h" ( p7 R- y# j2 P, n+ C$ n, i) H+ R
main()
' t2 ?5 R3 V0 x  I+ P0 A{   \: b0 _" y. C0 U% w1 y
int i,j;
  A& N" a! z% Q' B" X' _1 V& x  \printf("\1\1\n");/*输出两个笑脸*/ 5 V  k7 p; r* e! H' `" o$ q6 z' Y* M
for(i=1;i<11;i++) , z" r0 I$ v' H" M2 S* x* X
{
& b* x) n# m2 ^! wfor(j=1;j<=i;j++) / g" c9 u* B" w" o1 B
printf("%c%c",219,219);
% U6 ]) b% n6 P# y0 n& [) `printf("\n"); ! g* L# E& v/ ?7 C  Y
} * w) i8 A. e9 y/ x# C! Z: V
}
9 |7 Z( z7 _& D0 v. P
  `2 B& q: _2 c# h0 k
0 f0 a% \2 A) j- j+ |2 l$ _
0 D* }8 z4 B7 t, h; R" l: U" z作者: zhlei81 2005-1-22 11:29 回复此发言
& e$ S4 Y$ M% L  o  a+ x  D- R' J, `- o, ]
--------------------------------------------------------------------------------
1 m  F$ M# u9 U2 Y# B3 I8 a* K; K* {- H/ ]8 b4 U! ?
3 回复:经典C源程序100
  d3 h7 g9 t6 X. h0 Q【程序11
3 |% G) |- E7 S' F8 S. ~题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 ' l( T$ A  ~" z; d% O
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
+ O+ ?+ @6 {  {2 I1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....   o3 J+ t6 Z! }
2.程序源代码:
7 z  q! l6 f# o; K/ U. A( c- Vmain()
- e- E9 F# z+ Q( L( S3 A7 U{
* Y  _' a! A! U' P2 {% \1 u4 N& Zlong f1,f2;
7 [" M9 h  }; Y9 W! n% H: J1 yint i; + T/ A) b; R; W! ]! f
f1=f2=1;
& P' U7 A3 R. d4 J/ j5 Sfor(i=1;i<=20;i++) " w: b$ `# q; H, S
{ printf("%12ld %12ld",f1,f2); 7 Y9 e. s4 ~. l7 X- r
if(i%2==0) printf("\n");/*控制输出,每行四个*/ 7 h' Q( q3 l) D" k. i' U+ r
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
2 p  r7 Q3 @4 i1 J5 N3 O1 m: Mf2=f1+f2; /*前两个月加起来赋值给第三个月*/
. U/ J( \* m; s* k. z3 X2 a} 2 ]& {* V: v. ]( G+ B! `/ T: @8 r' h
}
# X$ p: h% m; ~7 y============================================================== ' F6 G/ z6 M6 C* R: _+ ?
【程序12
( U% U2 o: c7 m$ l' d题目:判断101-200之间有多少个素数,并输出所有素数。
/ n9 L/ ?9 p8 Y3 ^  Q! G. B% L  v1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
% V. p1 E9 O0 n% M; |" J  Q则表明此数不是素数,反之是素数。
# K" q- A5 z3 ^8 p- I2.程序源代码:
) J  L& v" p9 l#include "math.h" : V7 a/ d# X% |! I4 M
main()
9 l$ L# }4 }( Z  Q* L{
; j0 o0 x; s+ a& Mint m,i,k,h=0,leap=1; : m# E& _* ~  B$ t) c0 _
printf("\n");
1 s- F4 p9 M* D. W) ?for(m=101;m<=200;m++) ) D1 k% E# T5 B8 h' O  c0 N  R
{ k=sqrt(m+1);
# u+ J1 _) t2 Ffor(i=2;i<=k;i++)
: n  h! X7 }$ l  Q5 N% Uif(m%i==0)
; S( f+ @4 _& n- u  l{leap=0;break;} 7 F$ @% M1 e1 N. F: C
if(leap) {printf("%-4d",m);h++; # M' l% r& g7 U# t! {
if(h%10==0) % {# `0 m2 m  _* i: S" R% v! m$ n
printf("\n");
- ?. y8 {) P; j. J0 D8 p6 U} 1 V& q2 {; W6 ]1 e2 i  b( f
leap=1;
7 f. C, k" e* T' A( d/ z) B}
' Y% U+ u/ y; v+ sprintf("\nThe total is %d",h);
4 u  a8 Y2 \# y1 N7 ^4 P; A, Z0 S+ r}
: _- y& _. \- A8 s, M==============================================================
* L- p4 R. B: h0 z+ x' i3 }【程序13  g+ Y0 Q2 H4 N2 Q+ x
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
* q/ o" r* }4 Q: b本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
9 B* g: y6 s) @7 C# Y) G' i; ^1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
0 ?& g4 T: ~  s2.程序源代码: ( R  s2 K4 V: m  J8 |( v  N8 A5 m
main()
) M3 b- i* q+ o7 |: J9 _/ J{   b, [: j" w0 t
int i,j,k,n; % C5 p) F2 q; G# u4 a
printf("'water flower'number is:");
" {4 K, j3 h& `& t$ ufor(n=100;n<1000;n++) ' m: M* X* H# k5 ?- ]! L$ o$ s/ ^6 q
{ 4 b6 E" T6 z7 ?: p
i=n/100;/*分解出百位*/ 5 S8 ~- v& f) m* q" O) J* r5 e* [
j=n/10%10;/*分解出十位*/
0 F# G  m6 |7 Z8 j: Ik=n%10;/*分解出个位*/
0 {. l) x8 d* w1 a* ^if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
4 W9 k& h, s, H" z: X{ 4 w1 a- {' f! H
printf("%-5d",n);
8 H7 K  M) L: u$ _+ ~}
! v" K- B# N& T}
. D- `' z# j+ D; [3 |# ]5 j3 B. Mprintf("\n"); 6 a/ R* n! A. p' r: Q
} / j4 Y. E4 G2 w) {6 ]/ S$ a5 n# C
==============================================================
& O9 |: U( n; T% W1 \【程序14  u( G; V% m' Q# ~, p# a: I
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*59 N$ j5 B) v1 F$ |. |1 f
' E; L9 v$ j' \8 }% I% l
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
7 S) J# r: Q# }8 p(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
  }8 T+ P5 Z( i9 w1 c6 |(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
7 O1 w' |3 I* Y重复执行第一步。 ! }' F, I4 T! }, g% @" ]
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
6 y7 D' D5 V4 N/ }- `* ~% M- q3 H" S4 M4 e; {# y
2.程序源代码:
0 W# B3 }' l# Z/* zheng int is divided yinshu*/   W# X* Y1 y, a  Q) i. L
main()
( N# N! `1 U. E" t& |1 {, @- @6 ?{ ( H# z; O( R2 i! W: d) J) ^4 V
int n,i;
! q  t( R  ]; a) D* Yprintf("\nplease input a number:\n"); ) Y$ ?3 X5 ?8 f0 I: I. G5 Q" c) I
scanf("%d",&n);   v( j9 X% @) \4 T' W+ G
printf("%d=",n);
; D  o' @, A: O% \for(i=2;i<=n;i++)
3 H- t5 I2 ?5 n. w6 R8 K; N{
. V0 u, Q) f  R2 Z8 lwhile(n!=i)
$ M) `3 j2 I3 e4 R9 p3 q4 ?{
+ y7 e8 Q) E1 Y3 }if(n%i==0) # [' p; @5 W/ n2 K3 I2 G
{ printf("%d*",i); ; M4 y) [% l: D# v' O
n=n/i;
+ y& C; X% Y7 t- ~( k} % Q+ m- F) a2 G9 |
else - e! J: j- d0 h2 B& E6 T! c% A
break; 2 L' ?$ A! F$ H# T1 t
} 3 Z! C' L% G2 R6 z
}
" S. p0 X$ K& s: T* ^5 M2 }! b+ |- `printf("%d",n);} 4 L7 V8 _, J' ^, y9 j
==============================================================   e% ?: s+ B( {8 z- |
【程序15$ \* ~! i  a4 S" y# o+ k2 t
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
$ [" W0 J. D* @% m60分以下的用C表示。
: X6 N- H0 m7 _# F1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 # S# F0 P* v1 d3 P
2.程序源代码:
; r! u6 W7 S& D! O' G8 C- q9 w* Ymain()
% _$ E7 ?7 U8 X9 A0 b{
9 y* }$ R# ^+ K0 Nint score; / J1 F) [" `! y  a' \, P
char grade; ! C; {: F4 c" y" u/ r" N4 I9 k. d
printf("please input a score\n"); 1 K$ E, A% n2 P; X! _6 i
scanf("%d",&score); 6 G6 n! Q* s/ X  w8 X& j' v0 h
grade=score>=90?'A'score>=60?'B':'C'); 0 X+ c! g) g, v& O/ C, S+ j5 G
printf("%d belongs to %c",score,grade);
# d' K* W# M3 M" o}
( k; H9 P6 H" z) q& E) I+ |% [==============================================================
5 k3 }7 e3 L6 T( \: y

9 H) u) s- M0 a- i& P' ~0 Y
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 16:04 , Processed in 0.067215 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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