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