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