机械社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2429|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序6# ~  y' B% A  q( z
题目:用*号输出字母C的图案。   p# }- W- A# ~) D8 a8 T. R! o
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 - i# c; O$ I* _# ]+ b
2.程序源代码:
7 ^! o( J; A; D9 C#include "stdio.h" ( L" P( G$ C6 s: ?
main() {
8 Q" Z3 ^" r: h# b' fprintf("Hello C-world!\n");
5 k+ ~' Z5 ~  M  |printf(" ****\n"); 8 {) P) c; \2 ]' w6 o
printf(" *\n"); % W/ k' e7 x( F  [
printf(" * \n"); 8 |* X- D  ]! n+ @/ |8 k2 E0 p3 S% A1 V
printf(" ****\n"); }
1 f# c) d+ k2 X' X3 n2 {; r  N  n, q============================================================== 3 M9 @3 j& r9 b0 c& Z8 D
【程序7
3 T3 t/ I9 i  q0 U; b题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
' ~: }7 n2 I: S, ?1 l1 k" A5 u% ?* P1.程序分析:字符共有256个。不同字符,图形不一样。
# ~, m" t! o( o8 ~2.程序源代码: $ l; [, i- m, ]1 ], P, }+ Q1 S
#include "stdio.h"
/ ]& r6 _) g& n; F3 F: z- w% hmain() 7 l, b! y5 N* b* P
{
) f3 [4 t) c: }8 a$ p: cchar a=176,b=219;
% L5 u' I' N7 M( |( p, ]! e$ q* Zprintf("%c%c%c%c%c\n",b,a,a,a,b); + p3 _: Y9 f- r, e% }5 V7 |
printf("%c%c%c%c%c\n",a,b,a,b,a); , V: [( _3 V& }4 O# l) Q$ v
printf("%c%c%c%c%c\n",a,a,b,a,a);
; l) c! b. D4 J2 z0 ?printf("%c%c%c%c%c\n",a,b,a,b,a);
# }) `2 }7 D$ M- n" U. O% G4 Bprintf("%c%c%c%c%c\n",b,a,a,a,b);} & J0 {. M3 s1 x  T. m5 @
==============================================================
8 m' d  z" Q( c/ ~: Q4 c【程序88 ]' G+ |& w6 G! @
题目:输出9*9口诀。
2 `( O. y% I) e1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
! G; _$ V4 w5 W2.程序源代码:
, u  E1 ~* E; ^- z0 R0 [( Z#include "stdio.h" + `% D0 q0 v( C4 M& Z' a( i# Z
main()
; A3 f; X7 e7 }; s4 X2 y{
* C& X3 Y9 \2 t" C5 ]9 Uint i,j,result; 6 ?; t( h0 i5 a
printf("\n");
1 ]7 |: v$ q( W" Ofor (i=1;i<10;i++) : l0 G8 v; {7 D: F
{ for(j=1;j<10;j++) " O( {. a2 H' c
{ 0 x. R7 q, G3 i- \3 @
result=i*j;
3 h) Y. U! Z. ]' `- C; Wprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ ) b" j# K7 ?# e, b/ m8 I
} & s& A$ E  N. j  V  M  H. f
printf("\n");/*每一行后换行*/
) n3 w- R# ]% k7 I} 3 E- U- Z. x3 N  n7 M4 J7 E( g( ^
}
7 r% |, x) b# Y/ s! _9 G/ v============================================================== 2 p7 u7 @; Y, W0 p/ w# Q- V
【程序9  R" ~# s1 o7 `0 k1 r9 m, S6 K5 m
题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)
! e# Y' d$ r# S! ?  q7 n; D- n1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
* j# D# F. q1 T; o+ Q0 p0 Z* z2.程序源代码:
& ?' Q7 c- z. U; f* K#include "stdio.h" 9 w' Q/ H( L$ H6 s
main()
' S3 D$ Y- q7 {- f. l+ P8 z{
; t5 a% f% w: \2 d. `0 ?& Tint i,j;
% j/ y! d. A9 R( d( U8 D# N  ffor(i=0;i<8;i++)
' J4 I5 }$ Q  P! H& I1 m{ $ z& w3 x& V- i$ m/ ?
for(j=0;j<8;j++)
" R3 z+ f" @8 ?0 A! Z3 Z. q; Kif((i+j)%2==0) . n2 @( f! F2 b4 ~6 m
printf("%c%c",219,219);
; d7 M% w7 z; }5 `else   [. D+ D6 H5 i
printf(" ");
5 q; k0 o6 T# l- Nprintf("\n");
% j. b! ]! G& r& Y( ?}
5 U$ D4 t3 f/ p/ Z4 {3 i' f4 @}
9 G- c- t4 m: @7 Q5 v: L5 V; Y/ x==============================================================
  D. q6 a! L- s【程序10
2 Y. E/ x$ e. ]+ p题目:打印楼梯,同时在楼梯上方打印两个笑脸。 % J  h9 `9 v' h4 ^
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。
  g* D% V/ N1 ^2.程序源代码: : j" f+ N1 z0 F9 ?9 E, A
#include "stdio.h" 8 G& V6 Z/ [- L; \. U: h* W
main()
: h% y# `: ]8 ^$ s1 n- r{
! g* r4 e8 M/ x3 f" }) @int i,j;
) b  Z% M" Z1 @printf("\1\1\n");/*输出两个笑脸*/
$ O2 [0 p: @  c/ @4 Z# _  e# j9 afor(i=1;i<11;i++) % @$ H4 Y- W3 f" q' `
{
+ q2 S" o1 z/ N: H* `5 nfor(j=1;j<=i;j++)
: k( o) @3 ~( z/ W; R: Cprintf("%c%c",219,219); % a! u% D" |" U; o. m
printf("\n"); - ~) v3 m* c9 }: ?& S% P+ l
} 3 d% \5 e/ o# x' p8 m8 E. t
}
6 Y1 ~% r7 U% V. o6 ~9 @
& g% d9 I' C2 ]* h+ B
: Y% _  N( ?. F6 c+ z6 k& o& Y  }4 S. `
作者: zhlei81 2005-1-22 11:29 回复此发言
! O: K9 h/ Z# ~1 \9 G+ m  G( ?7 U3 W: K: r- {9 u. a4 }
--------------------------------------------------------------------------------
9 ^* Q5 [4 q0 t
$ S3 J, y$ ?( b' \" B6 T3 回复:经典C源程序100! m3 e3 G; x5 [" O0 @: e! ~  F
【程序11
# D0 v  d" A& }7 T3 o9 j" {题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
, y; r: q. r8 L1 t0 l' L后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? : q. {+ P, V5 x, Q1 O0 ^# y+ q
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
( ]2 E, W6 f" a$ z4 L9 B( d' ?2.程序源代码:
5 ]' M# O! {& F6 g- O8 o$ v6 i# emain()
, n8 ^1 K% e9 r$ w{
* z" Q* e7 c% _! i' Flong f1,f2; # P. f0 W5 u- u( Y6 H  P
int i; ' {1 l$ M5 |, b, s8 f1 F
f1=f2=1;
/ P1 v& g6 x+ n& f4 ~- qfor(i=1;i<=20;i++) 3 _6 X- h% x: ]. d0 |
{ printf("%12ld %12ld",f1,f2);
/ N! V  Z, }0 }$ _: i+ ~, _" Mif(i%2==0) printf("\n");/*控制输出,每行四个*/
1 V8 u- g; p# ?: ]% @) X( xf1=f1+f2; /*前两个月加起来赋值给第三个月*/ # T( y: m& e9 V9 r6 V+ R
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
% P/ S# V% L( j4 l4 G}
0 g; }) X- [" X: @) G: M}
" T' o) B+ O! U, n============================================================== ) W7 M1 s# P: N
【程序12
: d7 R- x/ e% T  A2 J3 f  w题目:判断101-200之间有多少个素数,并输出所有素数。
7 c9 F# `1 S3 v( Z( B; D/ e1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除,
' \) @" E5 A8 b7 M4 v- D则表明此数不是素数,反之是素数。
6 d( V- A9 Y4 p5 C5 h( p& @2.程序源代码:
8 U" a% g* j  d- j% s1 N- m6 a#include "math.h"
. g' a2 y5 T( Q* d6 \7 g5 h, kmain() / O0 r/ i2 {, @! u
{
( `6 g" Q6 _) Q4 ]) O; V; f/ P3 wint m,i,k,h=0,leap=1;
2 _- m$ Z& S& W2 p) @+ G/ Eprintf("\n");
3 y  h: a& u; O7 o; r! Ifor(m=101;m<=200;m++)
8 b+ R$ R! c6 K+ M# u" F3 ~{ k=sqrt(m+1); 2 \6 R$ n* m+ K  F# |  l
for(i=2;i<=k;i++) 6 k$ ^+ Y2 U+ ]+ u
if(m%i==0) ( B# J) H( g9 L! ~0 p
{leap=0;break;}
1 Y1 W; c2 U  Y4 O. E1 N8 qif(leap) {printf("%-4d",m);h++; / M( |6 S( X% m! W
if(h%10==0)
6 I' v5 q$ @# n  @7 ]printf("\n"); / `5 g9 y1 @1 p' g5 B4 c6 o
}
2 a; `, h9 R$ w) v) hleap=1; 1 i* k+ {/ t/ B2 X! A1 e
}
$ d4 f( X0 W  s; g3 b" _# \printf("\nThe total is %d",h);
' S5 p" m6 Q( k9 m} 1 x5 L) [1 f$ S7 h( a9 k
==============================================================
" F& t' A  V  A【程序13
$ U2 D/ O7 A1 L题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
" d2 |6 K/ B4 o! j, t本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
3 ^8 x7 a5 X6 B7 J" s1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 + ?0 \5 p' k* T, p
2.程序源代码: 8 I# w5 w5 R) n5 L
main() 9 g( ~! R9 S; K; {9 w
{
* n7 N6 E+ }' E$ n4 y% Tint i,j,k,n;
; z( |+ _& B0 k9 @printf("'water flower'number is:"); . W. d: m" q  [( }
for(n=100;n<1000;n++) . I! k- b1 s1 f- S
{
: P. H! t% I; u- I8 d$ {i=n/100;/*分解出百位*/
5 M5 S' p1 d* w* _5 ]7 oj=n/10%10;/*分解出十位*/ & R8 n: t6 w/ f! V9 y5 I
k=n%10;/*分解出个位*/ : @" o3 B0 @% {8 C1 ?* u1 t/ H
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
7 n  D9 h* `1 G{
, f7 U) B# R$ \' V) Xprintf("%-5d",n); 3 J# L' o# T1 M* w6 i* K
} 1 p7 |; Z- J) e7 m# d
}
( |" }  @: X) \- qprintf("\n");
: q. I1 t; ]" y) u}
: y% n2 D# _5 g3 _8 M============================================================== . ~3 c& x/ M' m8 c( T/ W
【程序14
# V7 G5 l% n* t题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5) o* E- O+ I' C/ y

6 Q6 w3 X  v9 O; l* X' i3 c8 v程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
2 A' O9 l' n) \5 j' t0 `5 h(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
& a1 f3 s1 _+ i$ F1 z(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, & R5 i. p; }- s3 ?) S
重复执行第一步。 * ?2 k! `+ ]- h3 W: q* ^. Y
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 , }' z$ S0 n2 ~; T: m4 ~3 x

' Q: B4 c. S1 v) C2.程序源代码: 4 l3 d# B5 I) i) [0 w! @
/* zheng int is divided yinshu*/ % z7 K8 x$ e8 \2 U. L& l
main() 9 l- J8 K: V4 B; n( g- Y
{ 9 {0 q$ W, V# o2 [$ B0 f5 j
int n,i; 3 l9 w9 U' x& t9 m) I/ R
printf("\nplease input a number:\n");
. K0 c+ l9 j, a  f+ L' tscanf("%d",&n);
5 M  c3 M& E  g/ F) Gprintf("%d=",n); ! Q2 R6 e9 E' X2 g, e
for(i=2;i<=n;i++)
8 h1 ]/ D  M& f9 _. h. A{ 6 w6 D, f4 J# j1 o4 E( d$ Z
while(n!=i)
( f$ ~' _8 p2 k% R{
$ y9 p: F* @; z. @( Nif(n%i==0) * U; u3 Q0 I4 h, l" U9 F& Q# A
{ printf("%d*",i);
" x/ s- l5 A/ Mn=n/i; $ Y* q6 U2 D# B9 N8 b; N
} & [2 h$ R$ g' x5 _- _* G& t
else ( E( [+ Y% q. y
break;
% f; t1 g# I0 L}
3 K8 ]  X9 R+ `4 M0 J9 ~}
- Y) g, h/ c" c% o$ Y# _printf("%d",n);}
9 s  |. _$ P* O% p% w) E============================================================== 9 J3 U8 W/ N( ]' M: b
【程序15( d4 u$ J7 U6 c' B; C& V( B
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, & j3 h3 D2 Q1 x; r/ P
60分以下的用C表示。
* W1 ?( `( p0 t9 x( t# {1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
+ v& N  ~1 s! e: _$ J1 m3 D6 T2.程序源代码: + q3 d  G# Z. i7 G# M
main()
  z- I( A/ W5 V/ O& N/ P% z{
# o9 _: A  V# v  rint score; ) {$ H; m* T4 o) L7 w* C
char grade;
, t7 P5 ^0 ?8 x5 T) Aprintf("please input a score\n");
5 J" F6 g3 C. u, U2 u+ Wscanf("%d",&score); 3 x3 o7 q8 ^6 C8 ]' c
grade=score>=90?'A'score>=60?'B':'C'); 0 u$ S8 N. d/ O# b
printf("%d belongs to %c",score,grade);
$ U, A5 M- Y4 ^# c! u}
0 E& I6 Q  E& g  [3 }( N============================================================== ( p+ X" o# q1 C+ y7 ]
: L2 W6 J" v, R+ x% B
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-2-19 06:26 , Processed in 0.087034 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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