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