找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 65|回复: 0
打印 上一主题 下一主题

C语言算法6-15

[复制链接]

114

主题

136

帖子

1000

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1000
跳转到指定楼层
1#
发表于 2017-10-5 15:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
【程序6( J( y) }2 Q( }
题目:用*号输出字母C的图案。
% E) k# G7 A* N. _2 ]6 Z' n6 s1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
( y9 P( T' [7 ~/ U2.程序源代码:
4 B9 O# z$ \% y( X; b#include "stdio.h"
8 f7 M- G- ~# J2 r$ V0 B& [main() { * S* s; a: ?  L
printf("Hello C-world!\n");
- G4 Y' A% p* I! F# E& O' c  n  fprintf(" ****\n");
. [8 n: c' |% \! T$ qprintf(" *\n");
3 O0 `7 A9 W. q) wprintf(" * \n"); + c6 ?+ a' ]  g# C% ~& \6 _
printf(" ****\n"); } # ~+ |, I( y: x0 m
============================================================== ; S$ n( c# z4 F- @; V' e
【程序7
! |; |' l! b& b- N+ y" q; n5 K0 T题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
8 B- f: |9 D. y5 I& D1.程序分析:字符共有256个。不同字符,图形不一样。
3 ~% G  p- m3 E* Z3 U0 w) g1 o) @: `2.程序源代码:
+ s7 u6 w0 c* E# I! X#include "stdio.h" 4 X7 U' ?6 n3 t/ z! P; i
main()
% V+ B# P& t1 t# V% @9 B3 V& g, s. y{ % r- y0 @9 a- o" B6 F
char a=176,b=219; $ h+ ]3 R- i, O! X2 I$ Q
printf("%c%c%c%c%c\n",b,a,a,a,b);
4 m# c  V* |: w6 m* _  xprintf("%c%c%c%c%c\n",a,b,a,b,a);
6 j( V$ s! E( Wprintf("%c%c%c%c%c\n",a,a,b,a,a); 0 D8 k  J5 Z& [! B& J9 E: {
printf("%c%c%c%c%c\n",a,b,a,b,a);
1 F& H' n1 a5 l  Y  Z5 q1 ]printf("%c%c%c%c%c\n",b,a,a,a,b);}
# R; e8 {$ r+ R2 U- s3 P==============================================================
' H9 Q: H1 C$ l0 B- E6 l! y【程序8
5 u9 c3 c; K, ]; j% g4 z+ ~) U0 @' h题目:输出9*9口诀。 ' t% C  X6 R, j( r
1.程序分析:分行与列考虑,共99列,i控制行,j控制列。 % ]* r: }6 ~# r! H3 z0 E2 X9 ~
2.程序源代码: ; x* X% k1 l0 P1 a! |- H' o. Z% }
#include "stdio.h"
; Z/ k1 G; d: F6 |+ kmain() " Y4 t* l# A& L! B. j
{ , B+ A; h6 f# L( A1 t
int i,j,result;
8 u9 J1 P. f+ P1 \/ j& Rprintf("\n"); 1 Z2 M  O( c& l" Z
for (i=1;i<10;i++)
/ f- B) H* j7 P1 _{ for(j=1;j<10;j++)
7 q0 s6 h  ?, Q( r  _  ?$ {& u{ 6 E9 Q% d, w& q6 K% Q  E' {
result=i*j;
8 J/ j. t& ]( P4 {! j9 V% Q8 `printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ - j3 b4 V" C$ m7 ?  r0 S( e
}
7 B& F, ^( Y% ]( x- p3 Q( i  z$ {+ pprintf("\n");/*每一行后换行*/ 2 @1 T8 x% ?0 _8 N
} ; h, b: H: B" I- [6 ]
}
& a  T# }! r1 C* i% R2 n$ j==============================================================
' c! x" B9 r' o【程序9
' l- b$ B& D+ D7 K; u+ j题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)
2 P8 j2 U2 a! @; P2 o& ?1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
' ~$ Q; E* ^! C2.程序源代码: 5 r- Y! x& }% E7 w7 U
#include "stdio.h" 5 x3 b7 @1 m; m( B
main()
4 f/ Y# ~8 F, n. `7 }5 n{
# d( A: Y/ u% _  @; w3 T" Nint i,j;
3 j4 U: Z  f3 T1 U" [for(i=0;i<8;i++)
0 p! A- T+ E; R: s9 n% U% f{
. Q; f% K5 }, x/ I" i$ Mfor(j=0;j<8;j++)
5 k# w- C6 L* ]5 Pif((i+j)%2==0) ; |) Z. W7 Y, \- e% g& H
printf("%c%c",219,219); / z9 o" R0 L- h. m
else
1 ?2 ]1 t2 J4 u( W1 g. B. G" Eprintf(" ");
1 u: i- U' x  N% L+ [printf("\n");
1 q/ f5 }5 w) k}
3 h6 z" l+ j+ L) M9 V1 z- F} & |7 @% @- b8 @6 \9 ~9 o
============================================================== ) o3 z3 [) Q" J9 M! r- K
【程序10: O6 g- |. t0 ?8 J) A1 y' c4 S- ^
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
! X) c( I6 O- @; ~0 h- c1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 ! _1 N4 x+ N& J0 F
2.程序源代码:
2 ]% v* u1 l7 f: s8 w#include "stdio.h" ( S* N1 U4 \; K4 f
main()
- Y  _+ Q. v: u2 p7 t1 v- i# b{
1 k( y% G9 \* ?$ Qint i,j;
5 Q" {7 a0 ?* }# t. x4 p0 Rprintf("\1\1\n");/*输出两个笑脸*/
5 a: h) Z# b2 |1 j, I, T1 sfor(i=1;i<11;i++)
% k8 X9 t) e! R* J1 e$ r{
& }. }& \$ \2 a6 m* ?6 I& Nfor(j=1;j<=i;j++)
3 z3 m1 n. b: l2 e7 w6 d$ {, ?  y4 R5 Hprintf("%c%c",219,219);
% |; t6 ]$ N, H, k. X! fprintf("\n"); . c; x: B# b! X# }
}
$ p) h- j3 I% w$ y" G  Z. y}
, f1 K6 `" c0 q2 i* U5 }8 |
; G; U" @6 E; t9 f" |$ M) V) W
/ a7 h: N" Z/ ?! _( h0 w' a1 B' Y  r+ R  r2 Z% S2 e/ O+ K; y
作者: zhlei81 2005-1-22 11:29 回复此发言
  \* g( G9 v$ k4 i% E/ K
2 M; S" m. _4 e--------------------------------------------------------------------------------
7 d% s0 @$ m3 X9 s7 J6 F, _
( T. n! }( y# n6 F7 m6 ]' {3 回复:经典C源程序1007 i, U) K0 o3 R7 \* b) i
【程序11
' _( K3 N, s% c3 v/ p# j* P3 d题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 ! J) L  {" m3 X8 b% W
后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? ; I5 t; u$ T# h" F8 i% o' {5 N
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
7 F! i3 ^4 {2 b  C3 x3 G7 I2.程序源代码: ) \. S' x2 v8 P; J; g
main() , V5 T1 \+ {4 U7 T7 T2 s
{ / X! T: z) z3 P2 Q( {9 [3 [# G
long f1,f2;
$ S- E0 C( B; ]) n$ G- N* C* ?int i;
, l! w8 ]& |4 k$ c2 D! |f1=f2=1; ! ~  N4 S* h9 J7 {. d9 \4 ?
for(i=1;i<=20;i++)
# u& u# K& Q# {% f  i5 D{ printf("%12ld %12ld",f1,f2); 1 S1 D1 d. H8 Z! X) Z: P
if(i%2==0) printf("\n");/*控制输出,每行四个*/
; G# s" C& ^' H! K! ~% |f1=f1+f2; /*前两个月加起来赋值给第三个月*/ 1 K4 \; q) X9 f8 h; F$ l
f2=f1+f2; /*前两个月加起来赋值给第三个月*/ 8 z- B9 }& [  H5 C* F3 b8 }
} : G; S# A9 J% j& S1 c! y+ b0 y
} 8 G! ~; o; Z. h' V9 L
============================================================== : H$ o: J% @( k& ?: e# P; i
【程序12
# j' ~9 M- v5 K题目:判断101-200之间有多少个素数,并输出所有素数。
: ^4 X- g0 R& E8 j" x2 m" i; S1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, ( g" J7 k5 q2 B+ ^& ]3 b
则表明此数不是素数,反之是素数。
) K7 y: ~6 L- \% t" I2 [2.程序源代码: & g, v6 K7 j2 Q2 T$ J
#include "math.h" - N$ p. u9 g( F0 D& w4 p& d' t
main()
7 }# u$ X  C7 v0 r0 i; y6 W{
- W% X8 p* f- o) X- B! M4 Hint m,i,k,h=0,leap=1;
3 s; f5 d% B9 K( S7 A( w3 F/ |) D4 qprintf("\n"); 7 D& X* V# j' t8 i1 X! v
for(m=101;m<=200;m++)
' J0 f) l$ r' }8 [, q{ k=sqrt(m+1);
$ T) \- g" ^- {3 J3 @5 ]5 H% [for(i=2;i<=k;i++)
. J9 T, \* X0 Wif(m%i==0) - s4 b6 r# S/ f
{leap=0;break;}
8 ?( V9 C, l! N3 qif(leap) {printf("%-4d",m);h++;
( E- s% q' |+ W. s6 X, U/ M# sif(h%10==0)
. r1 B+ y$ Y5 a: l# G( Uprintf("\n");
. s- R1 E: U  n3 k}
# J9 r& `3 I% `* z% Z, ~leap=1;
1 Z$ _& C+ g5 e( \$ J- \  d} 4 F% \* G% c9 v/ J1 ~- [
printf("\nThe total is %d",h);
2 |! N5 W6 ~- L5 a}
  ?: p2 I* e* I============================================================== 3 h* N' {4 w) ?5 W1 u# V
【程序13
# h. I" M! s# a& k; P' W题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
. ]- r8 O- R' X8 p4 [本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 : S% N" s. F1 ]4 n# n8 ^: y! J
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 2 L# b' E" X, U7 B1 m( ?2 q
2.程序源代码: / P$ A/ y7 I, \4 _
main() 0 \" g: L" T1 b$ M/ ]9 S
{
& V/ |1 ^2 V) j" U/ }' i# qint i,j,k,n; ; ]: y) |, x% S9 ~9 W8 N/ U9 ^/ R
printf("'water flower'number is:");
0 K, F1 [! Z% P, _/ e" T+ @for(n=100;n<1000;n++)
5 A5 P% h7 G3 @( I1 Y, n{
# X: p) g  ~9 {1 r# [& V7 V  bi=n/100;/*分解出百位*/
# }7 X5 z  d) _4 l! w# ~j=n/10%10;/*分解出十位*/
9 @+ \9 u5 g% V% m8 {; H, Ck=n%10;/*分解出个位*/ . o% k- w" `3 X& C5 F
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k) ) p9 N( z( o- D+ P
{
5 i3 w8 c2 a# s6 L. c. Nprintf("%-5d",n); - T$ G4 g1 g4 a2 X/ Q7 Y1 K
} ' D' T: ~* U. ~4 `; k" Y
}
  z0 X$ V% @! y3 m$ xprintf("\n"); ; \1 g  O, _2 S- f% U: ?, {5 P
}
# z$ C1 q! B1 \4 C9 f5 j% A==============================================================
7 j% L" I5 j* `) e【程序14
9 ~+ t2 f/ C+ {7 ?3 i6 P9 m. o题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*58 K# ~+ s: m/ y6 s( }* B  V" ?

, `; l  Y1 j) e' z* _; p程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
% U& ~9 `& Z7 I" M* @1 s(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
5 u* J# N. |  x* E(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n, 4 T, g% N9 {. j' m# A) `
重复执行第一步。 3 t: P9 ~/ c2 D& c: a. S
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 9 H9 A& c6 T* V: K( ^
9 o3 \3 g+ Q# @( _
2.程序源代码: 8 C  @2 o, l- L3 k6 O# ~# ^
/* zheng int is divided yinshu*/
/ D1 |2 G: l0 K6 |$ ~5 Lmain()
4 d7 M/ ]# B) U! ^* M1 g{   M% O1 Z: q7 X
int n,i;
* l4 }# A7 c% c+ O- l* @printf("\nplease input a number:\n");
1 @- u) L" X% H( O4 l" t' e: hscanf("%d",&n);
' {( w' n( ~) W- @3 s! g# bprintf("%d=",n);
2 a- Z1 |! S* A5 sfor(i=2;i<=n;i++)
4 t% ]. \. E9 q9 a$ ~! |$ A/ ~) T{ - _& k# u5 u; _8 A
while(n!=i) ) E) }6 N$ S0 \! C
{ $ v) C8 y; n7 _! ?2 ]1 a6 a
if(n%i==0) * ~9 M1 G  ~' v7 S; x) E
{ printf("%d*",i); 9 p6 e  I" o, @; W6 j5 J9 ^
n=n/i; . l9 S4 S7 M5 u& X1 l
}
0 A: l% J7 Z: o1 J& F/ q& Yelse ( W& r* ]% Z5 s3 ?) @
break; % ]. _$ T' `& i/ ?/ O
} ! }7 o' J$ I6 J- F2 R
}
3 `! t* q. y0 a, r& F& ^+ I$ Sprintf("%d",n);}
: P0 h4 V: C+ Q  l8 C==============================================================
$ h$ v* s( L/ s% ~+ p# W" H4 s( G【程序152 ?/ w0 j: s0 K2 T/ ], ^- c
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
# R& q% T( U% K8 s* @9 G6 E3 R60分以下的用C表示。 2 v3 h4 \1 {! O5 _
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 ' x# _- _$ F; w* u; q+ V) t
2.程序源代码: ) @3 |8 ]: N2 z1 `) p- h
main() 6 D6 i2 Z/ s; J) Z" J
{ * S8 T% B4 q  Q" z' t% M+ c+ Z
int score; 3 U4 W2 v" J. o5 f
char grade;
$ S' N) _. K# U/ hprintf("please input a score\n");
/ a) }  I6 K9 \/ }( v3 L( [8 |) Fscanf("%d",&score); 1 w, l' O: C8 I4 v0 b- g
grade=score>=90?'A'score>=60?'B':'C'); 8 [, t+ n  z1 y' \, X3 @
printf("%d belongs to %c",score,grade); # ?" `- B6 j) T
}
6 R/ ?- A! s  u- R7 G==============================================================
% ~9 I! I6 O: H! C

- M8 {5 F) V/ I# V4 n7 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-2-1 04:18 , Processed in 0.057455 second(s), 33 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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