找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2566|回复: 0

C语言算法6-15

[复制链接]
发表于 2017-10-5 16:43:28 | 显示全部楼层 |阅读模式
【程序67 L% X+ O& l$ P: ]: j8 B
题目:用*号输出字母C的图案。 $ P. W+ o& h/ v
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 + l( [" C( H# W! O. ?* X) _
2.程序源代码:
' m) b& Y, u2 E' `4 E! y6 u#include "stdio.h"
2 q1 t; C: {$ y2 pmain() {
' b' j3 v* V4 ?0 t3 S- V: T& fprintf("Hello C-world!\n"); 2 ?2 T1 [4 e5 x8 L, ]* t
printf(" ****\n");
( I( O( p! N7 O3 ~3 Dprintf(" *\n");
1 \; G. h1 b! l; F: j. g3 vprintf(" * \n");
3 M# x) R2 ]6 M/ o3 I1 oprintf(" ****\n"); }
! F1 V9 L& n9 Z' C/ a============================================================== $ [6 K. ?( V+ s( V/ F
【程序7
6 I0 {: P  d4 b0 A% Z题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! & ?1 c7 }# N( e# X6 q
1.程序分析:字符共有256个。不同字符,图形不一样。 # H7 p* ]# i5 U6 y. `
2.程序源代码: % q4 F  ^% C( `  \; i
#include "stdio.h" # X7 w3 n  I7 W  |# A/ G
main()
7 @2 |5 A. \# v' S- y{
6 g) k; y8 V1 J. Lchar a=176,b=219; 1 K: d8 a1 F6 B7 l. ~9 r
printf("%c%c%c%c%c\n",b,a,a,a,b);
1 o! g1 Q+ q- F: w6 u! Y3 w5 dprintf("%c%c%c%c%c\n",a,b,a,b,a); ; Q; k- C; T" R% q" {4 Z# X
printf("%c%c%c%c%c\n",a,a,b,a,a); 2 S' t( A9 V" ~( z' q% W) R9 g
printf("%c%c%c%c%c\n",a,b,a,b,a);
/ h9 r7 P6 M+ H- [8 r, ?+ Pprintf("%c%c%c%c%c\n",b,a,a,a,b);}
5 s7 C* |% {- q6 p9 x7 h7 Y============================================================== 4 `2 ]' `. ]% ]+ `: z$ }
【程序8
* z1 Z! U8 q2 G5 m2 Q题目:输出9*9口诀。 : }' {: S- c  R  i, K
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 : N. k& D8 ?* v# @  ]
2.程序源代码:
/ h7 a+ o9 U0 `: ~0 j( o& e7 I#include "stdio.h"
2 s2 t* j. e4 b4 P6 g, `4 A2 `& Lmain() 0 c$ A# n" f) C% v
{ 3 e! Z% a$ [/ |( R6 A1 I: O- z
int i,j,result; , M9 z- k$ k/ Q4 |1 f7 E5 y
printf("\n");
% J! B- f2 }7 d" O6 s5 ?for (i=1;i<10;i++)
1 V+ a% T% x9 L9 G/ U3 o7 E4 Z{ for(j=1;j<10;j++)
: O$ v) c( z# o9 ?+ g1 b  q{ 3 ~7 T. X+ b- E# i8 t
result=i*j;
4 ^2 `9 c0 B  ~printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/
0 _: P6 D# D5 d6 s: Z# D}
; k( G9 v- z( E  p6 H8 ?printf("\n");/*每一行后换行*/
& _8 u0 Q: N! r8 G7 h$ N, ?7 i9 N}
0 p4 Y( E% Y" [% A3 ]} 7 O/ P4 v- J6 J6 i7 y) b
============================================================== 9 y- O+ v6 y* G+ ?$ K$ i6 U
【程序9
2 Y) k. |# @: X题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)2 `" i+ u7 R% i, c0 |) [- r; }
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 1 u% |; `8 G' [+ ^1 Z
2.程序源代码: 5 |( _8 j9 z/ P2 i
#include "stdio.h"
" m9 Q" E! H" d& Smain() , l3 J. ?- R& v
{
4 o7 ?/ ], `7 J1 Kint i,j;
# c  l& w1 F! qfor(i=0;i<8;i++)
, E8 @: ?+ W! o" u{ ; f0 _. T- Q% A4 ?
for(j=0;j<8;j++) : @! ~' r5 I+ [
if((i+j)%2==0) $ _8 h6 K6 H# s# C
printf("%c%c",219,219); ; B! C$ A/ Z) f
else 1 c2 v% U% L# L
printf(" "); ; s/ k. o3 w2 g/ ?# i1 I; A4 m' \
printf("\n"); " u- z0 n$ s5 q& s
} % `) V  a6 s% e  K" ^. v" j/ M
} / G9 ^. N" P% H
==============================================================
9 D& S# \! ]1 P) V【程序10
' k9 T; s1 Q7 C, d9 D9 E! s题目:打印楼梯,同时在楼梯上方打印两个笑脸。 ) K2 B% s4 y1 z' l  l  u
1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 % g1 Z2 b# a5 [0 U. V/ S! K8 `
2.程序源代码:
- s2 n& _# C: l: K+ S+ ?: b! H#include "stdio.h"
3 X6 o% Q4 F5 `# S1 bmain() 7 w5 T' D; ?4 a* D) q4 j( D
{ : S4 c: E! K+ f) O( S
int i,j; ! ]' C  p1 L9 f$ @6 P/ v
printf("\1\1\n");/*输出两个笑脸*/
5 N! m$ G+ h9 ?6 Jfor(i=1;i<11;i++) 8 a, M/ x; y  m. a9 l. g
{
  W. d& Q. U. p. O7 p) Q: |for(j=1;j<=i;j++) 5 R# J& }' z$ P* }$ I4 @6 q
printf("%c%c",219,219);
4 _* x$ f6 o& W. d0 o9 Tprintf("\n");
; X1 y  @+ m+ {! x2 }5 P9 s9 N} * }# u$ p8 K6 y6 [' N
}
6 B( {) u1 z! ]  @  v( {' D- ]  D* C* ?7 x
/ n5 Z" h( O3 B- n$ Y# m
+ n9 l% j1 X! o1 v4 C2 N' O' t. s
作者: zhlei81 2005-1-22 11:29 回复此发言
- K) \' W. k6 X: d9 \3 ^% i% Y
- d% D; k: r" x8 O--------------------------------------------------------------------------------
8 q) O! @# Q7 _% x- N# }' W9 T; S1 [& |+ h6 \$ A6 i5 m
3 回复:经典C源程序100" z; L# E$ a# a8 B
【程序11
5 d5 e8 O' D; o; \5 Z题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
) n9 U& @6 y/ y# H+ l后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? $ E5 s, o" N0 m! l1 B+ ~( q  f" O# n! p8 x
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 1 H; u% u  |* h5 m& ?
2.程序源代码:
' B" e0 A. G+ l6 L, _, @main()
$ \# o$ d- e3 |* ~5 b, o7 F- \{ 0 B( E, F) f2 F* f2 m
long f1,f2;
2 J) v( F+ E0 X( O9 n8 D" B) Cint i;
% N0 J0 m2 s3 }' x" J! Q" mf1=f2=1; ( Z8 v9 \; l' X. ^& [+ Z; Z- u3 m
for(i=1;i<=20;i++)
: i2 \6 |4 v6 M6 h8 v# e{ printf("%12ld %12ld",f1,f2); $ k% G  i/ [& U8 G. v
if(i%2==0) printf("\n");/*控制输出,每行四个*/
! Z9 E8 R# o/ K! df1=f1+f2; /*前两个月加起来赋值给第三个月*/ ) I( r# d* n5 x% Q' b
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
9 s, [. [- Z3 c' h; L}
* y  T2 B- K6 Q' k} 1 z2 t. }& q7 `! P" v6 J
==============================================================
) h( v$ Y3 {4 o: b) X【程序12
9 s0 {- Z3 G! i1 |  }4 {题目:判断101-200之间有多少个素数,并输出所有素数。 5 y/ o& G6 |5 \( r7 j$ F
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, ' [9 _. \; r/ M+ o2 V( c3 R! ^
则表明此数不是素数,反之是素数。 : q) t7 ]8 M$ F2 n; a
2.程序源代码:
# `& Y4 E+ g8 ?# K% }" z: e1 z#include "math.h"
* t( r: z/ }- H0 P$ D; z1 Wmain()
2 z$ u0 a) N& O% Z! A{
; u) J. b3 D% U% h8 ?; _+ Jint m,i,k,h=0,leap=1;
  H5 S# x* ?- v8 u- R% ?* g5 L( _0 Aprintf("\n");
" i! [& Y6 U3 t: Q3 qfor(m=101;m<=200;m++)
; T5 o  g/ ^/ B" N2 W% N6 P% z' x; n{ k=sqrt(m+1);
* a. @& H1 F. y0 A  mfor(i=2;i<=k;i++)
9 P2 r$ n8 z8 q0 A! [if(m%i==0) * x9 [9 K9 t$ ?
{leap=0;break;} 9 m, d- }. ~) J
if(leap) {printf("%-4d",m);h++; & w1 x$ s; i8 w
if(h%10==0) & Q, b" P7 ]) g+ O5 P" U
printf("\n"); 0 x& H4 H/ M' b/ l( P
}
7 g; Y7 O- H- o. aleap=1; 8 d/ l, W- C! v
}
" A5 t4 u* W+ `/ ~! mprintf("\nThe total is %d",h);
# L' y4 X/ _( ^: r}
2 k4 u# r  f2 M; d& I1 x==============================================================
( Y3 q' D7 T" s: \4 L. v【程序13/ h, Q& A3 d; t1 ~# h( ]- f4 g$ K
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数 : k. \: n- F" B$ m
本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。
/ H% z* q$ U+ ^% M5 h* N1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 + f  ~/ F- w7 x5 s+ c
2.程序源代码: " k/ X! K8 D, A+ n! h
main() : b" s# u$ F9 t+ ^& S
{
! d/ x/ a, k+ P) J  yint i,j,k,n; 7 w; e' X4 T6 b" z, V4 |  b8 A
printf("'water flower'number is:");
6 R5 ]  {, N2 Y6 w; Sfor(n=100;n<1000;n++) ; C6 [' r( k. _3 O7 x, O# V6 X
{ $ G( j* \" H% d4 f8 d
i=n/100;/*分解出百位*/ ! u% ^, r% N2 O2 R
j=n/10%10;/*分解出十位*/ 9 y% ^; o; X9 ?9 g9 ?
k=n%10;/*分解出个位*/ 7 Q# o5 y/ x, N' n! o/ m# D9 @* H3 o0 i
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) ) |! x' G' l* V. M$ m; j1 H
{ 9 O8 i" ?% J# M% [- m! X
printf("%-5d",n);
$ v8 ^* G( c5 Y& X0 R, C} ' ]8 [  X1 N& ^  `1 _& `1 l
}
% o5 G4 z4 h9 m0 Sprintf("\n");
( _2 T& I7 Y, R}
6 @, O0 L$ q4 W7 j* }============================================================== : J5 M" a$ h1 P# ?
【程序140 u" b9 `8 @# ~# p7 B% O; r; z6 B
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5) b2 T' x# x- B

3 `# W3 K2 {+ c$ Y4 {程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
& f  K3 p2 n0 s% f7 S8 F0 B9 K(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
! {' u# B' S) J+ x! m. x8 s. _9 s(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
- }; V% z1 [* x8 q# h1 r2 K; k重复执行第一步。 , a( s6 C! g) |6 h6 l! x) s
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
4 f" G- z5 I) n0 ]. n' k* _
  j) Y! G# I. ?  m  u/ R! I# k2.程序源代码:
  t/ d- F7 J* n, S' L) \/* zheng int is divided yinshu*/ + }$ T+ c6 I9 g$ v
main() 7 M8 K! s$ g2 u4 q0 r) I
{ & [; b, \2 ^. u9 Z% h# }( V
int n,i; , _: \  Q' t; ^& [) B- A
printf("\nplease input a number:\n");
; c9 q. p6 H, b2 bscanf("%d",&n);
2 ]  m5 U$ Y" Y, U( v( Sprintf("%d=",n); ; e- l1 `/ Q, U9 g& ?  W& C1 G
for(i=2;i<=n;i++)
+ w6 `$ G; P) f% c{ : C: u& y1 p  h
while(n!=i)
8 s& e' B4 T0 h4 h3 t3 l# d{ - Q) _" F3 \$ a( y( {8 \
if(n%i==0)
9 t2 u( [9 ]% y7 Y{ printf("%d*",i);
. ?1 R  M( |- ?; dn=n/i; / y8 {" y& a. ]
}
/ y2 Q9 [0 E/ F: x& }6 Velse
& G0 r- ?- z3 v5 z) {& g  L+ kbreak; 3 W2 b- S) S' u- N( l1 D, i
}
9 z; [. q( m: u' s" }}
5 v& y1 |- a% a: Q$ wprintf("%d",n);}
7 N3 r6 w* U' m7 E9 R3 s3 ^============================================================== 8 Q9 K  S* X6 ~* T% `% h
【程序15" j: j) v+ j3 l  L' n; Y* ]& C
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
/ n! m3 @8 Z+ ~# B- @# R60分以下的用C表示。 1 `  u! x  B  s
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 7 o. A/ k/ N. z; E' N( O6 y
2.程序源代码:
/ }% @1 j9 E" emain()
5 A% P2 D+ J1 W! G% x. U$ D{
9 i" v; |! E# ^$ n, U2 Fint score;
' Y/ m# A* j' V% ochar grade; # R( N# o/ N7 p* J$ K
printf("please input a score\n"); ! H- c6 u5 r! w; y; Y; s
scanf("%d",&score);
% g& M9 j2 n) W9 f( \grade=score>=90?'A'score>=60?'B':'C'); : \; d  e: \4 N3 Z: X" s
printf("%d belongs to %c",score,grade);
' u1 p! ?8 h) o. i; I} - F( Y) v: o' [3 _. w$ g1 `
==============================================================
& j( b: J* i1 h7 [( J% |' E5 v
3 I" c4 N( E8 ]$ i
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-14 12:09 , Processed in 0.066793 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

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