【程序1】
% `* Q5 j/ C3 {6 z题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? " {- Z! B I5 V( L+ q, t
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 ) s* l. H8 G8 e- K4 O
掉不满足条件的排列。 ' o& {1 i! { k$ C3 X0 R: M- H3 [
2.程序源代码:
# V0 q( X! b6 T; V% C; `# Mmain() { - L* R3 t. O; ]+ f+ X- G; t
int i,j,k; 5 X; ]* h3 M+ x! V
printf("\n");
4 c& G/ ~& O( Sfor(i=1;i<5;i++) /*以下为三重循环*/
0 C0 |. a4 n N# {5 S- kfor(j=1;j<5;j++)
7 I5 h: V* K* {# X3 E1 @for (k=1;k<5;k++) { & }# J' G7 c! ]( H) u
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ ' f* U! {6 V ?0 |, a# f
printf("%d,%d,%d\n",i,j,k); }}
8 F+ M) e1 L: Q0 e8 d============================================================== : p4 Z* d6 k1 J& w' x0 Y$ {
【程序2】 * @( W) S% c9 I! w6 ?" v
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
, p5 @% `% o, T7 W于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 / J" _, J& Q+ @$ h0 `
成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
/ S! h j9 p0 a7 M& n3 W40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
9 Q9 s' P) f1 @5 K4 h. I! O" r100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 6 L1 B. _5 o8 i& z5 Q1 v
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 ) t. C$ J9 q1 a- m: m
2.程序源代码:
, `- C" l' t! u, T2 _main() {
8 v1 Z- z; p" l( Ilong int i; & _2 x% l. n' ^7 R" T
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; # v9 p! c8 Q5 Q8 s# I# C+ v0 q
scanf("%ld",&i);
. A3 N* u0 l2 E! `6 E( Rbonus1=100000*0.1;bonus2=bonus1+100000*0.75; ) J$ `! p2 y+ \& M2 s
bonus4=bonus2+200000*0.5;
; z0 V0 L9 C5 J! m) }% m! l$ P3 jbonus6=bonus4+200000*0.3; 4 w9 T, ~1 M9 @! y& Z9 q
bonus10=bonus6+400000*0.15;
; b/ N' N, i8 ]+ i7 l! ~if(i<=100000) 5 ?/ b& H; ?* d- A) i
bonus=i*0.1;
5 o1 P5 u$ G; [: _8 N3 Nelse if(i<=200000)
$ U% N/ y1 b1 ibonus=bonus1+(i-100000)*0.075;
1 s% h3 s6 \" _" \/ `7 Ielse if(i<=400000)
: Q# }( ?" g: ?6 H8 T' f4 rbonus=bonus2+(i-200000)*0.05; . S& C1 _1 V% c; N5 Q
else if(i<=600000)
* a! Q* E3 W* {# n0 dbonus=bonus4+(i-400000)*0.03; # M, B2 E; i8 w1 G0 D1 C
else if(i<=1000000)
, V5 S( |! ?4 k* N1 T! Mbonus=bonus6+(i-600000)*0.015; : A; _* d% `+ C2 K
else
9 y# o: T& q. q/ y, U8 qbonus=bonus10+(i-1000000)*0.01; 1 K: W" `& k% p
printf("bonus=%d",bonus); }
6 p6 n! R/ G4 H+ Y" T==============================================================
( e2 F8 P8 ^* M【程序3】 ; u6 w& J. I1 F4 T0 h4 q) s
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
/ H+ i8 j7 h6 n3 _6 B9 \! a% Y1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
! K- y! Z( b; t/ i) ]1 n5 F的结果满足如下条件,即是结果。请看具体分析:
6 S& V- y( _+ s/ E2.程序源代码:
d g; c+ I$ ]1 G6 J#include "math.h" 0 @7 |' Q- O( W+ o$ y& h
main() {
6 t# L8 {/ H( b! x p. A# D- O; ulong int i,x,y,z;
1 V3 U- U5 B/ Z; Nfor (i=1;i<100000;i++) - z# S3 s) Q- t3 u
{ x=sqrt(i+100); /*x为加上100后开方后的结果*/
7 y# x, |, X9 V6 A! R. e: {y=sqrt(i+268); /*y为再加上168后开方后的结果*/
9 G, u2 @% H' H* z" v w, }& e* _4 Sif(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
w7 P) r* }3 y2 M/ Cprintf("\n%ld\n",i); } }
4 Y, {2 g* }3 x==============================================================
$ W* y' B1 t0 r: S8 U0 P& E: ^【程序4】 , b) W! y$ b+ O& j/ }% S
题目:输入某年某月某日,判断这一天是这一年的第几天? 8 F7 v6 A) B, u: B* M
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 & {/ [/ `) b! b0 z
情况,闰年且输入月份大于3时需考虑多加一天。 $ T) K+ ]( u, T( P
2.程序源代码:
: N' f, Z( K4 E) _/ j/ K5 r1 Hmain() { $ m- W& F9 T$ `. u3 B; Z; e
int day,month,year,sum,leap;
* u: E# l& R4 c4 Cprintf("\nplease input year,month,day\n"); 7 f% c- p* ]9 _5 T5 Z
scanf("%d,%d,%d",&year,&month,&day);
0 ^1 s/ W5 X1 e2 h: A5 V- O( nswitch(month)/*先计算某月以前月份的总天数*/ { case 1:sum=0;break; $ t8 u/ ]; U3 N" h! C5 a
case 2:sum=31;break; ; E/ A2 M- K$ I# q# D6 m! I3 W3 t
case 3:sum=59;break;
2 b* f: V* d6 @ ?+ |" Ycase 4:sum=90;break; 1 h, a8 k' g7 \/ ?3 X# {
case 5:sum=120;break;
5 ~+ T e# P T: \! y( ]# F4 J9 R* Ycase 6:sum=151;break;
) S7 G2 q+ w; q6 L1 T+ scase 7:sum=181;break; 6 b2 M: w! R( Z1 W: V
case 8:sum=212;break;
4 e1 y6 ^7 i2 ?: R) |+ `case 9:sum=243;break;
! Z- S$ M& _ Z' n! q* R( Ecase 10:sum=273;break;
# B1 \' [7 Y6 j. y7 b hcase 11:sum=304;break; }! Y/ A7 }, O# o, W6 V
case 12:sum=334;break;
" k/ F! L/ Z% z& O! } Gdefault:printf("data error");break; } : e. @0 F- C: h2 Z; U! z
sum=sum+day; /*再加上某天的天数*/
2 H2 [8 t$ O8 K7 K! {if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/
) I7 Q1 I- \1 s4 Xleap=1;
) n" C. Y9 V$ w$ Eelse
0 T S; t8 ^6 O& jleap=0;
( L) B7 A# v0 X: _" \if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ % x4 q0 |) w0 b( c/ B# y
sum++;
8 V7 j% u& F+ t' yprintf("It is the %dth day.",sum);} 8 G8 P5 Q* p8 X, z' i$ l$ M# x
==============================================================
/ n% _% Y$ J" V& J" ?6 [【程序5】 ( g5 t' _. x, [. |4 g
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
7 ^5 Y h% L& p) C- x1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
! c" s- x% B( g3 Y. b+ Y% |然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 . P8 H4 H- F' Y
2.程序源代码:
* }# ]: D+ R! ?; G; l3 emain() { 7 m6 u- W4 @* Z- D' W
int x,y,z,t;
2 \9 J% g7 f& _5 zscanf("%d%d%d",&x,&y,&z);
2 @5 a8 }* \/ d7 O7 iif (x>y) 1 G' x, R" i; @8 r8 l" q& t2 T3 C
{t=x;x=y;y=t;} /*交换x,y的值*/
6 Y* L" l, k0 m' a9 _- Lif(x>z) 2 ~* z% S- ?* I' x
{t=z;z=x;x=t;}/*交换x,z的值*/ 7 m @# m" I+ s* a2 v0 I5 T& P+ R4 s
if(y>z)
' U% \1 j$ N- e. l. w{t=y;y=z;z=t;}/*交换z,y的值*/ ( z; Q. m; E* g( F! h
printf("small to big: %d %d %d\n",x,y,z); } ! q: L3 Z: X$ v
==============================================================
8 y r5 t: w1 A* [- }: Z, M5 F【程序6】 , Q- S& p/ J: [
题目:用*号输出字母C的图案。 3 X( H1 C" g2 p' e& W
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
0 ]1 n+ P* h! k: b4 q' F2.程序源代码: 1 k8 n3 C3 G% f/ ~
#include "stdio.h"
7 ~4 P9 w! e* o) R% }# F! x5 Q5 k) Mmain() { , W, f' g6 f; v9 |' B) M! L
printf("Hello C-world!\n");
8 {% D) n* t: tprintf(" ****\n"); , |6 [9 j; \/ y( ]/ r9 x3 o
printf(" *\n");
: b+ l5 v* v" Q1 Wprintf(" * \n");
4 V4 U, j/ h# y2 Q7 fprintf(" ****\n"); } 5 j, Z* p" O. k" }5 G
==============================================================
0 E# s% N1 v% E5 B) m& ]# G8 x/ b! z0 U【程序7】
9 U6 w' s u$ X$ p5 M题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
3 g g" z: e% x6 x1.程序分析:字符共有256个。不同字符,图形不一样。 1 n6 |! ]& I1 a0 W# d; k: K$ n3 E
2.程序源代码:
" Q1 D i1 e" E# B% K8 U#include "stdio.h"
# T7 f: [# R/ Y) dmain()
t% r7 y3 t5 O7 W& v! R9 {0 G{ # G* \8 G+ ]" J* f, M8 L2 c" L
char a=176,b=219; ) u8 u# W/ A7 Q f! E0 w
printf("%c%c%c%c%c\n",b,a,a,a,b);
! a% Q7 M2 O0 N, Yprintf("%c%c%c%c%c\n",a,b,a,b,a);
( z0 e- g. v2 mprintf("%c%c%c%c%c\n",a,a,b,a,a); . e3 B* T& V% V
printf("%c%c%c%c%c\n",a,b,a,b,a);
9 k# n* m0 ~% H3 @$ o+ p! ^printf("%c%c%c%c%c\n",b,a,a,a,b);} " c; H* V: c9 x; q% T m
==============================================================
& p5 T' ^( z/ |& F: l5 K【程序8】 ' Q# [8 s/ a/ i/ Y- B, n9 l* @* ?
题目:输出9*9口诀。 : w) t' h o% K* q; ~) n8 I: A
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 . @/ k% o7 r) \. r
2.程序源代码: . p1 t2 H+ D6 _6 l( ]) a- W
#include "stdio.h" % u; t; }: M* y C) U6 h: v
main()
, N- H7 |- ^- J/ _ I4 `' ?) U3 A{ + H5 _8 {! M, e
int i,j,result; " {/ L. O2 N9 D3 y1 |
printf("\n"); 6 ~, Z6 [: n8 G+ e, |4 e2 B
for (i=1;i<10;i++)
/ f! J6 r( B+ \( J& a& T{ for(j=1;j<10;j++)
8 F9 ^4 c% k- y$ {3 ^{
1 m$ Z) R: ^2 L0 X2 c7 S; o8 y5 Fresult=i*j;
3 w1 l1 t3 F+ ^6 Nprintf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
( O5 Y* g3 d; Y" O} " a0 d2 [0 t* l( Q& ]/ t
printf("\n");/*每一行后换行*/
" ?9 F) Q- |! G- b! }- A6 ~. O}
! l/ N$ P6 v" S' O# p" |) L}
" Z6 \* b; N& M===============================================
1 e* }8 g7 |3 k: {9 i/ D |