|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
$ @/ b [! {7 }" X: q1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/0 }6 N; q% }. d. t% ^, j
#include "stdio.h"1 V" {+ H% w7 t( ^- i6 g
main()
5 `! j9 v( @: [4 ]: ? X1 n: ^{int i,j,result;. M, }. ^, \( D R
for (i=1;i<10;i++)3 Y$ @, h) {( s5 `9 E; B9 Z `
{ for(j=1;j<10;j++)
; L. i, h/ i: ]% h/ W8 _ a {
. G4 F5 V5 E$ l+ S+ S8 P# _2 ` result=i*j;
j0 q9 X- |& U M printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/* `8 J4 g6 k) I7 w8 |: j x. n/ c
}" I9 C3 ]8 T1 M( I
printf("\n");/*每一行后换行*/! ?: f- ]" j' ]
}
" D9 V3 w! @3 y$ H}; [; v! P1 E o; ]1 i, L1 J+ A
+ q J- _% ]7 c! h2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
8 T2 S& Q$ @9 M7 M- r, o& b" o& @兔子的规律为数列1,1,2,3,5,8,13,21....*/- j5 j7 I- ]% v8 V0 F( _5 C. B+ B, }1 x0 H
main()6 }5 p" l, b0 ^3 U' X# p$ ~
{7 [% [; ~% [! ]
long f1,f2;) k( _8 q6 }4 p* M. i) @
int i;6 Q$ r) u C/ a, u( j" f
f1=f2=1;
" a: t& R `& C% V4 ]( B3 ifor(i=1;i<=20;i++)& d$ @) B( s0 G1 J7 B- u0 n8 k
{ printf("%12ld %12ld",f1,f2);4 X4 s% e; r0 k4 a: d- e
if(i%2==0) printf("\n");/*控制输出,每行四个*/
1 P% }5 Z; U0 { f1=f1+f2; /*前两个月加起来赋值给第三个月*/2 ?* q2 [# v, c; c4 T7 Z9 a9 `
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
( l. J, R, l, J$ d }0 B2 s* E4 m$ B8 W
}
2 r- t6 H) Z7 b: ?& [* d" G, u, ]6 A4 x1 k
3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
3 \2 m1 D! L; n* R程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
' k0 ^- `' D! _8 ` 则表明此数不是素数,反之是素数。*/
7 e6 P6 D, @4 T- _#include "math.h"' P: K8 R' _7 s1 n1 z0 U6 O! u
main(): U5 u7 M7 j4 b" g* z! \
{
, i$ g- }% u% W- Iint m,i,k,h=0,leap=1;8 K. {' \ n" u. u1 h' h
printf("\n");
1 | C8 E) i, D! r/ B# mfor(m=101;m<=200;m++)- }: Q% Y7 T1 Q7 W
{ k=sqrt(m+1);
' t, h: l7 H; g, T; ?0 V for(i=2;i<=k;i++)
' E. W. |4 o# R if(m%i==0)$ L6 L% M) Y; }6 _' G" T" }5 `/ B
{leap=0;break;}
) _1 C) H: r8 o8 }4 I9 Y" V4 ]2 }) p if(leap) /*内循环结束后,leap依然为1,则m是素数*/ A- Y* P- }+ R1 f
{printf("%-4d",m);h++;6 ~) N1 I8 m8 u% `1 o; ~4 Z# }% C
if(h%10==0)/ p7 {% v1 z8 k" z% z6 T
printf("\n");7 f0 c. [$ ?' G: x* d+ G( O" M
}" H7 o( y- D" v3 j6 n0 J. }9 ?) V) E
leap=1;
. i8 c) ?# s4 c* f& I# n }# `) s9 I: b, r, n. s* D, z! u1 B
printf("\nThe total is %d",h);
; |( j$ i% y+ {9 [) A( `% Y}' z( z4 u( d: F
; |5 [0 B. B6 \6 j4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程! ~. Y1 g+ Z. W3 W' p7 Z4 h
找出1000以内的所有完数。*/
8 v" D5 e+ V9 h* M s/ Wmain()
! J* @, B6 u% C{
* R6 _* z4 \( ~$ Astatic int k[10];. o) g% y& F& W) x
int i,j,n,s;
$ f4 s( f( x/ v- kfor(j=2;j<1000;j++)
$ q3 I [1 {7 c {
6 b7 s( p k+ r8 @ n=-1;
y8 D' v- V3 j6 l$ J1 b. _% R s=j;
" {7 @6 i" S( ] t; i3 S for(i=1;i<j;i++)6 y) ^' {# G) J4 C# a3 V x
{if((j%i)==0)9 ]/ \: N+ n& a- V( [9 z- p
{ n++;* L c( g7 u% G( D" K. ?9 y! Z3 G+ q
s=s-i;
' [ i$ A2 _1 F: D k[n]=i;
- ]2 H2 ?: H# b }
6 }% Y' r& W! F& Z2 ?4 E( I! T }# p4 U% D4 b5 ^3 G
if(s==0)
5 Q* m) ~( H& D9 K7 ]" N- p# ~ {printf("%d is a wanshu: ",j);& E0 r8 I+ n8 d
for(i=0;i<n;i++)+ ^, V6 Q/ m' R: x$ \
printf("%d,",k[i]);1 j, C/ y3 }% o
printf("%d\n",k[n]);
' G6 L$ C# Z8 ^' M/ O1 c }+ ?! G7 |# [1 Q- c) E6 i
}( A# m& N- @6 |4 [
}. }5 O' s) J+ t) Z0 ?
% ]6 ^- B# w1 T E5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,4 { |, q( i3 n
请在空白处完善程序。*/$ t* R- Z+ j2 }
main()$ L$ z4 q7 R9 E& o
{ int a[4][4],b[4][4],i,j; /*a存放原始数组数据,b存放旋转后数组数据*/
. D! I& K% [/ V$ k m) t0 k! X printf("input 16 numbers: ");
. G! W! `5 x; u u% M/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/: |) X& r+ K+ t! x; R
for(i=0;i<4;i++)% f; @& z9 M- \' U9 A
for(j=0;j<4;j++)
3 ~# ]. ~* j2 ? { scanf("%d",&a[i][j]);
; F. L7 d: \3 c1 F) X b[3-j][i]=a[i][j];
- }9 K2 e9 ~& e+ `7 O0 |2 d- G }
. }3 K# g' S9 Z8 f- y! G printf("array b:\n");7 h0 v) p8 z+ e% y1 a
for(i=0;i<4;i++)
8 k2 X( r2 u$ Y& Q# Y. S { for(j=0;j<4;j++)
" O2 Y, w6 _: P4 w printf("%6d",b[i][j]);+ M! V/ w/ i. w9 X/ w! P, {: F" X
printf("\n");
: u1 \4 }0 v5 U0 W8 t/ |8 b }
4 ]: L5 m T- U8 F}
$ `; Q. e& d; y8 G; k, Q
" n8 j( M* c: u) j# p6、/*编程打印直角杨辉三角形*/
+ f+ J1 R8 j O" Q: k8 r7 Imain()( U: f4 C% ]* |5 S M' i* b
{int i,j,a[6][6];9 p+ F5 Q' ]! A0 ?# X
for(i=0;i<=5;i++)! k/ [/ b+ O5 W8 v. {- Q
{a[i][i]=1;a[i][0]=1;}4 ] F1 p+ l' E4 z
for(i=2;i<=5;i++)/ O3 ]1 H0 J& V4 b
for(j=1;j<=i-1;j++)0 V' ]2 j, I, ]0 V& W
a[i][j]=a[i-1][j]+a[i-1][j-1];
3 Y3 o* O1 v4 j& Dfor(i=0;i<=5;i++)2 [% E- b+ g5 l( P
{for(j=0;j<=i;j++)
+ H) j$ m/ T5 N6 s. A& P1 Q/ _) j- V printf("%4d",a[i][j]);2 O4 G& A5 Q; t& F% a/ F1 n7 y
printf("\n");}- @$ m9 P) M% z& P; z0 ^8 G7 l
}
* q) Y1 K8 ^2 H) g6 `/ u. Z3 r7 X, t6 g! [6 c
7、/*通过键盘输入3名学生4门课程的成绩,
+ n5 }6 V% i' R( o分别求每个学生的平均成绩和每门课程的平均成绩。9 u7 c( _6 n, }; N, K
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车
8 m5 z w3 E: e y6 j# t/ {* d' s- H9 P其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/
& p3 d7 ?& ~; t) K8 t, M( b" M#include <stdio.h>! D) \. V8 } {
#include <stdlib.h>
6 G. N9 J, M1 g6 Y! q2 H3 M5 {" mmain()
G8 ~. Q0 X) W m{ float a[4][5],sum1,sum2;
. c# u# ]4 ^; o0 _/ _0 jint i,j;
1 V a9 V$ o2 Z& H" r4 w1 Jfor(i=0;i<3;i++)
. B# D k: @) j# Q7 A& e for(j=0;j<4;j++)
* r, i- A: B W scanf("%f",&a[i][j]);
5 R& y' u; W9 u: |5 Afor(i=0;i<3;i++)8 V4 {! D8 y" }% g7 R
{ sum1=0;& ?; k: ^. P1 c/ C9 n' t
for(j=0;j<4;j++)
* l5 ~0 H& u" B) W$ q/ N1 Q4 e sum1+=a[i][j];$ l- `" \4 n" i+ C8 ]
a[i][4]=sum1/4;7 K5 D- C1 |2 b4 g3 r' c
}
; F2 Q3 W. T0 I8 q3 Zfor(j=0;j<5;j++)
8 ]1 Y, m; l& U' h0 s4 k8 W4 R* p{ sum2=0;
+ o1 t) G1 R b) k for(i=0;i<3;i++)
* [9 Q1 V, x, g% j sum2+=a[i][j];
: ~! D1 r, u) {( _ a[3][j]=sum2/3;$ @, b! H! c k0 i% `! o
}
. t2 |6 ^ ^% L$ _) X for(i=0;i<4;i++)7 ^( ^3 b4 a6 m$ l0 l! r
{ for(j=0;j<5;j++), A: F: o7 I+ i: e' f( j6 y8 q- U, x
printf("%6.2f",a[i][j]);
( P/ \: y" {/ E printf("\n");: H- P6 l/ v1 R( k2 F, `
}
& ]1 S1 J. X8 [5 ?/ S. ~5 o}/ u' L [; L5 T- Z) o0 l
6 _* w: f+ }1 J, W, G R7 q8 a8、/*完善程序,实现将输入的字符串反序输出,
* z% `: \: N% v如输入windows 输出swodniw。*/) c" H% k) g- S2 O m9 i- Q
#include <string.h>4 y, s: J! a: y+ d# C% P/ x
main()
" T( \) |( L6 s1 L( X5 O2 _% E{ char c[200],c1;
! V' p! ~2 L% J; `: B( w% n int i,j,k;
# C3 G2 J8 F1 _2 a! E9 u printf("Enter a string: ");
9 [0 ^7 l7 s+ |, i; ~7 c scanf("%s",c);
2 I9 V" h4 R; C9 t, m/ ?8 n k=strlen(c);, v3 g6 L1 f) g
for (i=0,j=k-1;i<k/2;i++,j--)! R# l* P* ?1 E+ t/ b* v' M. Z
{ c1=c[i];c[i]=c[j];c[j]=c1; }
" t' g* X' [$ \3 u2 e printf("%s\n",c); / x2 m! O2 x+ H( `
}
9 J5 H' E! i7 b% n指针法:
3 H- H2 b! s+ k) \) O8 O) }' evoid invert(char *s)/ y- C# J# _& p
{int i,j,k;
' i# M3 y( i4 Lchar t;
0 t4 V6 [+ ^) J* w& ]( fk=strlen(s);
: c; _+ q" x3 M1 I% w4 q/ H% ifor(i=0,j=k-1;i<k/2;i++,j--). N) E% ?( A' F/ `, V5 Z3 v
{ t=*(s+i); *(s+i)=*(s+j); *(s+j)=t; }
6 c8 H& X* w J7 r}' T/ b/ D6 E! o2 S2 j% a
main()
8 y7 f& \: s! g. D5 s+ B. f{ FILE *fp;
3 h ^9 O' w* S2 C9 X( [0 L char str[200],*p,i,j; h/ o7 m% B5 O6 C) \
if((fp=fopen("p9_2.out","w"))==NULL)
8 ?0 }$ G7 I- n) u4 _2 G4 Q { printf("cannot open the file\n");2 ^. r0 W; M E% A, K4 s) [+ [
exit(0); 6 v" [8 Y' W; S. _
}
6 N* \4 }# s, o9 J$ Z1 {0 K printf("input str:\n");" f5 O8 g) s9 [7 v' a2 u% W
gets(str);
4 m3 T1 g* i, w7 z- ]! q printf(“\n%s”,str);
$ l; l) \0 a# u/ \# ?5 Cfprintf(fp,“%s”,str);
; B1 s2 B" D1 Y) B4 Ginvert(str);* _4 ?4 {5 o- @' h
printf(“\n%s”,str);8 U3 x b6 B l: J$ \/ W
fprintf(fp,“\n%s”,str);
9 z/ i% D! x( Cfclose(fp);
- ?( q" J8 P4 r- O+ d) G( t}
& T2 A3 ~# C4 `, r9 v1 ]- b9 E: \4 }
9、/*下面程序的功能是从字符数组s中删除存放在c中的字符。*/3 h1 x. X# l* u* }9 y
#include <stdio.h>1 R3 V7 q' [4 @" H8 \6 G
main()
8 [( }4 k+ M1 U8 p1 I. t5 u4 k{ char s[80],c;: P8 j# l# w/ l3 B, t1 c
int j,k;' |2 O4 P8 r" u0 ~' v: W8 Z5 q
printf("\nEnter a string: ");, n. c% g" {# \/ C2 w( `, v5 x
gets(s);$ L- G: L9 g* B: ^& P: e8 A
printf("\nEnter a character: ");& q0 s1 i, [" ~+ u' ?# r
c=getchar( );
; S1 M# j E1 ^* _ for(j=k=0;s[j]!= '\0';j++)/ o& Q) f/ ?" @9 w- T
if(s[j]!=c)( e4 k& f! [# _6 D/ A8 E0 t
s[k++]=s[j];
( ^6 G& @; K, O s[k]= '\0';
8 z8 C$ x$ P0 |; {' x6 B! }% i printf("\n%s",s);' P% Y; Y( y% ?! P g7 ?) Q
}
* F3 F: Z* W3 H5 Y( f s5 ]8 g; P( ?& d
10、/*编写一个void sort(int *x,int n)实现将x数组中的n个数据从大到小
0 o7 U; d0 _2 h8 w1 I! O# u/ n排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_1.out中*/" C6 Q8 o! B+ X. F
#include<stdio.h>
( w( T2 e7 r" W" ^5 Mvoid sort(int *x,int n)" p# r+ z6 }3 [3 I9 _) n
{
' b; H6 Z) U" Vint i,j,k,t;
$ @5 X; R7 V/ K. L& U1 mfor(i=0;i<n-1;i++)
8 p. X. a: [: i" N2 p, e/ ?) M" B{9 _- s+ S- q$ l" D* [2 {; N: L
k=i;
, a5 S( ~4 c$ Bfor(j=i+1;j<n;j++)) j: L( B% D; k( | b
if(x[j]>x[k]) k=j;9 ]+ n+ h7 l+ L9 n! l9 l% R
if(k!=i)! |( \+ I7 ?% f6 M
{
' b* O) p) i. o t=x[i];1 |7 o( o# G; ?7 O& i' d7 ^: M. [
x[i]=x[k];9 n' S% H3 C* h: N7 ]4 M1 j0 H4 D
x[k]=t;
. B& ^, q G8 @; ^1 ?+ ^; b }
0 R1 f5 \- m$ g9 z6 L, K}
4 R& ^' N) e* j' ~4 t f}8 f; P, u: G2 W [0 {: G8 N- f
void main()
; n+ G' P2 g9 } V1 ?2 W{FILE *fp;1 H- S8 g' T" S! C
int *p,i,a[10];
) ?: }6 G, B6 z3 B fp=fopen("p9_1.out","w");
; ?) W) j/ b8 q8 c$ }' @ p=a;
4 V& \ |! a3 G, b0 c/ dprintf("Input 10 numbers:");+ b7 q: _) _0 L( r; ?1 H0 q8 U
for(i=0;i<10;i++)9 g; C% ]+ ~0 o: f) T' @
scanf("%d",p++);& b( a* Z5 o1 A7 e
p=a;
- H: q7 c u6 ^ e: Y3 L& Tsort(p,10);
8 \" Z: X( D5 h& y3 J ^( n' ofor(;p<a+10;p++)
: `, d1 B( m! r0 e' C, [- Z{ printf("%d ",*p);
; {2 [% u, s. {5 v2 I7 u fprintf(fp,"%d ",*p); }3 p' g/ a$ ~2 f W+ u+ [
system("pause");
. q+ ]- ^" Q# L fclose(fp);
5 f2 s6 {2 z0 g9 y) K2 r}0 S9 M0 ?; O/ V/ E# _6 D8 i2 v
4 ~4 l, d) O7 U4 w8 g. U
11、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列*/
# [8 Y7 l# Q, t main()+ D/ n: i- R! Z/ d
{ int a[10]={0,12,17,20,25,28,30}; /*a[0]为工作单元,从a[1]开始存放数据*/0 i1 T6 O5 Q5 I' m' ~
int x , i, j=6; /*j为元素个数*/( ~4 U1 ~" }% w% V2 `8 z
printf("Enter a number: ");
* k3 s5 i# q0 K. p scanf("%d",&x);
# t7 e! |0 x. M a[0]=x;8 R F1 p- `- k% l. I: w
i=j; /*从最后一个单元开始*/ Q9 W# E: @/ a- i1 d6 e
while(a[i]>x)
% [2 V0 b ]' h. t3 T: ^" w { a[i+1]=a[i]; i--; } /*将比x大的数往后移动一个位置*/' o. S$ {% }* h8 t, y. q
a[++i]=x;
' f# t5 `. v- {* ^ j++; /*插入x后元素总个数增加*/
$ n; q7 F6 U+ `3 H, ]& X for(i=1;i<=j;i++) printf("%8d",a[i]);
* A$ p' `! \( l0 n% P. x printf("\n");7 V( u4 g% K: u7 u
}
: c- R0 M# S4 ~- T" y! I! j. t7 f$ D- Z9 Z) o! h
8 K# \8 H! L m7 n
12、/*编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件p10_2.out中*/, m _# S* g2 J9 k
#include<stdio.h>/ Z/ t! b2 K2 ]# Q7 P& C
replace(char *s,char c1,char c2)# \/ \$ Q* n, R) o
{ while(*s!='\0')( Z' M, E# h/ ?# M
{ if (*s==c1)
" d% h/ a: L/ O) l8 N9 f *s=c2;
) h& ^! R9 `1 G( u) s s++;1 _0 G$ K- R5 B3 Y+ r. s; z
}1 E# @) D7 }9 G9 U' Q7 P# ?
}5 ~/ N" }# [: U" x" W
main() x0 n* \% U$ I+ c. Y# h5 V" j
{ FILE *fp;
6 u7 u1 } N O$ Vchar str[100],a,b;
J% R5 l u* f8 h if((fp=fopen("p10_2.out","w"))==NULL)
4 t6 W0 m; I# c J { printf("cannot open the file\n");
' y i/ X1 J# T8 ?" ?0 N* D/ c exit(0); }8 A1 Y( d! |& ?6 M4 m
printf("Enter a string:\n");
2 G {8 h8 b3 o3 ] gets(str);
' r5 n2 B9 Z0 N; { printf("Enter a&&b:\n");. M8 p2 \$ D- B; N
scanf("%c,%c",&a,&b);
( I' j3 x! B j( Y4 K `printf("%s\n",str);" {& s+ m8 C. m6 e
fprintf(fp,"%s\n",str);& g+ P1 t! \3 V9 ~0 [5 P
replace(str,a,b);# V& C+ _, M j7 f4 B% s
printf("The new string is----%s\n",str);8 [0 ^2 m9 s+ V
fprintf(fp,"The new string is----%s\n",str);
* |- L. u/ Z+ U) L* B" ~fclose(fp);" [, V& a! f6 A
}
6 O8 z T2 I& n0 f$ X* r# q5 X* n3 m! T" a) G
13、/*在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置 L! g& E+ p. E( t8 I
,不存在则返回-1。*/- d, k! I1 k3 ^+ q- |
main()
7 A- y! d' R7 ^/ O: S{char s1[6]="thisis";char s2[5]="is";
5 J5 ?+ b: `' w2 X+ A* s; ^printf("%d\n",search(s1,s2));! y- [ J4 M/ g% a; M& X
system("pause");! p0 k3 G Q' a
}
/ i; _% P, v0 J& G' Lint search(char s1[],char s2[])
o! A9 R& s M2 M& L{int i=0,j,len=strlen(s2);& W. p6 m& b- i. O2 O
while(s1[i]){1 E7 _* a5 H9 Q0 T5 }
for(j=0;j<len;j++)) O% q; S2 W+ f8 d! Z) p0 G) ]
if(s1[i+j]!=s2[j]) break;
$ }% O( N3 a- qif(j>=len)return i;
/ d7 t; p7 J" ~, j- ]else i++;5 `3 P8 y4 F D( x
}
% U+ }* N3 w4 Z: e+ {4 S% Ureturn -1;7 V8 @; t2 m3 l t
}
# t% {; Z4 G* q+ ~
. V/ {! v" K/ e, w1 C4 ?14、/*用指针变量输出结构体数组元素。*/
1 p/ r5 S- ~& tstruct student0 `/ U$ G8 _! [: U4 M! U
{
# X, ^8 L0 m6 W) ?int num;! L e0 |- a- u+ l. q6 ?
char *name;/ y7 w7 F R5 B f: B
char sex;
. L- i- b; A% I' uint age;9 k6 I" _+ Q( X$ t
}stu[5]={{1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou",'F',19},{1005,"Wangming",'M',18}};
* v" ^' V& L6 E' B& Zmain()
4 Z% Y/ D2 H+ x$ U3 \: ^" W{int i;. a, v3 z9 O/ q$ s6 w: E
struct student *ps;
7 u% g+ m6 N: Uprintf("Num \tName\t\t\tSex\tAge\t\n"); 5 V3 {( {. Z5 U5 W' U- ?
/*用指针变量输出结构体数组元素。*/* Z- _; [+ Z" S) ?! S$ M o
for(ps=stu;ps<stu+5;ps++)) M3 }+ [% X+ ~3 i, `
printf("%d\t%-10s\t\t%c\t%d\t\n",ps->num,ps->name,ps->sex,ps->age);8 J+ n- E9 w9 T& C% C
/*用数组下标法输出结构体数组元素学号和年龄。*/7 y$ ^/ b+ \* G7 Q( w4 n/ G
for(i=0;i<5;i++)) z5 R% \7 c1 D. {2 G6 W
printf("%d\t%d\t\n",stu[i].num,stu[i].age);" g9 T& t- _& ]; Q
}" J5 K0 n; K; _
+ l% ?7 { q5 o2 H
15、/*建立一个有三个结点的简单链表:*/4 H: ?: E7 L J7 f! @! d! ], d
#define NULL 05 [ j& t1 y/ q! I& Z0 D
struct student& ~7 b" ^: y& n+ X! R
{
2 e8 v3 R, H% o" @9 Y8 i: wint num;& n1 w1 e& G0 M
char *name;$ y2 q& u9 D" B/ A: _" k1 O
int age ;
0 U3 ~9 |2 D& D1 {6 I7 ~: C, h* estruct student *next;/ i% a% D ?- W M D) U
};1 @4 z& u, D5 e4 X4 u
void main()
0 R5 u( Y+ a# S1 O( t4 A{
/ k- k$ F4 i. o& f8 ^# ~7 fstruct student a,b,c,*head,*p;% u$ h8 {$ E6 |; ~
a.num=1001; a.name="lihua"; a.age=18; /* 对结点成员进行赋值 */
4 ^( Q: h8 G4 h5 U) k: N: Rb.num=1002; b.name="liuxing"; b.age=19;
/ _1 F5 O" x+ @) z. w/ h- xc.num=1003; c.name="huangke"; c.age=18;
0 S1 f' X9 w, q, ]head=&a; /* 建立链表,a为头结点 */" Y* W9 l$ [/ l. k$ @4 d
a.next=&b;
0 {& Q) r* B" s3 K# Mb.next=&c;
, ^0 x" z, K+ @, e" z; Fc.next=NULL;
R1 s8 l( s/ l* s( Np=head; /* 输出链表 */. S( [& b9 ]! B7 L$ z
do{
$ ?+ L0 D9 l# e$ \( Cprintf("%5d,%s,%3d\n",p->num,p->name,p->age);: W# @# y/ p e3 z& s3 {
p=p->next;. S3 s" p- L( j0 H. v2 b
}while(p!=NULL);
4 o* @ ^) C" H5 O3 B! J}
8 z9 V! s: j4 k4 O2 X+ h
" Z! U# b7 W/ c! O16、/*输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。*/) x1 T7 S- j4 H0 D: K" N! o. W4 @
#include <stdio.h>" n; u# s- j9 S: q+ `. D! y: J
#include <string.h>( e) y$ b/ ~/ a; I
#include<string.h>
6 w- L) w8 p# b9 omain(). ], K! D; B, ?" Q0 W
{ char s[100];
: E- W) f# E1 ~+ zint i,j,n;
1 \5 C0 B1 T" A5 q6 | jprintf("输入字符串:\n");
+ H+ p: W! _+ r5 U. X# Agets(s);, e2 @8 O* O M) ~/ ~1 w `" H9 Z
n=strlen(s);
" Y. P& C, ^- q( d% Tfor(i=0,j=n-1;i<j;i++,j--)
; ?! C' N2 N& n2 w9 M if(s[i]!=s[j]) break;
( N: ~/ X! ]* T1 r& C: `if(i>=j) printf("是回文串\n");$ k6 n4 W R5 o7 {# s9 I5 T: b
else printf("不是回文串\n");- ~: m/ \9 I$ Q# E
}" r4 ^8 M9 I0 w$ O" s. ~
/ O9 V* K% D% \
17、/*冒泡排序,从小到大,排序后结果输出到屏幕及文件myf2.out*/
$ S/ F8 W3 d( ?% u#include<stdio.h>
" }# f: B+ |: m* X$ N' gvoid fun(int a[],int n)) m; ~5 {6 n0 I( _3 y
{int i,j,t;
0 y' K' M" w5 }- S- wfor(i=0;i<=n-1;i++)# ]' _+ R! ^' O$ r5 c2 m
for(j=0;j<i;j++)
0 c2 l( h9 q/ C8 E# o9 ?* r if(a[j]>a[j+1]) {t=a[j];a[j]=a[j+1];a[j+1]=t;}
. v1 Z$ P: L: X$ N) N}. H# o: I0 ~( E. l$ d* f6 q
main()
X; `" s3 |5 p1 C2 Q1 E{int a[10]={12,45,7,8,96,4,10,48,2,46},n=10,i;8 q9 X ~( O9 G
FILE *f;
% N' ?. |& D; |9 Sif((f=fopen("myf2.out","w"))==NULL)
6 h6 C% y" s- {$ {* l9 N1 z- [ printf("open file myf2.out failed!\n");+ j' w4 a, l9 P+ n
fun(a,10);" L5 f( }: m* X1 w' Q7 S
for(i=0;i<10;i++) _4 Z' X4 H: D1 p. V5 U
{printf("%4d",a[i]);* m3 _; J+ F$ m1 g" l/ x/ W
fprintf(f,"%4d",a[i]);2 U4 R7 ?- S* L6 p; R
}! l9 A: q. h( n8 T0 k m8 J, W
fclose(f);
2 t ~; L+ y3 V* _. `}
5 l/ K$ m+ N# t- K, T9 ?0 [. Z1 C! @2 B6 C7 D- `3 O' |; m# L' _
18、编写函数countpi,利用公式
9 B' ?6 I/ P9 s, J# f* A
+ g1 [+ _9 L3 v7 E 计算π的近似值,当某一项的值小于10-5时,认为达到精度要求,请完善函数。将结果显示在屏幕上并输出到文件p7_3.out中。
( D" Z; \. ]8 ?' e$ q8 O#include<stdio.h>* Y o. N: P' c+ r. c2 u* s
double countpi(double eps) /*eps为允许误差*/
+ E6 P9 ?0 ]/ N2 a/ [, U4 ~$ L{0 K1 o$ T+ u* E' E* e E, r
int m=1;3 t9 ~) ~( Q Z* N
double temp=1.0,s=0;+ o+ Z' }5 x" R% f; d
while(temp>=eps)
' M3 f+ T2 v; t0 K6 o9 X { s+=temp;
* P" o; S1 y/ p" q7 i- t temp=temp*m/(2*m+1);' `1 _ R. R1 O9 Y7 y# o
m++;, Q# Q: C0 J& R |5 c9 f/ B
}
4 K: d. Z+ y; U! T5 G6 f return(2*s);
9 ]* J. k7 q' ?9 [8 A}) c0 T% k7 l' @* L. {% f
main()
3 L+ M: `4 ]& m4 @& q2 F1 S{FILE *fp; Y3 m" `# \/ K6 \2 I" g" J
double eps=1e-5,pi;0 u- S! Q( v3 D1 V0 l! f f
if((fp=fopen("p7_3.out","w"))==NULL)
2 S6 i8 ^! n/ C' `) t { printf("cannot open the file\n");! S3 Z& e/ K! U/ y& @6 k; b
exit(0); 3 q" G3 X" l$ ?0 x# _+ |
}" T8 a! E; O/ V; P* D
pi= countpi(eps);
+ T' L4 i2 S/ q: ]1 B! H2 N printf("pi=%lf\n",pi);
2 O; B+ S3 l7 k/ L% @ n+ [fprintf(fp,"pi=%lf\n",pi);1 i, j) ]) t1 l5 s$ h2 F* ]
fclose(fp);
4 O; ?3 Y3 q* d" k, r} |
|