找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2614|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序6
$ c4 n9 f( L3 k8 K2 z2 {" ~2 w题目:用*号输出字母C的图案。 . S& U  P3 W/ n) F" z
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
. S! u( B1 t9 y6 M! |# S% ^& C2.程序源代码: 2 B2 |3 F0 J$ \+ A
#include "stdio.h" ! V+ |: B6 i* B% t6 c2 P. E
main() {
  F' e* ]# U+ V. l* O9 {$ sprintf("Hello C-world!\n");
8 d5 v3 v5 d8 r3 bprintf(" ****\n");
2 s8 ]# t5 G! F  \4 m% K3 Qprintf(" *\n"); . R. i9 i$ A; Q+ F
printf(" * \n");
4 M" m& B3 q, `* lprintf(" ****\n"); } 7 f% A) [) X5 j: l9 p# t( E
============================================================== 7 [. P. H! j. x* P% Z
【程序72 \2 R$ K& P4 m' \
题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! ! L$ w/ F5 }( L
1.程序分析:字符共有256个。不同字符,图形不一样。 0 w9 f0 E0 v3 i, K/ [7 S
2.程序源代码:
& l/ _$ K; ?8 ]#include "stdio.h" - y  Z0 c2 x- ?
main()
# @4 z( x4 h; Q{
3 D: ]1 @) n0 zchar a=176,b=219; & u3 [2 m- ^6 B7 R" t7 R
printf("%c%c%c%c%c\n",b,a,a,a,b);
' w, S' |: d; ~$ M1 g8 gprintf("%c%c%c%c%c\n",a,b,a,b,a); / n% H, u! ?% k0 D; _1 e
printf("%c%c%c%c%c\n",a,a,b,a,a); 4 i" N$ Q, w$ N' @0 {3 b- o
printf("%c%c%c%c%c\n",a,b,a,b,a);
; ^  D& M. M  \: v+ O* K) nprintf("%c%c%c%c%c\n",b,a,a,a,b);}
9 L7 M$ h( v+ x9 F+ V, l- k3 f==============================================================
0 Y( G2 c8 W7 P  b$ N" Q7 S/ |【程序8
  {/ ?9 y' ^, W9 p" Z: t9 Q" |8 G0 o题目:输出9*9口诀。 ' i/ s0 Q, v1 W+ ?
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 2 r4 e4 `' d* o$ H% w  [' u/ {
2.程序源代码:
* D6 C+ k3 Q+ X* B7 D#include "stdio.h" ! ?* O7 L: \+ G& X0 o
main() 2 ~/ |, i' S7 `  [$ G0 U* L
{
3 ?5 K/ n1 o5 V- V' r7 nint i,j,result; 7 f: Y: Z- F8 I: E( P/ b* `
printf("\n"); . p- K" o, W& F
for (i=1;i<10;i++) ( s( J9 y& Y! R: C; B
{ for(j=1;j<10;j++) 7 p4 D8 L$ }5 ?/ D& ^
{
& m! t% a( U' S- e. h2 w, [& Jresult=i*j; & t) e! u- R6 d2 }# x8 o  O
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
; ?. g9 i, K& M3 j0 `. s* M* _% K}
3 [" }( k6 T2 s" m  L2 ?printf("\n");/*每一行后换行*/
/ c2 K* h: h5 F! o7 T& }8 {" E} 0 r5 g& C& Z& A- T4 B
} * m) ~+ b( M- |3 U- Y8 i
============================================================== 0 p  c) }; D: m6 o- t$ i
【程序9. ~' \0 x; H& c" Q( t
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)
" b+ b7 U' c' Z2 j( M3 A/ `1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 " P0 ~0 v. R, Q5 g3 T
2.程序源代码:
: ]# B& r6 ~5 M9 }! R#include "stdio.h" , L- q* j2 V' i+ Z+ h* @
main()
: V9 R0 G" P3 D0 u; H$ K{ + z% L( ~4 z, ^  R$ a% L0 K$ N
int i,j;
( O* T2 Q" S; P( Pfor(i=0;i<8;i++)
$ p7 f8 m( k. f. P# i+ |{ & n3 A) e: H2 Q; L
for(j=0;j<8;j++)
6 Z' F+ F( Z( x% q$ W! e7 k  [1 aif((i+j)%2==0)
! o  p/ k7 J# u# [  e+ ?6 \printf("%c%c",219,219); " M3 D3 E5 M4 {1 Z) E3 O
else
" {( c: N% ?6 H2 ?+ |4 M% X2 o7 Fprintf(" ");
% s" C2 f7 t# r; C7 h0 M+ f# cprintf("\n"); $ M" H/ v4 @3 m+ E# B# Z2 r" l
}
+ @4 Z% c- k9 }! L& y}
+ u9 u# b+ \+ l: V3 S& B& t% y& A==============================================================
' M, q, o, d, j; q【程序10
3 C- m( v& P! X, t' J: j题目:打印楼梯,同时在楼梯上方打印两个笑脸。
6 p! A' o9 j7 f2 J0 \; [/ }# Q+ H8 O1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
: \( ^: b' G" A/ M& U. t* \" X0 G5 ^3 c2.程序源代码: - g) y* g. N8 E5 y4 n
#include "stdio.h" , j. V, m" p  f: Z7 b+ l
main() 5 B& n9 ?# G  L& g3 s3 G
{
- z( C9 r6 J( g- uint i,j;
4 E1 ^+ v* r6 \2 U$ @# \printf("\1\1\n");/*输出两个笑脸*/ 5 Y" q# m6 R8 W6 @: A5 E
for(i=1;i<11;i++)
- M( h+ @7 H" m: E) t! d{
1 H3 `3 Y) |/ Efor(j=1;j<=i;j++) - s6 E% P7 s9 ]# v. X0 L8 i
printf("%c%c",219,219);
/ A. f7 D/ X& F0 xprintf("\n");
( g( M6 z% ~' i# X/ {}
2 H. H- F% ?" t4 a% P. {}
; W4 e0 Q  e9 m0 ~- X8 y, I
) v$ z! p9 w5 ]/ S
# R7 |7 R1 e- ?4 ^. `/ w
3 K$ f  j* G0 e% S; g作者: zhlei81 2005-1-22 11:29 回复此发言 9 O/ c6 q! j1 ~' B) m9 Z  g- y
& e3 a' J9 C7 O/ x$ \# p8 Q* }2 `/ H
-------------------------------------------------------------------------------- * b7 u( b$ c: |1 u; h
: B4 p* w/ P) \3 I
3 回复:经典C源程序100
" N) R( v3 ^6 W1 w- B2 \- L【程序11
9 A: e" ]; C6 a% p题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
; e, N" B* |% T( c0 Z! ~: Q后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? . _; x2 h( p5 H7 q0 h
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
5 ]1 Q$ G0 W  b4 q8 h( X. f2.程序源代码:
0 Q; P2 P0 Y% j' H1 E5 Amain()
) i/ S5 m% f2 N) s( y{
, y* n- {5 q6 n* mlong f1,f2; 5 i' x& B/ c1 x( H" b$ T  j. p
int i; % N- g0 j2 [9 t4 d
f1=f2=1;
( R$ X* H+ b" w& k/ j' Ffor(i=1;i<=20;i++) ; z9 q3 ]% M% Y
{ printf("%12ld %12ld",f1,f2);
9 ~: Z  P# W* [& f; eif(i%2==0) printf("\n");/*控制输出,每行四个*/ 1 i# o  Z; r; v) _; @# P
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
$ K& k9 k3 ?( ]9 }  C- Cf2=f1+f2; /*前两个月加起来赋值给第三个月*/
8 {9 d" A$ w4 ?; y0 j5 K% i( C- Z} : q0 ?- }" Y# T6 _5 M& q
}
8 T# p$ U& d+ N/ ?2 H============================================================== 0 a+ u- X% a! o/ k2 U# A
【程序12
# m7 k" a+ h! k7 ?" B8 X: G题目:判断101-200之间有多少个素数,并输出所有素数。 , |9 b) m, q# t9 h6 k8 n/ s- M* @
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
% W6 |$ e) W1 ~7 G) ]( y则表明此数不是素数,反之是素数。
: O- k0 K4 X: V" C' F2.程序源代码:
: |; h  B$ b  J8 L% j) E#include "math.h"
+ J" Q# A6 \1 ~3 S5 u8 Ymain() + H; H' s; o5 ?! \3 t2 G
{ ! D0 S& d) h' q4 a4 B9 C
int m,i,k,h=0,leap=1;
3 L0 J8 \) ~1 C6 T) Mprintf("\n");
, Q8 @0 e9 h/ r# f0 s# ?+ r8 Gfor(m=101;m<=200;m++)
) p' ?  X2 L/ Q* a1 O" a{ k=sqrt(m+1);
3 W4 c  ]7 V' b1 \+ l3 _for(i=2;i<=k;i++) 1 m; e$ U% j- }
if(m%i==0)
! S% g, W$ h1 X$ C7 [) f& m{leap=0;break;}
# t6 w* z- @+ c6 Aif(leap) {printf("%-4d",m);h++;
+ j" o2 w+ h- W  d' M$ @9 ]if(h%10==0)
4 J3 P  `" G9 e0 U# X1 Pprintf("\n");
: o- p( b4 {0 V6 ]( N) P1 z: ?  D" \} 2 i6 {3 f- \" m9 P$ ~2 V4 _
leap=1; * |4 N8 i/ A! h3 c) |
}
  i: V, f- x9 |9 B. oprintf("\nThe total is %d",h); " D/ s! Z3 p) b( c( l. E; `$ B9 @
}
0 m- J% Q/ l& m9 t==============================================================
1 n8 p; y6 ?% i2 n【程序138 r  G# _3 A% b" @
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
: J9 A  b! j3 W$ R本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 . i5 W- a$ e$ N( r  [
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
6 F. K( t0 T4 g% u7 l  c7 j: q2.程序源代码: & j- m1 Q6 t* ^9 R* K6 m
main() $ |* h  X+ \8 z- m) Y' H4 t  q) C
{
* f* w* y$ u& yint i,j,k,n;
. a; a, c% u6 u7 t5 mprintf("'water flower'number is:");
. |4 I1 i' m% |4 v% ffor(n=100;n<1000;n++) , O) z- @/ g- U3 L6 {5 x4 J! {& F
{
3 Z% a, `3 W9 f( ei=n/100;/*分解出百位*/
6 i/ k' l3 `$ ~2 G0 k3 I( r% Fj=n/10%10;/*分解出十位*/ 5 ~8 l. U5 C, |$ T$ i4 _
k=n%10;/*分解出个位*/
$ {% a! ]9 x& R$ ]if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
) c& i( ]8 a5 A- b2 ]2 c( s3 B{
$ A( Y4 T/ X" B; {( [- \printf("%-5d",n);
9 X8 C$ t4 d2 B2 [& \$ C4 c}
$ P! v2 ^% i0 v( K! l8 @& Y$ Z8 j. Y} 4 H* M! z* B% o* P2 |4 @
printf("\n"); 0 _% Q5 u+ s3 E1 g, T
} 4 [/ V' i, ]/ u7 }8 e, P
==============================================================
4 y9 C7 y  e: G$ F【程序14
0 r# y4 J. z' H8 `题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
2 N4 E* Q: i1 T& j- c! l# f. q) G
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
* \( b4 J: p% G, R/ i* J% j(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
% f. O3 k; n) b' n(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 5 V( k4 l' G+ D$ ~2 X$ Z' {
重复执行第一步。
' `: `. X0 L1 _" X(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 8 l4 K: W) d$ F$ V
9 s- \# N. F. m
2.程序源代码: 8 k5 D: R8 f0 g# J0 z" ?
/* zheng int is divided yinshu*/
" a- ]: H, T9 e( t8 amain() 1 [" O' ]* z* R7 M0 b* O8 b+ N
{ / i- ~* h' b. D/ M6 b5 D: [
int n,i; & _5 c0 Q. f6 k, j+ L$ E4 t$ p
printf("\nplease input a number:\n");
2 b3 d( m! x! |scanf("%d",&n);
; ?2 [0 P( J5 ^. Y- [printf("%d=",n); 7 D& O) m; g2 b* i/ U
for(i=2;i<=n;i++) ! K7 p8 G; B% w1 b' r
{ % d- a% n, w# G3 H# n+ C
while(n!=i)
8 Y6 C) h- `0 E& X! f{ " p' f7 H. W1 ^3 r& v  d" x, @
if(n%i==0) 9 U& X  g* z  q
{ printf("%d*",i);
7 d8 M" |* t0 |/ M6 n: in=n/i;
+ H2 T( U0 @9 J( q3 s4 `}
: X8 q3 R: ]& p# `. C( }else ! D+ D! Y' b6 u% }
break;
0 d, e% M- G* p/ a* y$ [" A- O5 ~% H}
& h6 ~  R+ P' @) R4 P$ a; a} ) D  V! D3 @8 x) ~, U
printf("%d",n);} ( t3 c+ k$ @: c3 a  ]1 Z% l8 N
==============================================================
( S0 M& P# V# v5 z5 C' {0 f3 \" {【程序156 ~4 {2 t5 D( K( Q
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
/ h7 }: F+ y6 _% r1 N1 p60分以下的用C表示。 8 p) I/ m1 ~6 b: G- }
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
+ r3 O: D8 S( d; ?2.程序源代码: . ^7 ^; W! F. ?4 X5 g
main()
9 G; K* X! I! K{
+ U5 k% \& N/ x4 S0 ?- wint score; * E0 |# C: F$ s/ w
char grade;
. J3 A+ y* ~& _! e1 n, _- |& yprintf("please input a score\n");
# Y4 X* N* `; k: fscanf("%d",&score);
. f0 {0 z+ r" u# r; o- k  T) w  Ggrade=score>=90?'A'score>=60?'B':'C'); $ c4 W/ p" L9 j
printf("%d belongs to %c",score,grade); : @0 A! m+ S( p2 v# a
}
% U& F" e0 r2 Y' e============================================================== - \, o/ }, H7 d5 Q/ l9 E

4 X  ^) b& v3 s3 S5 ?2 U/ \! H
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-15 18:04 , Processed in 0.062291 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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