|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C语言程序资料和案例精解!; n# Y3 b: g1 y5 P; W
7 o/ e J \1 L% q【程序1】
` f* C6 e: ]% R/ G! G1 J3 b题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
! Z6 n- N! x+ Omain()
8 l' O% r- e4 V+ U{
]$ }: t R8 d- W9 w6 c0 Q4 Eint i,j,k;
9 l8 a! L7 V& Sprintf("\n");
% p7 I( W U, k, P7 b* Zfor(i=1;i<5;i++) /*以下为三重循环*/
% t# U# W' e6 b7 q for(j=1;j<5;j++) - G% F; V4 G" d
for (k=1;k<5;k++)
& G7 I7 Q- N, \5 D: L! i4 b {
/ T" j1 X! |' @! P if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/ m8 A" J [, ^' C) v3 b% C+ x" `, }
printf("%d,%d,%d\n",i,j,k); ! ]2 {+ j2 }& ]: d+ }1 V
}
" V: c: Z7 w4 ~, C. o8 `}
0 b, j8 z$ [- e==============================================================% _" K4 B; N9 F' q9 d: N% o
【程序2】
$ _( z' J# P2 f/ D2 ] L6 O题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
+ c9 L1 P% a3 h: o7 D4 Amain()
$ Q9 T) l& o' |% t) c/ t{ 2 f/ a6 J; a% I
long int i; v( f8 d% f( W: C. B, B+ n
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
- q9 T7 B7 U& W: {: Lscanf("%ld",&i); % N- `" h' {9 D- ~' y
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
8 l0 c# K/ q. Ubonus4=bonus2+200000*0.5; 5 ?- P4 @- U/ t" \! f- | A
bonus6=bonus4+200000*0.3; / N5 G1 J7 F. k! h7 T7 F2 L6 k
bonus10=bonus6+400000*0.15;
$ ^& J* V! B3 e& v, j if(i<=100000)
9 }3 Z( B* D$ f+ A' I" S+ b bonus=i*0.1;
2 V) t1 u% z7 i* y4 s5 P else if(i<=200000) U' |% r- d- E6 Q
bonus=bonus1+(i-100000)*0.075;
6 Z* k0 u: z: c" T; J X else if(i<=400000)
3 |, @. C2 {9 S! i" `" ^ H bonus=bonus2+(i-200000)*0.05;
# Y# \6 O5 j( b* g$ o else if(i<=600000)
0 I4 R9 t: \6 W. l! ?0 m: y bonus=bonus4+(i-400000)*0.03;
9 M: g# F% Y5 G, b8 q else if(i<=1000000) ( J4 ?% j1 W S) q4 E. W
bonus=bonus6+(i-600000)*0.015;
( ?8 N6 d5 x3 U: l else
/ ?' H/ ]# x- b2 U% Y% ~ bonus=bonus10+(i-1000000)*0.01;
5 c4 G1 a* h3 Q9 @) X$ e9 Hprintf("bonus=%d",bonus); w( n2 ]1 Z( j+ B: K) u
}
1 a8 z9 r, ^+ X==============================================================7 E7 b9 x" I2 C1 A
【程序3】 : w2 V; {6 y% h* Z% o$ {: m
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
) U5 _& Z n* L: U: a! r% H% f1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析:
7 l1 l* t1 _+ e- S7 j
|/ K) U# i# V4 B# Y3 t#include "math.h" - T9 y$ [6 C3 F+ {7 [ j6 u5 W9 y
main()
e- R, i% k( x2 I{
6 u3 Q7 C$ n' r7 ]long int i,x,y,z; i7 R" c2 }& e3 b" k+ b& D4 K
for (i=1;i<100000;i++) * \ O2 k% d s
{ x=sqrt(i+100); /*x为加上100后开方后的结果*/ 6 |' O# }, _4 V7 `9 [. F. U: ]
y=sqrt(i+268); /*y为再加上168后开方后的结果*/
, r2 n- ~. l; }& n m7 b p/ I if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/
3 A4 U/ J r7 F/ l1 d" d' ], R printf("\n%ld\n",i); 1 @, T' m9 b+ F3 d1 y% d) i* m
}
4 L1 {3 J5 ` B1 z1 `! u5 w, ?}
5 Y: X! f- M5 c- T# W9 J==============================================================; ?% [0 V, ]7 h5 P
【程序4】 - r+ P& z2 j+ r5 r$ S" M( q
题目:输入某年某月某日,判断这一天是这一年的第几天? ( Z0 n" G( s' D5 C
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
; |0 S$ s# E3 B6 x+ s6 Lmain()
' w# Z* Y' }1 ?{
* L/ E% `1 z" W" O5 Z2 b% ^int day,month,year,sum,leap; 8 k" B% q1 B# O1 D2 C& [
printf("\nplease input year,month,day\n");
3 [& o# @" \( K. d7 J( ?7 ?! \scanf("%d,%d,%d",&year,&month,&day); + a8 A0 |" u. i5 c! r# G' C t
switch(month)/*先计算某月以前月份的总天数*/ ( m9 J. z8 b% X$ K$ ~+ \8 E
{
- U7 @: a1 t" z5 O! O case 1:sum=0;break;
! J H# c* l. H* G" c, O& G case 2:sum=31;break;
! `4 A G: h7 w: d. U& o, G case 3:sum=59;break;
% U1 Z. q6 e2 t case 4:sum=90;break;
. u7 Y: ^* W4 w% b1 \" z; i# I F7 { case 5:sum=120;break; ( F8 \. a7 g0 T1 Q: Q
case 6:sum=151;break; 4 j5 b. @4 K$ c% X: Q$ d9 F4 @
case 7:sum=181;break; % t' Z% B2 d* S' o2 f% l: ~
case 8:sum=212;break;
6 p! z3 w5 r8 x) k case 9:sum=243;break;+ G, A2 E, O9 ]& w% n9 L
}
6 \3 q3 i9 r: n* w- V, c==============================================================
* Y1 X$ R- L- ?8 R/ k1 [6 A【程序5】
. x9 v' \$ @% N! V- I; v' P6 z题目:输入三个整数x,y,z,请把这三个数由小到大输出。
: M# w& @ |- e- w w" d G* ~1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 / ^5 q# v. f9 M1 [& H" B
main()
, Y$ s! z! @( i' _, |( i7 `{
( F+ m. G: c5 f9 qint x,y,z,t; $ y) E# ~; v8 u7 f& A+ V
scanf("%d%d%d",&x,&y,&z); 5 ~: j/ C C- o0 k
if (x>y) ; _1 u% A, X* m: h5 B
{t=x;x=y;y=t;} /*交换x,y的值*/ : {+ B! W1 k j5 g
if(x>z) 0 Y8 y, y% f) l8 Q6 O( X
{t=z;z=x;x=t;}/*交换x,z的值*/
& a8 a# j* J( B: y% i% A5 G- Wif(y>z) $ u8 ~& X! S/ w# w i9 y3 B
{t=y;y=z;z=t;}/*交换z,y的值*/ $ D7 ?( r7 O- \( m! }
printf("small to big: %d %d %d\n",x,y,z);
; |! [) F/ `! u" B7 n( d}
. w8 `, @' J( _* m9 v/ v
. w9 {- e, O w( ]: U0 z2 h( |/ @5 T( i" [! J' S+ h/ C
下载:+ T! @6 v5 o* f {: |; F% W
% z H9 y2 u! P* v; b# Z% |
" ^2 {6 d$ }$ a* H8 F |
|