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