事先声明:
) K9 e- w8 R3 u+ V此100例非本人杰作,是本人收集来的!
【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?# U9 T, ~7 m+ J; x% c( z6 J 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去4 Q5 K5 [; ^* f 掉不满足条件的排列。 2.程序源代码:- X0 M1 g+ k2 ^$ ] main(), x! q5 i% G J, r: E4 m {3 e. ~) {/ u l9 i, ^' O. G: g) r int i,j,k;' ?' n1 g- V0 C5 r. m$ J* R1 A printf("\n"); for(i=1;i<5;i++) /*以下为三重循环*/ for(j=1;j<5;j++) ) ]: g& j: L2 Y! m/ ]7 N- [ for (k=1;k<5;k++) { if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/+ \* ]' B7 B* L9 H. R2 M, ^( z5 M printf("%d,%d,%d\n",i,j,k);* f8 W. w1 B9 u5 j8 U } } ============================================================== 【程序2】! ?3 V! t: U3 Q; M 题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 t1 Z+ z+ c+ B; S, M$ u 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提" z7 O4 V# K& G U 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。 2.程序源代码:- H( Z. u% x, x; j8 V main() { X6 `& M+ O) t4 G* D: X long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;, S. o+ n4 R1 Y5 L& o scanf("%ld",&i);& R/ P$ ^2 w2 X% |' J- s! V bonus1=100000*0.1;bonus2=bonus1+100000*0.75; bonus4=bonus2+200000*0.5; bonus6=bonus4+200000*0.3;, Q6 D0 W' B# S; Y bonus10=bonus6+400000*0.15; if(i<=100000)# {# b6 _, z0 m. K$ S bonus=i*0.1; else if(i<=200000): H7 c( k& A% V- r8 d( t& G bonus=bonus1+(i-100000)*0.075; else if(i<=400000)! U0 B# t6 [5 g! J' R1 U/ } bonus=bonus2+(i-200000)*0.05; else if(i<=600000) bonus=bonus4+(i-400000)*0.03;& @, m/ S5 c' C7 R else if(i<=1000000) bonus=bonus6+(i-600000)*0.015;5 E" M. N: H/ ~2 f) E& L else bonus=bonus10+(i-1000000)*0.01;2 z3 W3 |1 X3 l% E- n printf("bonus=%d",bonus); } % x" d" _! t8 i3 t; Q ==============================================================; |3 C1 a" \) N 【程序3】/ N# v% ~" [) V& y0 t0 k% s 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?3 T. f, W+ E9 s/ M4 u8 V 1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。请看具体分析: 2.程序源代码:) @7 b- e' t' F5 t7 _ #include "math.h"1 w1 w8 J& i* J; J9 y% r! K main() {3 k9 X# a0 `" a1 i1 o, _' G long int i,x,y,z; for (i=1;i<100000;i++), l- p+ c5 \$ ~6 ]* G { x=sqrt(i+100); /*x为加上100后开方后的结果*/ y=sqrt(i+268); /*y为再加上168后开方后的结果*/) i! i! Q. `3 z" E: {+ |' D P if(x*x==i+100&&y*y==i+268)/*如果一个数的平方根的平方等于该数,这说明此数是完全平方数*/# E, Q, [1 |5 r8 _2 P/ L6 D* J printf("\n%ld\n",i);8 i0 k" {# {9 h- s3 o3 P } }% M; [& {1 Q% v. \5 ]& x8 B ==============================================================- U/ z0 b' ~1 x/ l 【程序4】* e; U- h0 H, W1 u5 p 题目:输入某年某月某日,判断这一天是这一年的第几天? 1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊 情况,闰年且输入月份大于3时需考虑多加一天。% h# c" s; W# b/ M" ^% }/ g 2.程序源代码:& y9 B& l# M% O; C2 a& z$ @ main()7 m3 F! |- I( e4 L; ^2 l v { int day,month,year,sum,leap;/ y* \ v& j9 j" }9 j- T9 J printf("\nplease input year,month,day\n");1 O! p' o! ?. A( V6 [, Y scanf("%d,%d,%d",&year,&month,&day);1 F- W( X4 z0 z- c+ s) w! K" P: H switch(month)/*先计算某月以前月份的总天数*/8 ^( n. A5 |0 r3 d& l5 l( J; ~ {* e f" ~) o* f. |2 N case 1:sum=0;break;% N' a% [3 e6 I5 W! P/ s4 k case 2:sum=31;break;1 `* F, G w7 a; A! h; e case 3:sum=59;break;- W7 V9 O2 M2 l- _4 H0 j3 F4 l case 4:sum=90;break; case 5:sum=120;break;5 I2 Q5 S% y: g6 \ case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break;5 i3 i" ]: w) m" ?* R case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break;& J( _ F, ~1 k" ? g3 Y# R B7 a } sum=sum+day; /*再加上某天的天数*/. z! F d+ W( @! o9 m if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/: S, t6 C5 P4 n$ s, o& n) u. Y leap=1; else leap=0; if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++; g& @# Y9 ~" W printf("It is the %dth day.",sum);}" P0 G$ ^+ |+ p+ L, N6 l$ H; h ============================================================== 【程序5】 题目:输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,& I. Z8 v; K& b 然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。, G4 p. n7 E0 H( R5 `# ] ] 2.程序源代码: main() w+ Z7 @: j" U6 Y6 E/ N3 G { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); W% R6 P) q8 I3 m: z if (x>y)# m% y Z B6 I' Y% i) i {t=x;x=y;y=t;} /*交换x,y的值*/8 K4 Y. h0 O# p5 `* ]8 z# @ if(x>z)% Q# G6 O) g$ F5 s1 @' Y7 u' W3 G {t=z;z=x;x=t;}/*交换x,z的值*/7 E0 N( w- W+ S B! B if(y>z) {t=y;y=z;z=t;}/*交换z,y的值*/ printf("small to big: %d %d %d\n",x,y,z);9 m/ I7 y$ v# n5 n0 s } ============================================================== 【程序6】. l; J2 L; B* A2 X( K! n7 O 题目:用*号输出字母C的图案。 1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。 2.程序源代码:( Y, z# V) f2 _ #include "stdio.h"9 P. h- T5 T8 `+ J main()1 I5 z5 A& P- P* i/ r; t, K {1 U6 W4 t9 v) T- ] printf("Hello C-world!\n");8 C) L) c4 v9 ~/ S" |% B' E printf(" ****\n"); printf(" *\n"); printf(" * \n");6 p# F1 E! t2 u printf(" ****\n");' u# I, ]& H- R7 C } ==============================================================2 ^: _' e) p+ O3 R1 Q 【程序7】 题目:输出特殊图案,请在c环境中运行,看一看,Very Beautiful! i8 ]) `2 z5 o0 O6 R5 N6 w 1.程序分析:字符共有256个。不同字符,图形不一样。 2.程序源代码:7 b8 Q: X$ B- p6 f! }+ f #include "stdio.h"0 |1 k$ y3 {; x" Z# C main()5 _8 J4 s6 U! N* X/ K {% {( p) M# q" R& X char a=176,b=219; printf("%c%c%c%c%c\n",b,a,a,a,b); printf("%c%c%c%c%c\n",a,b,a,b,a);6 m- b, J6 L: J7 R: K; a printf("%c%c%c%c%c\n",a,a,b,a,a); printf("%c%c%c%c%c\n",a,b,a,b,a); printf("%c%c%c%c%c\n",b,a,a,a,b);}8 n) g/ A8 X8 @ ============================================================== 【程序8】" Q. _7 C" w+ @ 题目:输出9*9口诀。! Y$ ?: x0 F& L+ a5 Z: p 1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 2.程序源代码: #include "stdio.h"& Q+ N7 [5 |0 B8 C8 _) u3 m% x } O" [ main() { int i,j,result; printf("\n"); for (i=1;i<10;i++) p/ M) @3 V$ O' o" ? z6 n { for(j=1;j<10;j++)8 C9 p! r4 }* o s6 t' T+ J { l' [* Z: M4 T0 V result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/! }& f5 E9 t0 C5 a- f& ` } printf("\n");/*每一行后换行*/7 @$ X9 K+ D0 ]+ A% z } } ==============================================================: s# a* @0 o, c! }6 f" H 【程序9】 题目:要求输出国际象棋棋盘。 1.程序分析:用i控制行,j来控制列,根据i+j的和的变化来控制输出黑方格,还是白方格。 2.程序源代码: #include "stdio.h" main() { int i,j; for(i=0;i<8;i++) {' [: U3 I- O! D4 a- J for(j=0;j<8;j++)& ?( O2 D/ d9 {" A if((i+j)%2==0) printf("%c%c",219,219);3 i) L+ \1 e- ^$ _( F) [( b& Z8 ] else printf(" ");/ Y4 H3 b- U) C0 w( q2 e6 J2 c+ {" k printf("\n"); }5 x! K1 a, ~ ?% l* i }) U, x. T' K3 z+ W( [7 w* r ============================================================== 【程序10】 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 1.程序分析:用i控制行,j来控制列,j根据i的变化来控制输出黑方格的个数。 2.程序源代码: #include "stdio.h" main() {4 E3 b7 N" q7 C& ^% F int i,j;9 ^. D# M% ?1 Y' X$ z, y printf("\1\1\n");/*输出两个笑脸*/, b: M( k5 N N6 q, E for(i=1;i<11;i++) { for(j=1;j<=i;j++)+ C: [+ s' Y+ ` printf("%c%c",219,219);0 P0 g5 l1 N8 a" \$ N printf("\n"); } }
【程序51】 题目:学习使用按位与 & 。 1.程序分析:0&0=0; 0&1=0; 1&0=0; 1&1=1 2.程序源代码:: v! K9 c: k) j& Y$ g #include "stdio.h" main()3 W( V4 I5 E8 g9 T3 V" F$ r- W {. t% G0 _& {: V int a,b;1 [! L2 K% m& R |$ J# ] a=077; b=a&3; printf("\40: The a & b(decimal) is %d \n",b);" ?3 y& ?* p6 o b&=7; printf("\40: The a & b(decimal) is %d \n",b);5 |/ \& k. |/ z3 X+ q. t* v* l }) l$ Q. [+ o5 u( u# u- b0 u ==============================================================9 I9 m8 `3 C1 G! R2 q 【程序52】 题目:学习使用按位或 | 。+ r1 R- @: Z4 @- r 1.程序分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 2.程序源代码:. |# z( U, \+ d5 u6 v #include "stdio.h" main() {' \, S* A1 z/ G4 n! t) W int a,b;3 w% _* H. i& V a=077; b=a|3;! c- A" r/ T c printf("\40: The a & b(decimal) is %d \n",b); b|=7;, }: A. {7 C2 _ printf("\40: The a & b(decimal) is %d \n",b);: {! H" K2 s" p$ M } ============================================================== 【程序53】/ I" c* q6 @# n* \: d8 x& u 题目:学习使用按位异或 ^ 。 . t; W/ H9 o6 o3 D 1.程序分析:0^0=0; 0^1=1; 1^0=1; 1^1=0% N2 `9 ?% z( F/ L* W( \ 2.程序源代码:9 \3 u8 C1 Q- X; O: [( T #include "stdio.h"& Q, C: _( n" } main()! Y4 ~% `$ h' x% x( o# a! }: v; E { int a,b;- @- E5 _' Y$ l: g1 T& p, l a=077; b=a^3; G2 w3 M. h# W! Q# c printf("\40: The a & b(decimal) is %d \n",b); b^=7;; c% }8 e) O; k2 H( U. _* K, [1 q printf("\40: The a & b(decimal) is %d \n",b); } ============================================================== 【程序54】- k+ C" b. z# F" D: w4 T 题目:取一个整数a从右端开始的4~7位。* v8 i$ ]: y) X; M 程序分析:可以这样考虑: 1 v8 \- H" p9 W1 Q u (1)先使a右移4位。 (2)设置一个低4位全为1,其余全为0的数。可用~(~0<<4)% g0 r, i3 v! s (3)将上面二者进行&运算。 2.程序源代码:* q7 u- c. i9 F3 T/ U5 U+ V# m main()" u5 S8 I+ }6 M8 k$ ?1 ` { unsigned a,b,c,d;7 b1 b* Q2 V9 @/ x# _; J scanf("%o",&a); b=a>>4; c=~(~0<<4);: c1 [/ e" C% d8 f3 a: K- K d=b&c; printf("%o\n%o\n",a,d);$ e$ [+ W- o' ` }6 z6 T9 ]$ d' b. i ==============================================================8 ~& i& {! J9 e" f 【程序55】 题目:学习使用按位取反~。 1.程序分析:~0=1; ~1=0; 2.程序源代码: #include "stdio.h"6 v9 l5 N+ m: q: G main()# f: m* G2 ?5 o" E; v* z* e { int a,b; w8 |6 J6 R* ?4 \" T a=234;2 e7 f$ n+ r5 c* x6 y b=~a; printf("\40: The a's 1 complement(decimal) is %d \n",b);+ D6 {; U; z6 V( Q; k5 L, ^ a=~a; printf("\40: The a's 1 complement(hexidecimal) is %x \n",a); } 3 f' a% B) k) \0 i ==============================================================" a9 @: n1 N1 H; _ 【程序56】 题目:画图,学用circle画圆形。 1.程序分析: 2.程序源代码: /*circle*/ #include "graphics.h" main()9 A; z; a: {, E8 U4 T( L4 G {int driver,mode,i; float j=1,k=1; driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW);5 [ \1 M! R6 t! W8 U J w for(i=0;i<=25;i++) {! a) W8 C4 G& t# x setcolor(8);( v7 p! Q/ M$ I# M8 a, Y circle(310,250,k);) Q$ U. _% S4 S. U( ^6 a( ?1 D$ G k=k+j; j=j+0.3; }: B, R6 d* t* u/ a! Q. Z2 m' E } * Q- T2 c4 J0 A. U- U3 w) Z6 X ============================================================== 【程序57】 题目:画图,学用line画直线。+ K: F( O8 O1 G5 S7 E: v 1.程序分析: 2.程序源代码:' i1 _& k! U8 T% z7 [# O4 j7 M #include "graphics.h"6 b9 n* G# y w, ^/ J, Q3 J3 m/ n main() }, L" |' r2 G% i. P3 ^0 m2 o {int driver,mode,i;3 x( ~+ ]& e; P; ?7 B float x0,y0,y1,x1;0 E1 G0 s% G* v( k) r float j=12,k;& T7 F1 n# H& A2 l driver=VGA;mode=VGAHI; initgraph(&driver,&mode,"");7 U9 z& j( r8 q5 b; o2 M setbkcolor(GREEN);: Q t. M8 W8 j( H4 Y- N x0=263;y0=263;y1=275;x1=275; for(i=0;i<=18;i++) { setcolor(5); line(x0,y0,x0,y1); x0=x0-5;4 ?- ]3 X5 c, a; t" N5 k& @' b% b y0=y0-5; x1=x1+5; y1=y1+5;( p. J4 ?, X0 I; I j=j+10;3 F& U# Q( L; I9 | }% H- u% p8 M( ]( z x0=263;y1=275;y0=263; for(i=0;i<=20;i++) {' e; k3 n4 F0 f setcolor(5);3 J! ]& Y! D' k' e7 U* W line(x0,y0,x0,y1);% G/ w1 E; G g; X0 u8 T x0=x0+5; y0=y0+5;1 \/ ?+ y% a$ V+ n y1=y1-5;8 T, y. ~5 I3 i } } ============================================================== 【程序58】4 ?# S( L; t7 y6 Y3 ?" K 题目:画图,学用rectangle画方形。 1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。 2.程序源代码: #include "graphics.h" main() {int x0,y0,y1,x1,driver,mode,i;: a! s" |( C# [: ` driver=VGA;mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW); x0=263;y0=263;y1=275;x1=275;6 c5 o1 \3 }8 y. I6 v% v2 P' a4 f$ }1 N for(i=0;i<=18;i++)+ p, K- r J: ?6 ?( T {2 Y( D0 j, ^3 @. e% [& ]( G setcolor(1);% `+ R' q6 d' S6 A' E; h. p rectangle(x0,y0,x1,y1);6 k# v V2 [& w/ R- w$ U" J x0=x0-5;% V* r5 I, x4 V7 \( G6 _ y0=y0-5;8 ?! c) V t( H1 X4 R# N x1=x1+5;0 o9 G% @7 C2 ^) N! P5 ~ y1=y1+5; }: O' c I, Q8 m5 P settextstyle(DEFAULT_FONT,HORIZ_DIR,2); H! o: W2 ]% H9 |# @7 Z outtextxy(150,40,"How beautiful it is!");! b& a8 v# m' {( y# l: j |% J line(130,60,480,60); setcolor(2);. M& e# r) t0 o$ v" a! F' O circle(269,269,137); } ==============================================================) s" u4 V% ]' ^! G 【程序59】9 _) a- @' K B6 D 题目:画图,综合例子。6 I) M" e) W& [4 E6 m 1.程序分析: 2.程序源代码: # define PAI 3.1415926 # define B 0.809. n8 Z- Z) I+ J/ J # include "graphics.h"" U5 j, K, V6 Q! y3 F: o. M0 C W7 o #include "math.h"4 {" Q0 H/ K1 y6 a% R main() { int i,j,k,x0,y0,x,y,driver,mode;, W0 k9 Y$ X" L$ z, o7 f0 h float a;, R) }, ^2 s8 s! U" c# W driver=CGA;mode=CGAC0; initgraph(&driver,&mode,"");9 f- F, ?6 _* e setcolor(3); setbkcolor(GREEN); x0=150;y0=100;: K# @" P& A, j: U circle(x0,y0,10); circle(x0,y0,20);0 w% }6 T* I' U% [- G1 d2 t. O. Y circle(x0,y0,50);# |4 l+ x& U$ T4 d! P for(i=0;i<16;i++)! C- ]* _) L: ] {& m$ k+ d2 U3 e* V5 E a=(2*PAI/16)*i; x=ceil(x0+48*cos(a)); y=ceil(y0+48*sin(a)*B);) o4 D$ i3 t4 j) T1 y7 W setcolor(2); line(x0,y0,x,y);}- F [* }, o8 Y; ?! R" ^- | setcolor(3);circle(x0,y0,60);( k5 h5 H8 l+ N, C4 m /* Make 0 time normal size letters */) D; P/ m+ }5 ?1 J; K settextstyle(DEFAULT_FONT,HORIZ_DIR,0); outtextxy(10,170,"press a key"); getch(); setfillstyle(HATCH_FILL,YELLOW);3 D/ Z4 _) s: Q7 I+ N! _3 u floodfill(202,100,WHITE);) g; T; A( h4 T* ] getch();( Y- d. G/ d. a( c& a6 L2 p for(k=0;k<=500;k++)" s! S" F, \' o N6 D' I { setcolor(3);- N- O( p9 `$ O" x( B for(i=0;i<=16;i++) {- A$ ?, b# H1 J; Y5 [) K a=(2*PAI/16)*i+(2*PAI/180)*k;9 D! Y# W: E( E4 _ x=ceil(x0+48*cos(a));- w3 A X& a! z: q$ M y=ceil(y0+48+sin(a)*B);: |3 o7 d: }1 x; n# } setcolor(2); line(x0,y0,x,y); } for(j=1;j<=50;j++) { a=(2*PAI/16)*i+(2*PAI/180)*k-1;. {. G' @1 ?; t( m x=ceil(x0+48*cos(a));/ t0 ?$ ^4 m( N# K8 | y=ceil(y0+48*sin(a)*B);5 q% W3 \! [1 A, c5 u line(x0,y0,x,y); } o! S" u# K$ L0 v6 b } restorecrtmode(); }# _9 h- I; q" w, E5 L5 ]' x) L ==============================================================# B) o1 @' J5 p) V" ^5 o' y 【程序60】: M& Q* O7 v! Q+ e 题目:画图,综合例子。 1.程序分析: 2.程序源代码:: s( G. A- }* Y9 ] I5 M* v #include "graphics.h" #define LEFT 0! s" F& x2 R" B3 J) c; H& J #define TOP 0 #define RIGHT 639% J7 c% `! D" I) [/ K% u' u #define BOTTOM 479 #define LINES 400 #define MAXCOLOR 15 main() { int driver,mode,error;' n& C3 j3 j. k J1 L; _ int x1,y1; int x2,y2;, j" | z/ w/ r5 x+ c% U int dx1,dy1,dx2,dy2,i=1;. a0 k5 t" d" Y) m int count=0; int color=0;: C$ b. H# I- b driver=VGA;, A- K. n! u8 t; H# a mode=VGAHI; initgraph(&driver,&mode,""); O" O: x$ m. y0 {0 N x1=x2=y1=y2=10; dx1=dy1=2; dx2=dy2=3;* f6 O4 R3 p3 N. O1 `% h: B4 I while(!kbhit()) M( G, [6 U0 o5 T+ F) Q; p { line(x1,y1,x2,y2);5 {3 `8 {3 S( Y x1+=dx1;y1+=dy1; x2+=dx2;y2+dy2;/ G7 d& Q% l ?2 J. Z' [. j if(x1<=LEFT||x1>=RIGHT)+ o- N# u# ` v( X1 m0 \ dx1=-dx1; if(y1<=TOP||y1>=BOTTOM)9 k2 G$ {: V# ?# {1 r dy1=-dy1;2 b j/ P: \ \" m* s if(x2<=LEFT||x2>=RIGHT)0 x7 M% a: \. D" y p! W dx2=-dx2; if(y2<=TOP||y2>=BOTTOM) dy2=-dy2;1 c: V: Y# k! Q* u) P% U$ K if(++count>LINES)) r# Q- E. p( K7 E9 q( K { setcolor(color); color=(color>=MAXCOLOR)?0:++color; }" a. Q3 A$ [, F& F$ D! M; M# u } closegraph();, d: [ d: v+ H }
【程序61】, H) Q/ e/ \1 Z# P 题目:打印出杨辉三角形(要求打印出10行如下图) 6 \$ r9 W# t2 b( u( z# @& m 1.程序分析:' {# b- ^/ j) M {- B 1 1 1+ \0 w9 F& f: D3 `8 E3 p, w& c 1 2 1 y$ z1 \/ Y- E3 Y5 e2 i) a 1 3 3 10 w$ |. m8 ]3 k% }8 m0 k. u( T 1 4 6 4 1 1 5 10 10 5 1 2.程序源代码:9 _) r2 }& J& g [3 h main()# d8 [5 J8 {3 X( k9 Z6 h {int i,j; Y0 q+ H, R& ?: t% y int a[10][10]; printf("\n");3 \$ p; o" H2 y5 o6 _- m0 r) A z for(i=0;i<10;i++)3 ~. E+ o0 A- D9 V {a[0]=1;: L5 R! u3 {, m2 ? a=1;} for(i=2;i<10;i++) for(j=1;j<i;j++)+ x7 a& U" Y& V a[j]=a[i-1][j-1]+a[i-1][j];7 W H, R0 q/ t# {" | for(i=0;i<10;i++)9 w; t G" U4 j6 X7 `7 P$ l. b x {for(j=0;j<=i;j++) printf("%5d",a[j]);" Z; }+ y1 I7 D3 @/ `2 ^7 h printf("\n");- m7 N0 Z1 R) h, l } } ============================================================== w: }% D$ k6 O! U# @: M 【程序62】 题目:学习putpixel画点。 1.程序分析: - B# Z% t: ]' V+ V2 @ 2.程序源代码:; u- k6 Z( N- k* u- X; g9 p #include "stdio.h" #include "graphics.h"* O2 D& }0 M$ a7 F main() W( X3 s5 m. P% G" D0 _3 o& W { int i,j,driver=VGA,mode=VGAHI; initgraph(&driver,&mode,""); setbkcolor(YELLOW);3 g9 u; G0 E8 e+ c q: j; L for(i=50;i<=230;i+=20)" t- r- U! R# \2 p for(j=50;j<=230;j++) ^/ [# y% F5 c$ Z& }9 @ putpixel(i,j,1);+ D8 O, m1 }0 |% d for(j=50;j<=230;j+=20) for(i=50;i<=230;i++)" ]3 s( b/ M$ S9 b- V putpixel(i,j,1); } R- }- s: {9 ^3 ]/ u0 K- a% \ ==============================================================+ V: Z+ s- m9 j0 E5 W5 A2 V 【程序63】0 T# j4 {# S0 { 题目:画椭圆ellipse 1.程序分析:6 m& \0 V3 j( p 2.程序源代码:3 ~8 K0 e y6 b0 w; Y- N) C #include "stdio.h" #include "graphics.h"2 R" b ], T+ I #include "conio.h" main()( i6 |( c- W3 P { int x=360,y=160,driver=VGA,mode=VGAHI; int num=20,i;5 c5 _7 h7 P2 S8 [4 W3 g int top,bottom; initgraph(&driver,&mode,"");: }" i3 A. l4 b4 v top=y-30;) y* ]5 r+ [! t$ w9 l+ [8 D: @) u bottom=y-30; for(i=0;i<num;i++) {$ P8 y1 I" ?5 D7 z2 _ ellipse(250,250,0,360,top,bottom);7 q7 {1 I7 E3 `: y G# ` top-=5;& @$ c: M0 c: p& k& D5 L2 {4 n bottom+=5;& X* ~! {4 r( B l3 G* n }( a* c: C1 D, Q- X; Z- x; P getch();# ?" P6 e& B Q! S8 e" \ } ==============================================================2 m4 m5 D7 u. d H! Z* y3 U ] 【程序64】 题目:利用ellipse and rectangle 画图。. T4 j. V# J {. \" r9 T 1.程序分析:+ S! l- D9 s0 I+ d2 w# [/ P 2.程序源代码: #include "stdio.h" #include "graphics.h" #include "conio.h"6 b; x4 B% V7 Y) v) j E main()# y- N- v8 ~- G( @ { int driver=VGA,mode=VGAHI;3 f+ E- j" X' n' h& S; z int i,num=15,top=50; int left=20,right=50; initgraph(&driver,&mode,"");9 y9 p5 E$ t$ z' t& y for(i=0;i<num;i++), @: a( ~& O8 C+ B3 ` { ellipse(250,250,0,360,right,left);( R9 l6 n( ]0 P0 n1 C ellipse(250,250,0,360,20,top); rectangle(20-2*i,20-2*i,10*(i+2),10*(i+2)); right+=5; left+=5;! n+ F& W7 f' u O* b top+=10; } getch(); }6 T: l5 N/ k5 |( I- r. V+ C ============================================================== 【程序65】% n% }2 I+ i" C 题目:一个最优美的图案。 1.程序分析:; l8 w' ^0 @: [! x# j2 J 2.程序源代码: #include "graphics.h" #include "math.h" #include "dos.h"# Y( {8 h' \( ~5 S #include "conio.h"4 o7 N/ _ U6 b% ~) z3 e3 l #include "stdlib.h": `' J+ J/ ?0 L4 F: e #include "stdio.h" #include "stdarg.h" #define MAXPTS 15 #define PI 3.1415926* d% T% [) ]- z; g: P9 ?% l struct PTS { int x,y; }; double AspectRatio=0.85; void LineToDemo(void)" X% |6 V' P# i }; k; K* W; j/ X) F { struct viewporttype vp; struct PTS points[MAXPTS];. \- T4 l. R% G, S int i, j, h, w, xcenter, ycenter;* |% l3 Z5 H# a0 l' E& _ int radius, angle, step; double rads; printf(" MoveTo / LineTo Demonstration" ); getviewsettings( &vp );; U5 {3 I% H( z8 p& C: f* N h = vp.bottom - vp.top;$ E) M* G" }9 p/ Y' x w = vp.right - vp.left;& N# A5 D/ A$ V5 C# }8 w- W xcenter = w / 2; /* Determine the center of circle */ ycenter = h / 2;# |+ R" i+ K- r S! i radius = (h - 30) / (AspectRatio * 2); step = 360 / MAXPTS; /* Determine # of increments */ angle = 0; /* Begin at zero degrees */ for( i=0 ; i<MAXPTS ; ++i ){ /* Determine circle intercepts */8 q, t& R) T. Z7 M1 Z1 U$ o9 S- F rads = (double)angle * PI / 180.0; /* Convert angle to radians */ points.x = xcenter + (int)( cos(rads) * radius );' K& s/ E' L6 K- @. S4 I6 q points.y = ycenter - (int)( sin(rads) * radius * AspectRatio );5 I8 R+ L! B! @ ], S' [ angle += step; /* Move to next increment */) D5 g$ c' E# X# f } circle( xcenter, ycenter, radius ); /* Draw bounding circle */3 t y: D1 x' H v" D0 k for( i=0 ; i<MAXPTS ; ++i ){ /* Draw the cords to the circle */1 [) `1 R; g& k for( j=i ; j<MAXPTS ; ++j ){ /* For each remaining intersect */8 l2 R; P8 `# s8 G# N$ p c moveto(points.x, points.y); /* Move to beginning of cord */! x8 ]& \. O" P lineto(points[j].x, points[j].y); /* Draw the cord */, I, A' }% X) `( N3 w } } } main() {int driver,mode;5 S3 ?1 N3 q4 J driver=CGA;mode=CGAC0;# R5 ^1 T# z! i0 U! E6 S$ q initgraph(&driver,&mode,""); setcolor(3); setbkcolor(GREEN); LineToDemo();} ============================================================== 【程序66】* c0 L1 I- t2 ~7 ]$ ?* B 题目:输入3个数a,b,c,按大小顺序输出。 1.程序分析:利用指针方法。9 t! P' c0 |1 x2 C% j 2.程序源代码:6 }9 M4 W1 n# p1 Q* S/ W/ O: T /*pointer*/+ ^7 J/ E1 t1 C9 n' ? main()1 ]0 l) k+ L6 _6 A { int n1,n2,n3; int *pointer1,*pointer2,*pointer3; printf("please input 3 number:n1,n2,n3:");: F: y5 }5 k. d6 L+ D scanf("%d,%d,%d",&n1,&n2,&n3);+ A# z; l2 P8 _! O4 t5 E% `1 M* @+ X9 M pointer1=&n1; pointer2=&n2;2 m) l& M; B9 D% \. q pointer3=&n3; if(n1>n2) swap(pointer1,pointer2); if(n1>n3) swap(pointer1,pointer3);6 A+ j; ]! q- R if(n2>n3) swap(pointer2,pointer3);7 |( A0 R8 Z, j) D3 h2 b printf("the sorted numbers are:%d,%d,%d\n",n1,n2,n3); }$ O0 [5 C7 c* V9 s' i6 Z swap(p1,p2) int *p1,*p2; {int p;3 g. _8 w) F. l/ q* A( Z8 Z8 e1 Z p=*p1;*p1=*p2;*p2=p;+ |! b0 z6 l' a% B }5 t* x/ ^: l+ ~ ============================================================== 【程序67】 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 1.程序分析:谭浩强的书中答案有问题。 2.程序源代码: main() { int number[10]; input(number);. X; ]- B! P* v; L max_min(number); output(number); }& `) a4 ]5 P1 Y; E input(number)) A8 U: b0 \" ` E; r; P! i. n int number[10]; {int i;3 i/ C. V [2 U+ O z for(i=0;i<9;i++) scanf("%d,",&number); scanf("%d",&number[9]);8 ]3 J+ {! q, g- f4 C2 d b }; }2 T) Z" q7 q1 S) W* Z0 a2 q; T max_min(array)! o7 n1 `, E' {! K& d5 J int array[10];6 `5 I/ Y# j- f- {) U9 | {int *max,*min,k,l; int *p,*arr_end; arr_end=array+10;0 V4 P& i! ?4 N0 Q2 K7 K max=min=array;2 g( v' P( x# \- `" h% ~' f3 i for(p=array+1;p<arr_end;p++)7 T7 g8 B% V! C4 H6 M! N. Q if(*p>*max) max=p; else if(*p<*min) min=p; k=*max; ^! c4 k$ N* x l=*min;# c0 F; F0 K! u *p=array[0];array[0]=l;l=*p;- h9 p, n2 s( w, I+ k7 f *p=array[9];array[9]=k;k=*p; return;( Z m9 R" M2 F$ Z E }- t p/ S! ?& [, l/ c output(array) int array[10];( w G( W8 A! x5 }) v3 Z' i# N { int *p;& ]( |+ {8 O4 I4 W/ `, T( v for(p=array;p<array+9;p++)3 i! j6 X( q1 r7 D$ n5 F6 B printf("%d,",*p); printf("%d\n",array[9]); } ============================================================== 【程序68】 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数4 _/ m$ d; y9 f# J/ k, r% P) f 1.程序分析:* t$ u) T o2 p% E" ]2 e4 _3 n1 a( D 2.程序源代码: main()8 Y) a. G3 n& \ { int number[20],n,m,i; printf("the total numbers is:");# o% f- q, y+ Y9 | scanf("%d",&n); printf("back m:"); scanf("%d",&m);" a( t, @0 m% X- D for(i=0;i<n-1;i++)( z; `6 `: C. `' f scanf("%d,",&number); scanf("%d",&number[n-1]);3 C7 m" C& K5 s# T8 E" f move(number,n,m);# j2 s4 G4 w4 C& V3 n for(i=0;i<n-1;i++)& ^5 u0 r9 n5 X( m. V printf("%d,",number); printf("%d",number[n-1]);* ^8 q$ A5 u- u/ Q( A& v } move(array,n,m) int n,m,array[20]; {2 W. c* B4 F( i: w int *p,array_end;: p9 v, q8 s" d) ~ array_end=*(array+n-1); for(p=array+n-1;p>array;p--) *p=*(p-1); *array=array_end;/ G! a7 z6 U( N m--; if(m>0) move(array,n,m); }! a4 N. G X" W# v ============================================================== 【程序69】0 N a, D) y2 |, m 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出 圈子,问最后留下的是原来第几号的那位。, D0 D/ n( i! A+ N* x- _ 1. 程序分析: 2.程序源代码: #define nmax 50 main()" g; m; |( I. p' X# } { int i,k,m,n,num[nmax],*p; printf("please input the total of numbers:"); scanf("%d",&n); p=num;; W& g! j- ^( x1 F3 o# B for(i=0;i<n;i++)8 r8 ^# g8 t! H; {2 r, \ *(p+i)=i+1; i=0; k=0; m=0;4 O8 f9 a+ I2 a3 w" t! ^" ]: P while(m<n-1); l$ w1 M4 ~6 I1 H# g {" ~* M z q; {5 D. x4 g if(*(p+i)!=0) k++; if(k==3) { *(p+i)=0;! _0 _5 n9 H* a O4 x1 ~ k=0; m++;+ \& W- X5 X$ X* N# ]( C }6 `; n* i+ Y, n- x# V i++;4 O" L" g7 d, c; G if(i==n) i=0; y7 R* \0 c5 f1 X- {! g/ k } while(*p==0) p++;, z6 y2 j- A' u6 J9 p& N4 K1 t printf("%d is left\n",*p);* Q0 L: n9 z w/ k* @7 Q } ============================================================== 【程序70】 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 1.程序分析: 2.程序源代码:7 q8 x0 o. N( P, r5 l main() {+ C0 E$ i) I* _: \2 y& O int len;4 i- \+ k& V9 m# R( S9 i char *str[20];; e$ \' j0 \1 M9 j0 i printf("please input a string:\n"); scanf("%s",str);# V7 P8 [6 b$ ?- |# |: s ?4 h len=length(str); printf("the string has %d characters.",len); } length(p) char *p; { int n; n=0;2 u8 a! u1 ^1 I; m& O( c; ^$ f while(*p!='\0') { n++;+ ?; V2 G- p4 Z5 Y p++;0 |0 A) c+ r6 {- o } return n;* X- }0 n" e$ P; \0 B# {7 E( P5 r }
【程序71】- m/ a" H4 ~& L" @/ k6 W; j7 i3 | 题目:编写input()和output()函数输入,输出5个学生的数据记录。0 c8 O' g# K/ R6 r5 n: X L/ \* ~ 1.程序分析: 2.程序源代码:3 L9 L3 D$ X7 x! c' | #define N 5! l+ V8 Y: }; B4 l% X D struct student { char num[6];, e( Q3 D6 E4 q& J char name[8]; u3 m2 ]* W- T% j2 h2 S int score[4];/ t- A' g) \4 c" n2 X/ v8 G( P) x* R } stu[N];( Q- t0 ?" C" e; N input(stu)7 p2 r8 w! R/ h; _ struct student stu[];$ i f/ i( N, C# W7 s6 ] { int i,j;( x. Q5 e; Q9 R. k3 b& t- g for(i=0;i<N;i++) { printf("\n please input %d of %d\n",i+1,N);- Q+ q8 O4 G( y- s, k printf("num: ");- m% R% R O; H2 f& a scanf("%s",stu.num); printf("name: ");) S1 t2 C' ]5 V8 w8 K+ Q! `- w# A scanf("%s",stu.name); for(j=0;j<3;j++) Z) ^1 z6 w1 D { printf("score %d.",j+1); scanf("%d",&stu.score[j]);% M9 v$ q( Y. g$ p; P. b } printf("\n");& \9 a! @9 b. A } }6 s+ G- s2 |; Q8 h1 {! y* V print(stu) struct student stu[];; y1 ?) Q6 x. U4 Z { int i,j; printf("\nNo. Name Sco1 Sco2 Sco3\n"); for(i=0;i<N;i++) { printf("%-6s%-10s",stu.num,stu.name);3 K5 P4 l) _ S# u) \8 Z- Q for(j=0;j<3;j++) printf("%-8d",stu.score[j]); printf("\n");1 H$ F4 b( R2 ~% y9 J } }8 E1 t3 i3 h( a8 f main() {& k b" ?7 c6 @4 x input();- H% q" K* I+ ^7 d4 D5 w1 }6 c print(); }/ X* { C7 ]" x5 q9 N5 X ============================================================== 【程序72】 题目:创建一个链表。 1.程序分析: 2.程序源代码:# t7 Q0 E2 z: {* p, _2 f1 _ /*creat a list*/ #include "stdlib.h"9 y' G( i0 P! } g #include "stdio.h"7 b, V4 S& X8 h. \7 K& g struct list8 l- I6 h3 o6 Y7 n% c# u' p3 Z9 S { int data;+ U; u% K$ {, T: n/ L+ ^* a8 `9 S struct list *next; };! A) b X! D: P typedef struct list node;: N) {8 o6 P3 l0 q. t typedef node *link;6 C: B0 }8 r- z2 y9 p7 n void main()0 B% E( o6 M8 \. T' E0 t { link ptr,head;) q: f$ y5 M) N8 ` int num,i;, O3 V5 m6 {1 e' h. Y* ^ ptr=(link)malloc(sizeof(node)); ptr=head;. ], C( Q! f9 L2 h! T printf("please input 5 numbers==>\n");- M+ ?; H% ^# _- c+ {7 Z' a for(i=0;i<=4;i++)" }" v5 v Q* R9 l { scanf("%d",&num);( A9 z: T2 y7 I4 v ptr->data=num; ptr->next=(link)malloc(sizeof(node));( |" P; Q+ D7 y7 l3 u! R& I5 l if(i==4) ptr->next=NULL;( H# ?, |: A3 _4 j else ptr=ptr->next; }* I9 z# F" [& }+ \$ a ptr=head; while(ptr!=NULL)1 B& V5 d. o' t { printf("The value is ==>%d\n",ptr->data);& z6 w" F8 `9 Q ptr=ptr->next; }4 {/ J) l4 w3 H- k5 Y }9 c( M. e" ] K# o6 [. l; Q ============================================================== 【程序73】 题目:反向输出一个链表。 / g" e, H. F0 s$ p# M; k3 e 1.程序分析: 2.程序源代码: /*reverse output a list*/ #include "stdlib.h" #include "stdio.h" I* L/ T. N v8 U struct list { int data;% s. u, }0 G) w" a3 `3 h struct list *next;( w4 T% S! }5 K; c1 Y5 c4 j }; typedef struct list node; typedef node *link;; Y& I) I. M/ O1 M void main() { link ptr,head,tail; int num,i; tail=(link)malloc(sizeof(node)); tail->next=NULL;+ w& t5 i8 W4 Z ptr=tail; printf("\nplease input 5 data==>\n");5 O' _) x# X4 T3 a for(i=0;i<=4;i++) {( r! V2 `: ]8 a' Z' s$ \ scanf("%d",&num);4 {2 v5 a$ H. M! |) u6 s ptr->data=num; head=(link)malloc(sizeof(node));( L% Z h- ~. N v Y head->next=ptr; ptr=head; u# _7 S, Y, T# S }5 ]: L T# }$ d9 G$ g0 ]8 J& g! P ptr=ptr->next;* R5 i" z [! E8 } while(ptr!=NULL)6 l0 v5 N! b: m, d { printf("The value is ==>%d\n",ptr->data); ptr=ptr->next;( L/ G! O6 e2 c3 V: Z, b }} ==============================================================0 X( d% D2 v1 t9 b% ~ |$ f' f$ b 【程序74】0 }1 k Y8 ]" X r+ {9 P6 C* L 题目:连接两个链表。 1.程序分析:* `2 F5 F. e+ n+ f% u! L 2.程序源代码: #include "stdlib.h" #include "stdio.h"; G+ `7 G M" A9 |/ w7 \ struct list { int data;8 H% l$ Q& S) j& f/ J0 S struct list *next;( ?. H# ^; f7 h }; typedef struct list node; typedef node *link;$ U0 Q/ O0 `: a( F6 s" r link delete_node(link pointer,link tmp) {if (tmp==NULL) /*delete first node*/ return pointer->next; else { if(tmp->next->next==NULL)/*delete last node*/! N S$ L; b6 c9 y r- T ~6 d tmp->next=NULL; else /*delete the other node*/8 t( g8 j; @. x tmp->next=tmp->next->next;* G: H: |2 `. f. [ return pointer;- C& k) J$ J" S# [4 p& w }$ m- V3 s$ I) P, C- Z. M0 |+ u5 J }! A3 B: J+ U2 i" b2 y/ S; r void selection_sort(link pointer,int num) { link tmp,btmp; int i,min; for(i=0;i<num;i++) {% Z [9 A* g7 V9 e9 A tmp=pointer; y( \: U1 ]# P% |& E- c& O4 D min=tmp->data;- E- j( F: P7 V2 @7 w: J btmp=NULL;6 S5 p; A( e9 U- G. D3 a while(tmp->next)$ X0 d7 G8 E2 y2 {" D9 M7 W5 _ { if(min>tmp->next->data)- ~, o' e: A8 i2 S& W% d {min=tmp->next->data; ?, Z7 y& o, |) F& T btmp=tmp;0 ?9 A: G, k5 w! ~% G } tmp=tmp->next;8 f; ^9 F. Z% O& O1 f/ [ } printf("\40: %d\n",min); pointer=delete_node(pointer,btmp);( ?) Z' E. ^. u } b1 N* L$ N+ i1 E8 Y } link create_list(int array[],int num)+ ?2 e9 F! i0 b, A) U7 g( u! }0 Y$ D { link tmp1,tmp2,pointer; int i; pointer=(link)malloc(sizeof(node));' D* x9 A; Z% x# V% y pointer->data=array[0];3 ~( J& Q) K6 [1 _" B tmp1=pointer;( {6 O! }- q: T: [5 T: z for(i=1;i<num;i++)$ c, ^/ Q3 H3 b" ], l1 j { tmp2=(link)malloc(sizeof(node));8 y! d' v" M9 P' ^ tmp2->next=NULL;: M u$ d4 J% r* ?1 ] tmp2->data=array;; m6 b% A, V) c; x" F4 b# _ tmp1->next=tmp2;3 b0 i1 N' a1 a! K1 t: A) Y0 @- \ tmp1=tmp1->next;- m/ ~8 Q: B) |( M; ^, A }4 h B9 i6 {2 w- v% a6 m return pointer;' w4 @7 j( v2 w* Q }. A1 {0 V2 m. A! g" N link concatenate(link pointer1,link pointer2) { link tmp;9 H# B& E+ E. ]3 u tmp=pointer1;' I" ~& I0 k' f' `- l# ^( ?5 }" } while(tmp->next) tmp=tmp->next;, n5 a8 E' u$ k: i1 {5 ~ tmp->next=pointer2; return pointer1;4 r+ ~' V( N" y' d$ u" ~. L3 b1 |- j/ ` } void main(void) { int arr1[]={3,12,8,9,11}; link ptr;" w t0 s& ?( Z ptr=create_list(arr1,5);$ E4 u( @+ H k* i T( P6 p selection_sort(ptr,5); }5 |# w \" i" F ==============================================================9 O- X( Y/ Y5 f" m5 d 【程序75】8 C! N9 T) i* _7 Q; o 题目:放松一下,算一道简单的题目。 1.程序分析: n0 O1 _9 Z/ _ 2.程序源代码:( g. N; k" Q" g/ ^! E main() {- J M) ] {' S. A3 n) V& d int i,n;+ e8 K9 `" A( G: {9 J5 B, N$ g for(i=1;i<5;i++): G0 s4 ]+ |9 M { n=0;% W" h3 B. q) b8 Q3 \ if(i!=1) n=n+1;% @6 y4 c2 N$ [6 z if(i==3)3 }% y1 {( X' a; d; q, ]- M, O n=n+1; if(i==4) n=n+1; if(i!=4) n=n+1;' X+ Y2 ~( s( m; | if(n==3) printf("zhu hao shi de shi:%c",64+i);7 u, n( u. f7 p7 A" k }5 I$ m9 c" o2 M' W/ i( ?8 \ } ==============================================================8 i d6 A& [! c# b 【程序76】 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数 1/1+1/3+...+1/n(利用指针函数)) O0 o1 k* i. x* _" k7 J. w 1.程序分析: 2.程序源代码:( x1 R1 h# l* f) c main()% V" u( ~/ j/ b #include "stdio.h" main()6 u9 U8 W% O( }6 ?5 A8 B) V {1 f7 C7 P7 i& t float peven(),podd(),dcall();5 T, z8 d! a8 Q2 G3 X/ M1 Y2 V% y float sum;) ]& E, x0 b* `! E% h, _8 }* y int n; while (1) {; U r2 V# j% C! b- i0 N scanf("%d",&n); if(n>1) break;4 Z' _6 U0 V. A0 y5 R: I; ] } if(n%2==0)4 W! ?. H% M: c$ J3 ~2 v {; b8 v1 z4 D. u( l printf("Even=");4 O/ l7 B6 g* Y& u! U5 G9 I/ e( H ] sum=dcall(peven,n); }' _( y% _3 U- o6 Q+ g" |5 _ else+ H, y. Z4 j5 _" P) p {' S0 D: m- K" t& @$ [- }; w | printf("Odd=");4 W' p! b# l* | sum=dcall(podd,n);9 v$ d C9 ?5 b2 a4 N }* G2 u6 ~7 B: m( O5 _2 R printf("%f",sum);/ m+ |8 {1 ~3 i. e* c- \ } float peven(int n) { float s; int i; s=1; for(i=2;i<=n;i+=2) s+=1/(float)i; return(s); }1 h* A) _# `: F' b5 S float podd(n). G" [6 Z- i S# ~5 d& ]# m* P- h int n;% B: [. _# q0 P* p0 I { float s; int i; s=0;& m0 ~7 i) a% F, i! d5 q9 b for(i=1;i<=n;i+=2)# y$ p3 M8 T: f0 m2 p& _8 P6 V s+=1/(float)i; return(s); }$ l# s" A; D5 r float dcall(fp,n) float (*fp)();& _ F# R2 c% T7 o int n; {0 f0 E* l9 [5 `# S N0 \ float s;7 E! B3 T9 ^" n& K: v8 k s=(*fp)(n);) \% A0 H3 s/ k& O return(s); } ============================================================== 【程序77】 题目:填空练习(指向指针的指针) 1.程序分析: 2.程序源代码:- ^6 w) L' z; X# A/ k A- m main() { char *s[]={"man","woman","girl","boy","sister"}; char **q;( Z* _ y1 @1 r3 Y7 s6 X) {" J' Q int k;% P1 W+ L. v3 p8 ] for(k=0;k<5;k++) { ;/*这里填写什么语句*/. _% K8 V9 T# w& Y printf("%s\n",*q); } }$ l2 `& [4 Z$ n1 z ============================================================== 【程序78】9 |. G6 |4 g1 r+ E0 r3 v 题目:找到年龄最大的人,并输出。请找出程序中有什么问题。' {$ ~9 o5 x7 v) e6 a$ ^" w5 }5 H ~3 Z 1.程序分析: 2.程序源代码:& n+ G5 R5 j' a #define N 4+ ~) Q# S/ O3 r& F8 ~ #include "stdio.h" static struct man/ H+ E. D+ f' N) i { char name[20]; int age; } person[N]={"li",18,"wang",19,"zhang",20,"sun",22};0 S( Z: l: v5 Z( w( A main() {struct man *q,*p;& J' A; O9 K6 B$ R int i,m=0; p=person; for (i=0;i<N;i++) {if(m<p->age) q=p++;8 S: h0 v- { H. |7 x m=q->age;}2 A* a+ m/ e4 T& {1 [4 G9 n0 k; G printf("%s,%d",(*q).name,(*q).age); } ==============================================================3 I+ W4 Z/ ~1 o 【程序79】( _2 ]: P6 U( \+ b) A- ? 题目:字符串排序。" m* a( K7 i4 ^! W" d 1.程序分析:& A* j/ ^& E' J. ^/ @6 J 2.程序源代码: main() { char *str1[20],*str2[20],*str3[20];' q, d1 q! p t, L" p; @ char swap();4 S/ r' a- r$ G$ s. C0 U printf("please input three strings\n"); @9 q& K& M. |$ d: o8 u% u+ u scanf("%s",str1); scanf("%s",str2);0 O+ Z! M$ v/ n, t scanf("%s",str3); if(strcmp(str1,str2)>0) swap(str1,str2); if(strcmp(str1,str3)>0) swap(str1,str3);" ?5 H8 l! @! o- L* ~2 W/ ] if(strcmp(str2,str3)>0) swap(str2,str3); printf("after being sorted\n");6 h% }% l% \: \5 y: s+ {! q printf("%s\n%s\n%s\n",str1,str2,str3);6 R9 C1 l. W7 _* X, ^ }- u6 b# J9 L9 ^ f! U' ] char swap(p1,p2)$ e7 P. S; I- |+ G5 O char *p1,*p2; { char *p[20]; strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);; ?$ p$ f7 o. d' v } ==============================================================2 ^/ @# W: H! E) z4 z# E 【程序80】9 l9 v. L/ ^& h0 } ]# X2 V& y% T2 W% ` 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只 g, x7 k+ _& N, @ e& V, j4 D& c8 E 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了( Z: H% P& H" y) z' ~' t/ F 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,3 B! i# G, P; o/ U5 z9 ^ 问海滩上原来最少有多少个桃子? 1.程序分析:# R: O; W5 O: m# b 2.程序源代码: main() {int i,m,j,k,count;- h: Z0 t7 h8 `& o2 K# i for(i=4;i<10000;i+=4) { count=0;+ x' {) v( c# ^* G( [) k m=i; for(k=0;k<5;k++) {$ D- ]/ x( H: v; l! G- F j=i/4*5+1;/ C- D Q& Y; U9 ~- t, H i=j;1 P* _- t! T, L5 ?# H if(j%4==0)1 X( y& ?/ K' ~: L count++;, l- X. Z. ^! m5 N7 Q3 L9 m else break; } i=m;" k9 j8 i: \+ i/ ]3 B' ? if(count==4)/ W# W/ M D: R" J {printf("%d\n",count);/ L9 @, K. f& f& W: r8 U/ w1 D break;} } }
【程序81】
题目:809*??=800*??+9*??+1 其中??代表的两位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。
1.程序分析:
2.程序源代码:! j; A4 l: u2 s( H) y
output(long b,long i)
{ printf("\n%ld/%ld=809*%ld+%ld",b,i,i,b%i);: A7 d/ {1 c0 D
}
main()( D& O1 t) W0 ?/ o* s5 f. W6 I
{long int a,b,i;
a=809;
for(i=10;i<100;i++)
{b=i*a+1;% v8 ?: l! i' ~& Z3 Z
if(b>=1000&&b<=10000&&8*i<100&&9*i>=100)
output(b,i); }
}
==============================================================* F X# V/ ^: k- X* s; D" @
【程序82】0 {$ F9 l( i" y1 `
题目:八进制转换为十进制+ A, l$ m k. L+ Q* {* \
1.程序分析:
2.程序源代码:. Y6 b* |: D+ K& w8 m% z( p" w
main(). d8 I- Q3 R- s4 l# G, b
{ char *p,s[6];int n;3 |& F* h; b' b% x
p=s;( [) Y' I" X- u+ m1 F8 j
gets(p);) r" u0 |4 k1 |
n=0;# ]" u# E5 `) k- r( X
while(*(p)!='\0')
{n=n*8+*p-'0';
p++;}1 ], }8 {3 R( V8 E) y, Y( a
printf("%d",n);, o1 P& C1 }6 m4 [. N1 u
}
==============================================================( e# A) T* c, }5 L0 Z
【程序83】, | Y0 } {6 q! V- z* ~
题目:求0—7所能组成的奇数个数。
1.程序分析:
2.程序源代码:
main()
{
long sum=4,s=4;; X) U* M2 D, R& n8 @. v& D+ Z+ N7 g
int j;
for(j=2;j<=8;j++)/*j is place of number*/
{ printf("\n%ld",sum);
if(j<=2)5 t$ G. c0 G; \- k: d$ a
s*=7;& l$ G1 X9 Y, c
else4 c# p* @; p9 r* M8 l
s*=8;
sum+=s;}' k. s% z& b2 B5 f
printf("\nsum=%ld",sum);' C+ K* C; G0 o& R5 G8 G! H9 g
}. b8 Z- p! q* @4 G
==============================================================4 _. L E4 s. U2 c3 c {+ x2 Y
【程序84】5 P1 R/ i! F3 B% C" k6 _' ?
题目:一个偶数总能表示为两个素数之和。 p8 n9 n9 ?. P) L q1 R
1.程序分析:
2.程序源代码:0 V" i. U5 m. P( T
#include "stdio.h"
#include "math.h"
main()( h- K" i( j6 r( K2 I" i
{ int a,b,c,d; J' \: m. Y9 Z1 e: {
scanf("%d",&a);
for(b=3;b<=a/2;b+=2)
{ for(c=2;c<=sqrt(b);c++)" N7 z7 c& ^, q) p& ?) x( l
if(b%c==0) break;
if(c>sqrt(b))
d=a-b;0 G3 ^, e" X. j2 D) m
else) V* o* l' q6 H# D; p r [+ T
break;& a$ M. X, |- B! e. y7 C) k
for(c=2;c<=sqrt(d);c++)3 }' C# |4 _1 O, k6 R: Z% Y
if(d%c==0) break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
}/ e4 v8 m7 o& I3 p3 M$ @1 m
}
==============================================================
【程序85】
题目:判断一个素数能被几个9整除5 ?: a: e# P7 B% l
1.程序分析:
2.程序源代码:0 u) N4 j0 Z7 F# B
main()
{ long int m9=9,sum=9;1 {4 u6 a* `% g$ j' k9 z
int zi,n1=1,c9=1;
scanf("%d",&zi);
while(n1!=0)
{ if(!(sum%zi))
n1=0;
else& P0 G7 Q7 H: P) C. v+ M
{m9=m9*10;4 ], h0 W3 j& C" w4 y
sum=sum+m9;
c9++;
}5 K' D R2 a5 }; @+ b" Q
}
printf("%ld,can be divided by %d \"9\"",sum,c9);& c0 o$ h/ F2 Z# N; c: Q& d
}5 C3 H6 z! M N: Z: N3 f3 Y
==============================================================0 t" P6 z( b3 H9 n
【程序86】
题目:两个字符串连接程序
1.程序分析:9 T+ r, u( ]" K% o) }7 }2 g" r9 v- P
2.程序源代码:2 z* J! Q% ]2 o+ o( Q# Q
#include "stdio.h"" o- w. ?( R- e; {2 M4 R1 \/ E* g. K
main()- s- ^2 E. ~) }, U6 f
{char a[]="acegikm";: ]0 d: _) q* t2 k. f% D7 q
char b[]="bdfhjlnpq";
char c[80],*p;
int i=0,j=0,k=0;! z( }: `3 \3 {& A4 R3 L
while(a!='\0'&&b[j]!='\0')
{if (a3 Z0 F+ Z4 n, e G9 t5 E
{ c[k]=a;i++;}
else, `+ e5 u4 a' P) e# _6 i
c[k]=b[j++];2 n! M1 [9 [- |6 Q
k++;
}
c[k]='\0';" H7 h! ]6 { W. ]2 `! u2 A! @; |
if(a=='\0')& D6 h3 i4 ^' j
p=b+j;
else
p=a+i;
strcat(c,p);
puts(c);% r6 w7 v, B; R: T0 i9 y
}
==============================================================( r8 K) n6 Q1 k, q3 n. U
【程序87】
题目:回答结果(结构体变量传递)1 ^8 @) s, V& @
1.程序分析:
2.程序源代码:* o$ y% c( Z I, B9 a! y5 Z
#include "stdio.h"
struct student' R0 q, z( [! \+ E
{ int x;+ k3 `0 x- q5 Y& u6 G: J
char c;
} a;3 Y' \5 k0 h6 a# l; S
main()
{a.x=3;
a.c='a';
f(a);
printf("%d,%c",a.x,a.c);9 t# a, A6 s; g7 a4 l: U
}7 u; s- ^: G% m7 |2 V
f(struct student b), Q& X7 n1 c8 F8 \" d5 u/ Z; T+ I
{
b.x=20;
b.c='y';
}
==============================================================* ^/ n4 j/ P: O3 N' U
【程序88】
题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。. F$ i3 @; v9 y+ n) w2 X1 A
1.程序分析:
2.程序源代码:
main()4 }( l6 W& y1 A) j- B
{int i,a,n=1;
while(n<=7)( H( U* o# M) ?3 M' K
{ do {
scanf("%d",&a);
}while(a<1||a>50);
for(i=1;i<=a;i++)
printf("*");
printf("\n");
n++;}
getch();
}
============================================================== \5 U. U$ L3 O1 M+ Z
【程序89】; g% q$ e1 b! q$ ], S( o3 P- l
题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下: O$ a8 M( N7 H0 n1 M
每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。, L1 o" i( t2 B2 q4 y2 b5 o
1.程序分析:! W. j, I. C$ r' x
2.程序源代码:7 D }8 h7 ~6 ~* ]+ p! f
main(): T* B" }& ]& h" [
{int a,i,aa[4],t;
scanf("%d",&a);4 L5 K4 i+ J: Y F, }
aa[0]=a%10;
aa[1]=a%100/10;3 j, d$ Q. U7 p8 ?( `
aa[2]=a%1000/100;6 M7 J" P: k( b: R" \( {
aa[3]=a/1000;
for(i=0;i<=3;i++)
{aa+=5;. f2 G" ~5 O& H% R) x) T
aa%=10;
}
for(i=0;i<=3/2;i++)2 b" ]6 m8 |6 b
{t=aa; ?0 ]3 a" P2 C9 M f, E$ M0 C
aa=aa[3-i];
aa[3-i]=t;
}: g! z- c' [2 X7 c. I l7 m& Q, J
for(i=3;i>=0;i--), x- z2 f3 B3 N0 ?5 V% |/ Y5 q
printf("%d",aa);' N3 s8 g- s7 m
}1 i" R' X' M* p" t* f: V0 f
==============================================================+ C4 A' p1 q9 \
【程序90】
题目:专升本一题,读结果。* l, R; h- ?) W1 }. P' [" z
1.程序分析:
2.程序源代码:
#include "stdio.h"
#define M 58 r W" Y% a* G1 q, A
main()
{int a[M]={1,2,3,4,5};9 c1 v" v8 T9 x- `1 X' i
int i,j,t;
i=0;j=M-1;
while(i
| 欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) | Powered by Discuz! X2.5 |