找回密码
 注册
查看: 472|回复: 1
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
C语言程序资料和案例精解!0 b1 k3 f1 I: |3 D
( k+ M0 Q6 D) J1 _
【程序1】
0 G, P6 U+ a: D- d* C( ~- U题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去      掉不满足条件的排列。  
- l  k: F5 ^; h; E! P  Gmain() ! l0 u  ~# m& r5 v+ w9 G$ @
{
$ w; e7 T9 y% M3 I3 eint i,j,k; : V' h, ^% d  T, c1 }
printf("\n");
1 Y( k1 |3 E: l, j+ C2 }for(i=1;i<5;i++)    /*以下为三重循环*/ 7 a' ]( D3 U8 e9 b% E2 F; f
 for(j=1;j<5;j++) 
4 q* _4 }: t& I- x% g) M  for (k=1;k<5;k++)
  ~# j4 E6 N; {" A! `   {
/ B* b/ k! T# j0 z  h% k3 T    if (i!=k&&i!=j&&j!=k)    /*确保i、j、k三位互不相同*/
$ f5 h* v2 z/ Y  h    printf("%d,%d,%d\n",i,j,k); & X9 m6 M# ]! N# }& S9 o% Q0 v
   } 3 O1 ^  K( G9 o8 L8 q
}
0 ^7 b  S( D7 |==============================================================
- v8 u$ ^' ^) A) f" Y4 x【程序2】 # h1 K0 N' P6 [3 B
题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?/ s, v6 s6 S9 A; E# Y/ t
main() + M: T3 S: Q+ r8 N# E
{ + T- N' Z7 b; U# |1 Q' |
long int i;
& D$ D1 W' a0 C% Dint bonus1,bonus2,bonus4,bonus6,bonus10,bonus; / G3 K/ j' ~8 `: M4 s6 Y4 \
scanf("%ld",&i);
" ]3 b4 a3 T4 v: ^bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
# {, O5 r: T, O0 B7 y. E) wbonus4=bonus2+200000*0.5; $ ~3 s* o' d5 l, {6 {! J* n
bonus6=bonus4+200000*0.3;
" e+ e- @' u2 p3 l) \+ rbonus10=bonus6+400000*0.15; , ]* R: Z3 f/ J8 q# o
 if(i<=100000)
  A' C4 f9 A1 I8 l  bonus=i*0.1;
, w+ w- k1 i! P; s' b else if(i<=200000)
' S. s( A0 T& q( ]7 T6 s     bonus=bonus1+(i-100000)*0.075;
3 z+ }) E. f  A8 ?. @# k8 H# O# j    else if(i<=400000) ) e9 L* G' S: a- d4 A5 M, Q
        bonus=bonus2+(i-200000)*0.05; 3 Z  k0 u# {" t8 o* b
       else if(i<=600000) + K  l, Z3 n+ D( i
           bonus=bonus4+(i-400000)*0.03; / M" y( a! m/ U8 I1 T
          else if(i<=1000000) & z8 x7 j" f% u$ [
              bonus=bonus6+(i-600000)*0.015;
" L0 W8 Z% b: q             else 6 J+ \7 O# s8 b3 G& o2 b) }
              bonus=bonus10+(i-1000000)*0.01; , A3 V4 [5 {. L: \
printf("bonus=%d",bonus); * n0 C; Y: n' q
} 7 Q  g# Y8 |/ X8 [  H* f* n
==============================================================& Y5 m3 D( b7 h6 \+ Q5 _9 n8 T
【程序3】 1 k& t, `, f( l4 J
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? ! K, e* E' F- K6 l& f: A+ z8 o/ r5 T
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。请看具体分析: 5 V( n4 O& {0 b! v

5 v2 X& _( h, q0 b2 M6 p( P1 B#include "math.h"
$ k/ z; U4 w+ A7 I( \: {main() 1 j8 }. M# |- u
{
; l. ?+ e  g5 [+ {long int i,x,y,z;   o6 h2 G/ }' m/ }& l
for (i=1;i<100000;i++) 6 q6 @3 ^. X5 m! }5 M5 |
 { x=sqrt(i+100);   /*x为加上100后开方后的结果*/
. w3 U5 D0 @% [) F, T# @( ]3 b  y=sqrt(i+268);   /*y为再加上168后开方后的结果*/ + K, @' O& Z1 \( x4 }$ N
   if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/   N2 f$ J6 J9 q. A+ I
    printf("\n%ld\n",i); . e8 Q0 R5 d* Z2 T6 r# s5 _
 } ! ^7 Y+ C, x3 K, C- o
}3 n- X3 Z/ `0 ~) P8 |/ A5 e3 Q
==============================================================' @1 G: S) s1 j4 C
【程序4】
& j$ L, W8 B/ [- @* k+ m% `题目:输入某年某月某日,判断这一天是这一年的第几天? ; L8 M9 a; D5 ^/ s8 ~3 M: z
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。
* `: Q; f4 y( T1 B2 M& cmain() " ^2 @+ v  ^& o" \* t- |+ R. j3 m9 ]
{
' M, Z  z/ j9 v$ V7 a* z( {  xint day,month,year,sum,leap;
$ Q1 }3 F1 H7 j: Z7 Z1 q2 mprintf("\nplease input year,month,day\n"); + j$ w9 N8 m% D  Q
scanf("%d,%d,%d",&year,&month,&day);
- X( }1 q9 [% Rswitch(month)/*先计算某月以前月份的总天数*/
6 \: B1 H* H9 l1 f{
$ \7 w1 b+ d7 z$ {- q$ @" v/ C case 1:sum=0;break;
) q( I9 ^5 A3 Z" } case 2:sum=31;break; 8 P# j7 m/ t2 Q( L3 \
 case 3:sum=59;break;
) j" J% z* h2 N1 K case 4:sum=90;break;
8 _; |- [/ b( [: f  d# L9 l: b case 5:sum=120;break; . C+ l0 |! I3 @
 case 6:sum=151;break;
8 [2 `# W& I, O: R, H case 7:sum=181;break;
! b2 m: F! v5 r0 [2 Q" r! [$ f case 8:sum=212;break;
, R: M; `* h" p, Y( I# W7 r case 9:sum=243;break;) O' h: a+ o* z( s2 v: U4 w2 J5 `5 G
}! i9 G* g, s3 X8 y1 _. x4 ^
==============================================================7 ^5 Z8 h, @/ o
【程序5】 7 a+ C9 H4 E( ^
题目:输入三个整数x,y,z,请把这三个数由小到大输出。 $ }4 {/ m+ R6 b8 y- o! y  A
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
, d& R) ?# v/ X9 s5 y- r1 emain() , c8 g- L! o# d
{
# W" }; e$ [# ^1 z% R. C4 \int x,y,z,t;
+ @# i1 b4 w6 l! @/ `* pscanf("%d%d%d",&x,&y,&z);   Z7 {& I' ?1 e/ U6 L9 L
if (x>y) 8 n3 `; U7 v+ v8 u5 U
{t=x;x=y;y=t;} /*交换x,y的值*/
6 {: U. g$ |/ wif(x>z) - f3 u0 X1 Q. Y3 a
{t=z;z=x;x=t;}/*交换x,z的值*/ 7 U  L: ?7 ]' V3 [0 u
if(y>z)
8 j8 l  G; J* O) }  H- ~{t=y;y=z;z=t;}/*交换z,y的值*/ , O, Y! Q% C% b4 J7 o4 W6 `. H
printf("small to big: %d %d %d\n",x,y,z);
5 C8 F: V& @: P3 k}

% x3 e% A- p. |9 {3 O, v5 A" j" ^6 ?8 S

3 u/ @" }" R3 H下载:$ y7 J+ }- e8 v6 l( P; V% `, D
游客,如果您要查看本帖隐藏内容请回复
& `0 P5 U- R! X% x/ v

7 Z, q6 e3 J9 N; h  [9 x! ~

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-5-29 06:41 , Processed in 0.078125 second(s), 26 queries , Gzip On.

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

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

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