机械必威体育网址

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2339|回复: 0
打印 上一主题 下一主题

C语言算法6-15

[复制链接]
跳转到指定楼层
1#
发表于 2017-10-5 16:43:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
【程序63 p" [- k# l7 B% E" Y
题目:用*号输出字母C的图案。 6 i4 I, _5 E4 v2 j- C
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 . O  O3 G: m& n2 @$ I
2.程序源代码: & b7 g3 V9 [8 b4 z8 ^0 h
#include "stdio.h" 8 l  }! R. j" U4 k
main() {
' F# U$ `% ~1 Z( d. ^: E1 b9 A3 F' J0 B5 Pprintf("Hello C-world!\n");
. j7 S9 n8 m4 \$ E" bprintf(" ****\n"); 3 T( }8 K+ r; }5 C. |% H
printf(" *\n"); ! f4 i: \' ?! e  |. K" P
printf(" * \n"); : \* B# c; s/ `/ ]% Y$ s
printf(" ****\n"); } 0 Z, s, |7 H  k/ q8 I8 T
==============================================================
# j9 L/ W5 \& j! U【程序7
% @3 A3 S, z. p/ L' }题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
: N: A+ l" P2 C+ g% N1 n% N1.程序分析:字符共有256个。不同字符,图形不一样。
& r; G- _. A! x+ T+ U: ^2.程序源代码: % [; K( l3 ^" a! e8 h; O5 n
#include "stdio.h"
8 x' c3 y; T! tmain() & Z/ J% y1 W) v( ?7 H; }5 G
{ 9 ]3 O' |5 Y: y" }7 d7 q# h
char a=176,b=219;
/ Z2 O8 h0 \$ D3 {0 t. yprintf("%c%c%c%c%c\n",b,a,a,a,b); # y9 v5 O" [4 p5 O. g' O
printf("%c%c%c%c%c\n",a,b,a,b,a); 3 ?, _* d  Y' d2 E6 K
printf("%c%c%c%c%c\n",a,a,b,a,a); & q* n4 m, z4 y0 Q( d
printf("%c%c%c%c%c\n",a,b,a,b,a);
/ p, g/ ]3 `" A4 M. lprintf("%c%c%c%c%c\n",b,a,a,a,b);} - y$ d- T8 S% x1 _, ]9 ]7 s: K; D
==============================================================
* Y0 _$ C" c1 ^) X% X8 @$ F# x【程序8
+ k6 C" ]8 Q4 }, e- A1 V题目:输出9*9口诀。
. Y, ]: \, d& i5 h1.程序分析:分行与列考虑,共99列,i控制行,j控制列。
. X& H8 l9 Q7 x9 i! f3 J+ Q2.程序源代码:
7 [0 I; _. d+ V. I5 ~% @#include "stdio.h" 0 _, Y* {8 u0 N0 ]& c' H& J' I
main() . R( |1 h2 a2 q0 X
{ 4 L" }3 w  D  b, ?& L) W
int i,j,result;
4 y5 S, P( _7 ~7 j7 m6 v5 i; i8 @3 Hprintf("\n"); * `$ p% k8 x+ P2 [) _+ P
for (i=1;i<10;i++)
; c* U5 f: q" _. v/ F) v7 C{ for(j=1;j<10;j++)
# p( Y8 Q" r0 a& A, W{
7 Q# X+ f5 `; u. Y1 f! K( R. Iresult=i*j;
3 |' M! k  o& uprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3*/ $ T7 Z0 E& {0 O: p" t& i
} " T, g" ?8 B- I! Z' m. j
printf("\n");/*每一行后换行*/ 9 Q/ _# ?8 L6 R5 z
} ) Q  l' u$ c# k2 q2 c
}   ]- l! j  g4 s+ d$ ?7 o
============================================================== + _! K4 T2 }8 n
【程序9
4 y8 M# t# @. t! g题目:要求输出国际象棋棋盘。 (嵌入式学习企鹅要妖气呜呜吧久零就要)) T, W4 F  U4 G2 n0 q/ O
1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。
& D9 {  g- Q/ K3 ~! W* S2.程序源代码: / @7 I) }: G: X3 o" _
#include "stdio.h" 3 X- z  {% D3 h2 T5 ]& u  k
main()
! O5 x  h  W+ M% _{ 8 H: ~% k$ m/ d6 C" o, [1 o
int i,j;
: H- v. s: e  }8 f: x8 _! S% Tfor(i=0;i<8;i++)
& `& k) ]; b7 R- L{
2 q$ E% b! S1 Z$ d9 A6 qfor(j=0;j<8;j++)
: e3 u- H, O9 }) fif((i+j)%2==0) $ O& |0 y& M" m3 w  a' ?5 V. A# m. |
printf("%c%c",219,219); 1 P% [+ {& X; J' m& B1 B* O8 Z
else
1 {0 m3 _& G/ R/ V- O5 Z7 p; {: gprintf(" "); 1 W8 p  g, \% ]+ h% B
printf("\n");
- I% s4 |% V2 Y1 o} ; ^: ?6 H+ B6 b3 w) u& t
} * u3 Y2 a5 L6 p7 [1 J
============================================================== . O* k# x0 @& J$ B1 O
【程序10, j% j0 }  ^' _, m- r3 }7 u( D
题目:打印楼梯,同时在楼梯上方打印两个笑脸。
, R6 r2 G! J/ h1 x' r1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 . p6 q1 N- c& s- K- y
2.程序源代码: - i* ]2 X6 O* }4 T& b8 U2 |7 n. A
#include "stdio.h"
! s8 k5 N" l% l  }6 k2 ^# P9 Hmain()
+ w0 Y1 l; {, e  F{ 3 a9 g& a+ C# K# M: k5 X8 F5 x" ^( L
int i,j;
- G( D( J9 R0 d) C3 Cprintf("\1\1\n");/*输出两个笑脸*/
) A: m) U6 Y4 {, U0 v" Lfor(i=1;i<11;i++)
7 |7 [- E' y6 m5 `5 A3 R$ o# Y{ ' \* L3 i7 n: s4 F3 M7 A
for(j=1;j<=i;j++) $ G# O0 ^/ e7 j2 k- S7 P) }
printf("%c%c",219,219);
2 D* J* W  v- F% O$ U. vprintf("\n");
& _3 K- G* n  H6 M& l3 t}
5 i4 ]5 q, x0 @& L8 O. `} $ r* m/ `) M- r3 B" x2 t  H8 U

, [* ]8 V) l) G# p' U" i  {! w$ c9 V8 z* h7 N5 L
  N6 Q9 u- V( A
作者: zhlei81 2005-1-22 11:29 回复此发言 6 ~0 E( k3 U1 j/ R

9 }! B6 s" H' v" i; }) D-------------------------------------------------------------------------------- 2 S6 r* i  O5 ]  c7 `

+ l) B! {5 M9 p3 回复:经典C源程序100  f2 H6 ]! s, r3 y- I3 Z% P
【程序11
5 n. r2 h7 @! F题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
) B& O/ l- }! b3 K后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? + A' o, t! x& `! X
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... : d: R2 O: B) s9 F
2.程序源代码:
( d! h# D2 E' b5 S  E" `: |main()
- f- M$ j) L8 V1 I$ H{
0 c' f  N2 o. C1 g& T( }- h" Klong f1,f2;
7 P: F: |( D2 lint i; " }' C1 ~% z- Y% g( v- j' o
f1=f2=1; / ~8 }& C: _' B; k8 [) h; b$ j. s
for(i=1;i<=20;i++)
, L) m' E, T  c6 i% h9 H8 I{ printf("%12ld %12ld",f1,f2); 5 E8 g) p( @0 h2 q7 u4 x  u, x
if(i%2==0) printf("\n");/*控制输出,每行四个*/ # i2 b7 m" }+ |) R  |. N
f1=f1+f2; /*前两个月加起来赋值给第三个月*/ 8 s- l. N& V6 [* H& A% ^4 T
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
, ]6 U1 i6 e0 T" p2 |) }+ j+ D} 2 u: W: u$ m4 q) {& g
}
% n5 m1 L- v) G6 G/ l==============================================================
0 l( Z0 f7 K- H) G8 A7 F& V【程序12
! C6 ?$ V9 \! d; q; h( M) z8 A题目:判断101-200之间有多少个素数,并输出所有素数。 . h& m7 ]. x% i- J0 e6 F# d
1.程序分析:判断素数的方法:用一个数分别去除2sqrt(这个数),如果能被整除, 7 k  T4 C8 b1 m% v/ ]' k# N& g5 H/ e
则表明此数不是素数,反之是素数。
- K4 }1 n3 ?& L: Z9 @3 T2 A2.程序源代码: . l" f8 j: c( V7 S1 m8 k
#include "math.h" - E9 z8 Z3 E% H8 ]
main() 4 F5 K+ h( {& r% m: ?( Q
{
" P( W; j9 ^" o0 |3 uint m,i,k,h=0,leap=1;
% v/ b/ Q/ M1 {1 P# [' k: Zprintf("\n"); " O3 K; e) i* N8 W
for(m=101;m<=200;m++) . k( @0 m: N. Q
{ k=sqrt(m+1);
: X6 g. Q3 u% f0 A/ @+ E1 G5 Jfor(i=2;i<=k;i++)
/ _; c5 s( q) R% r& s3 [: p' D" qif(m%i==0) 9 H. J+ O2 B/ _/ a) |2 n6 x
{leap=0;break;} - \9 [& p/ o# B0 M+ ~2 u9 R
if(leap) {printf("%-4d",m);h++;
, K0 ?# V) |& x( q" R( jif(h%10==0) : f$ F+ G" J' @. G
printf("\n"); ' i5 I6 t5 \6 ~7 z$ w+ L
} $ g3 }+ U' T5 B+ W4 h& E3 d! [
leap=1;
' t* T/ `: ]; E: E% |}
+ a4 M( `2 B& ~+ Pprintf("\nThe total is %d",h);   x) o! c' ^7 s# @8 _
}
( d  s3 t- H" E8 X: E==============================================================
' N4 s0 r6 }+ k' s) F4 ~& M【程序135 ^" x, s6 \8 r
题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数
: S7 Z2 _0 }! E& @本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。 1 [& D7 k: a) ^- i
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 0 D# v; R. n6 c: ^; U% d
2.程序源代码:
- [% K( [' d$ rmain()
" M5 B) {7 _) \, x6 x2 N{ 7 B+ J$ b7 ]( i7 b1 o8 W7 x( j/ r$ P
int i,j,k,n; . I+ S# i5 Z( l1 C5 a: F
printf("'water flower'number is:"); ) |$ }  ?. u- n0 d( {$ T
for(n=100;n<1000;n++) 4 M( e6 y& Y+ o8 g# b: Z# P
{ ; a: }7 c' o5 w0 R; U
i=n/100;/*分解出百位*/ / S2 B6 P) K0 \! U! _
j=n/10%10;/*分解出十位*/ . v! R7 k3 B. _# I) a
k=n%10;/*分解出个位*/
, \  ?' N7 ?' H* l) wif(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
! [$ q, a: G7 E3 t{
$ y/ V5 n2 t. c# y7 o* w4 m" ]printf("%-5d",n);
2 y9 a# }* }6 N}
0 X1 [' ]7 }6 V; `  \# `/ H}
- H  t9 h2 Y3 A: t. bprintf("\n"); # a) \0 |8 U: Y
}
/ G- U/ {4 F/ b& }5 ]==============================================================
' t) Q) |' X6 @+ Q, }4 I  k【程序14
2 c7 W3 p5 j9 b7 C6 U2 ?5 p题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5
1 G# ^" U' T  P: ^/ }  l9 s$ B. ^1 {
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
1 {6 t* G( W: A) I(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
" p9 ^/ @& P$ }8 E% ?(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,
3 s. v2 {4 X" l0 n4 @- G$ r重复执行第一步。 * O# q4 X* A% o( l7 W
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
- a+ ?! t  s0 Y. s: J# h- u( e
# a. r" ~8 }1 V. V  n# Q% r2.程序源代码: 4 r# Y5 K. M- c. [
/* zheng int is divided yinshu*/
) J! n8 w* Z5 Z$ g, u, _/ Fmain()
/ ]4 a9 g" I8 h8 q' @2 w{ 0 J, x* @0 o8 J( j* p+ l
int n,i;
' L+ s$ K: b# T+ Aprintf("\nplease input a number:\n");
- S1 ^1 F/ d$ q) Q1 Yscanf("%d",&n);   x+ U8 l1 j. D* z  g/ z
printf("%d=",n); 7 r& T7 F# u: i/ t3 W- d9 G
for(i=2;i<=n;i++)
9 q( a" `- ^; y; M2 }/ Y{ . Z# k$ P- X' h( V1 p
while(n!=i) * l& X" S; U/ k, c2 n( ?
{
3 U3 R8 U3 j7 ^if(n%i==0) 7 t( G6 E7 Z4 ?9 ?
{ printf("%d*",i); ; k; `4 k4 l( k
n=n/i;
: T0 U+ |  G) s) H}
/ S4 }0 f* r) N* X5 M; l! Kelse & Y" k% W0 h7 X
break;
% V" |9 ?$ @; U* x} # H7 L; C; L& ~; Z
} ( n8 H% r3 `. \) ~) J/ V- t5 O" H& o; U
printf("%d",n);} ; C" f% b8 D3 z3 D- V. t, O
============================================================== : ]5 B; O* i  Z% Z: o' I1 N
【程序15% N' t; v; i  A1 g3 S6 v2 r
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示, 9 n/ l( o* c! e1 n4 P
60分以下的用C表示。 # L, H1 Y5 c% A5 t. U6 L
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。 ) ~4 D9 u  l8 R# x0 K% b
2.程序源代码: ) Z2 a# P* ]5 j. v* j, e7 E7 D
main() 0 @: k- I% A$ X2 g6 K, @8 R
{ ! b8 A) _) ^. a# ], }+ E# X7 |
int score; ) a, @, H- T! ^$ H1 Z* N
char grade; * c3 r& }8 H* m5 h$ k6 h
printf("please input a score\n");
- w3 M! a9 V: Q5 K; R7 Oscanf("%d",&score); & k/ Z6 j: L" V4 H! J6 Q$ o
grade=score>=90?'A'score>=60?'B':'C');
; y8 g9 z9 _8 p5 s- Oprintf("%d belongs to %c",score,grade);
( U1 ^  D5 U3 Y) D' t$ C} 9 b" U1 G& R4 T; O  j
==============================================================
! Q6 H5 F* H$ M* C/ I$ f

4 j0 P: ?; n* i8 m; \7 r
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址 ( 京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号 )

GMT+8, 2024-11-14 18:18 , Processed in 0.047415 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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