找回密码
 注册
关于网站域名变更的通知
查看: 482|回复: 1
打印 上一主题 下一主题

C语言程序资料和案例精解!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-23 13:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
C语言程序资料和案例精解!
9 u$ k! V! L' K0 J' Y* ~; S! L# H* J& p5 H  n! H( j% Z2 D" S% v
【程序1】 . A5 K' K2 F" ]& ~2 J- C% y
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去      掉不满足条件的排列。  
! M+ e( ]0 V  }main() 3 T" t: D1 Y8 W
{
  A1 X  X7 D1 r* ?int i,j,k; & [0 h) \$ `( @  V, r3 g; i- A
printf("\n"); $ \$ _* E- W2 I3 [, U- M
for(i=1;i<5;i++)    /*以下为三重循环*/
5 A% K) v( m; _/ x: \. S5 S- c; ] for(j=1;j<5;j++) 
7 ~; Y/ b" |; n' }5 U, b  for (k=1;k<5;k++) / U# D3 t+ F& N
   {
  Y& o: G( M: T9 X! ?4 H    if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/
9 K3 }( B) H7 V4 o4 N    printf("%d,%d,%d\n",i,j,k); ' d. d7 d+ F. |6 h  V7 Q
   } ) W- ^8 W" ~& [9 h8 m/ I6 I
}
% a" {$ V6 k& k==============================================================8 f, S' w! c# N" ?
【程序2】 . o1 |$ z# ^* o% S  `$ R
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?, d8 m& F( v; X
main() - X2 x% y8 {2 j5 y
{
) f4 j& A8 ?8 T: z7 Along int i;
: @. J2 ^7 d+ h" Z( @int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
( _1 e: X, \* V, ~# gscanf("%ld",&i); 9 F# r) t+ C4 H/ c. u$ T
bonus1=100000*0.1;bonus2=bonus1+100000*0.75; & E; f* n+ ?) N; C; k3 A  Y8 ?
bonus4=bonus2+200000*0.5; 2 N2 q( J8 |3 q& g2 M: Y
bonus6=bonus4+200000*0.3; 6 z1 r/ b+ G# S) ^* d! C& X) u  _$ E
bonus10=bonus6+400000*0.15;
4 \6 i" f9 j* d! D& p9 H if(i<=100000)
, ^9 m6 s& B/ g+ i6 _1 x/ S  bonus=i*0.1;
2 N, l. _$ A$ H: a5 k else if(i<=200000)
+ v3 P: U" O2 i6 i0 S6 i     bonus=bonus1+(i-100000)*0.075;
4 T7 p. v9 n2 X) x6 g+ ~) p2 N    else if(i<=400000)
' O. g' H5 w7 O3 m        bonus=bonus2+(i-200000)*0.05;
8 }  K" ~" F4 K& L0 |: w. j       else if(i<=600000)
$ C8 U4 k& d1 Q           bonus=bonus4+(i-400000)*0.03;
  ^0 [5 p- y+ u& A2 o          else if(i<=1000000)
2 d9 F9 {" ]! }$ X" u, z+ }+ G: R              bonus=bonus6+(i-600000)*0.015;
* \/ x8 ]& I2 {& t             else 2 ?; s9 J- a3 X
              bonus=bonus10+(i-1000000)*0.01;
" }$ u6 D4 t. Jprintf("bonus=%d",bonus); 9 s7 A) p8 C! O4 p- ^7 m7 ^9 _! n
} 6 B$ x/ P" J) Q
==============================================================( w* _! P9 i% j6 I5 `
【程序3】 ' `: j  d/ _# `4 ], E. z  n
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 1 j/ g2 h) P1 g! F* X9 l
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析: ; D7 P0 n/ T: X
+ s- N8 D* H0 Z" }, d
#include "math.h"
( w1 m% `" M9 B5 Amain()
3 Q' n$ ~0 R4 ~2 G3 W{
! d  E5 v& ~  W* q2 Z; P, `+ Y' ]long int i,x,y,z; + s0 c7 V: r, t$ ^5 f
for (i=1;i<100000;i++) $ p2 A) F; Z8 m% O  x1 `  l
 { x=sqrt(i+100);   /*x为加上100后开方后的结果*/
) D- K" P7 O# `1 l2 X  y=sqrt(i+268);   /*y为再加上168后开方后的结果*/ ; Z; b: b& K' }! q- C
   if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/ 7 f/ N* d* F! f1 P9 h9 V- G: j9 l
    printf("\n%ld\n",i);
4 v$ p' I0 J: H  t, C. B }
( H( t7 E8 o2 z0 `8 k}, T- A% B! @: G$ O7 d% q. y
==============================================================
3 @* v: Y$ O, F7 S【程序4】 - ~& r; \: ?' T% ]% v
题目:输入某年某月某日,判断这一天是这一年的第几天?
. y( k' X* S; x: \0 h" ~1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。 / M( \, K( r6 w
main() 7 n- O- ?. y, c. I
{
/ _5 H/ b* U# a/ Y0 t' Z( A2 `int day,month,year,sum,leap; & a% N1 t+ |: j' c
printf("\nplease input year,month,day\n");
) I; L9 P+ X* G1 f5 B( y' a* D, Uscanf("%d,%d,%d",&year,&month,&day); + W1 `- E" z% K4 h$ f
switch(month)/*先计算某月以前月份的总天数*/
% L5 q+ E6 D( J{ + g; {4 V+ q1 A' L
 case 1:sum=0;break;
" Y9 B. X5 A( l- V; ^, |* s case 2:sum=31;break;
2 n3 j% M" |8 @0 Y2 A case 3:sum=59;break; ! j$ M2 u$ s+ R4 t. ?# L! f4 F, X& P
 case 4:sum=90;break; $ h. v" Z  M3 x2 w; q  q
 case 5:sum=120;break;
) H. K1 T5 A" F$ Z( Y case 6:sum=151;break; & J) Q" ?/ W% T+ k
 case 7:sum=181;break;
. F8 n3 A% M. c: Y( L$ a" M case 8:sum=212;break; 1 C# ?3 u5 g( @8 Z& A/ ?. S
 case 9:sum=243;break;! g" e4 R% c2 e! x& z" l
}5 s! N% j8 m- G
==============================================================
4 b2 H9 `" r2 _【程序5】 ) A) s4 R$ W8 S4 Z
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
  ~: M9 s0 `* U5 P1 h$ ?8 h1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
9 l: x/ W8 L7 @main() ! F! V: t2 c5 X4 r
{
% ?# L2 W: l$ G' h/ w  Qint x,y,z,t;
: v5 h, C$ o, d$ m6 \8 y8 Lscanf("%d%d%d",&x,&y,&z);
2 m$ @9 A9 J: o9 `if (x>y)
) h3 k0 E8 Z0 j$ ^; @* m{t=x;x=y;y=t;} /*交换x,y的值*/
' x- h( l" [% Y7 g" y  ?  J3 Jif(x>z) 6 S- |0 W& s! J" [  z3 O& d
{t=z;z=x;x=t;}/*交换x,z的值*/
* C  \2 C) T* i0 b$ aif(y>z) * B, s" \, L$ J( Y0 n
{t=y;y=z;z=t;}/*交换z,y的值*/ 7 g% d5 z9 M8 m, Y$ E
printf("small to big: %d %d %d\n",x,y,z);
5 n: Y' H) ~( r' I! T6 O! S}

) |6 h9 e1 M# \8 i
5 K' l  s% L, p( C: Z) m+ b  v
- r+ a) W5 t/ U0 b# J下载:% F( W+ Q9 a) }& M
游客,如果您要查看本帖隐藏内容请回复
. g# z/ B& r& R& p/ `
6 W  W9 M( ^8 m4 K4 L! v! v

该用户从未签到

2#
发表于 2019-1-23 15:29 | 只看该作者
这个不错,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 01:56 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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