展望2011

编程练习——c语言编程题精选(11-20题)

上一篇 / 下一篇  2009-03-02 23:07:43 / 个人分类:编程基础

4y@^M)F011、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。51Testing软件测试网zt!p ?7g-^"t
主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。
51Testing软件测试网"m)F(e\.zhI
#include <stdio.h>
m0eW3jB)`h{9@7Z0#include <stdlib.h>51Testing软件测试网[U d/a8J
#include <time.h>
ZhjCB l_[ n0#include <math.h>51Testing软件测试网,Ks:c$mc
int array[128]={0};
51Testing软件测试网3`]4a;m1r ~W$n

51Testing软件测试网a[?#Oc

int SUB1()
\!b!cf(X+z4k;U0{51Testing软件测试网!D6j.i }x P
 int i,j;
y2l&S2f4]p1u0 int temp;51Testing软件测试网/G6i1[c/Q/|0Ju L1_
 for(j=9;j>0;j--)51Testing软件测试网Y:d;la X#nT:X
 {
;zGi6N#f&i5k#Fl{0  for(i=0;i<j;i++)51Testing软件测试网g't6a4X#l
      if(array[i]>array[i+1])
$j9L$wFk$s Sw c0   {51Testing软件测试网4Rn2O]`6Zoj+_ p
       temp=array[i];51Testing软件测试网#S/Fp;tM!X/W
       array[i]=array[i+1];
\ k6@!x){{#P/i Q [i%B0        array[i+1]=temp;51Testing软件测试网cs+^ E*dL`q
   }51Testing软件测试网4_ `7{kY&hn:N1tA
 }
,MCj+MyEt0 return 0;
8kjLI4W(W5Bp0}
51Testing软件测试网(b t%H){A0^7bX

51Testing软件测试网Fk9KI"m(jXEf

int SUB2(int integer)51Testing软件测试网uNt%r`
{
n'X]b4{D0   int i,j;
p&BU!TT(E"R@2mh0   for(i=0;i<10;i++)51Testing软件测试网[/m6Cs/A'~"SNP
   {51Testing软件测试网X]dd)Z#?w
    if(array[i]>integer)
J-y%u:i"B t,P$PW/y0    {
jY1i-\{'j0     for(j=10;j>i;j--)51Testing软件测试网5O1n4m,rB/M
      array[j]=array[j-1];51Testing软件测试网f#rZ7\/N V2K[
     array[i]=integer;
k+N9lKf)W Zz0     break;
#@0]X ]:W9r5`[8K0    }51Testing软件测试网!B9u4b2[#Go{
   }
W`XB8W5Rh/O0   return 0;
E?&Ej(Zlu Y LCb0}

,@fJZA0

2_^*GHb0void main()51Testing软件测试网0R5O\K3U$oA`q.P3M
{
x-{Q+].o,f0 int i,integer;51Testing软件测试网u-uq W3q @#L(O\
 printf("请输入任意10个正整数\n");
cw)eT2P Dhs0 for(i=0;i<10;i++)51Testing软件测试网q[;~HJ
  scanf("%d",&array[i]);51Testing软件测试网a"XgQt/v*C
 if(SUB1()==0)51Testing软件测试网 N5W/H6Z|N
  printf("排序完成\n");51Testing软件测试网-E[%sZ3s
 printf("请输入一个正整数:");51Testing软件测试网@-o2C2J`6Vs"B
 scanf("%d",&integer);51Testing软件测试网ch`-aNv%e.m
    if(SUB2(integer)==0)
7i#ao cm_Mh0  printf("插入数组成功:");51Testing软件测试网8ynm$?8f;D
    for(i=0;i<11;i++)
/QI&?-hQoM\0  printf("%d ",array[i]);
}2P r Y/`1p8ZU0 printf("\n");51Testing软件测试网@o e7[-y7i|{[
}
51Testing软件测试网 }9y0Ua.A4{#o

;ZD P~&n0de012、编写函数:(1)用选择法将数组排成降序的函数----SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数----SUB2。
)u Kbn e"^0主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NO FOUND!”。

ELyww i0#include <stdio.h>
R]"N"z*XN0#include <stdlib.h>
+T:m`8T&v A(g/}0#include <time.h>51Testing软件测试网Q IbuF0@(W8i
#include <math.h>51Testing软件测试网1w;B2G.o.g+D3H
int array[128]={0};
51Testing软件测试网{tJ$Q+pl6f

51Testing软件测试网A3F x|3Ps+~1?\J5R

int SUB1()51Testing软件测试网,E~$V&x)O
{
dzc D+P1Z-?0 int i,j,temp;
X_5f Hfq&h0 for(i=0;i<9;i++)
U9l NW9rI0 {51Testing软件测试网s,gg*X]&\&V
  for(j=i+1;j<10;j++)
5@Z!C-h~0   if(array[i]<array[j])51Testing软件测试网hqr,K|Em#vR
   {51Testing软件测试网4Hl!^_#?&VG w
    temp=array[i];
9d+K1K0t.Y_ @0    array[i]=array[j];
k @O+y#T0aq[ V0    array[j]=temp;51Testing软件测试网i,S0Kz,I`{'~
   }
+P n&y%U{D ]0 }
I4tq+X%R\0 return 0;51Testing软件测试网'@;Q#p ?T]'}`}+Y
}
51Testing软件测试网/zD LoS WM0v}

f$[+]A Tq0@0int SUB2(int integer)51Testing软件测试网\%O Z A"T-\4Le
{51Testing软件测试网'I m%]c4nVW
 int head,tail,middle;51Testing软件测试网)C;z K\zK0k w0o%~i
 head=0;
bt^S5eb5t U` n0 tail=9;
H,?h R2t+@ C*`+eI0 middle=(head+tail)/2;
N\gL~DA)b0 while(tail>=head)51Testing软件测试网 lT0Hs7~;^4[._#U
 {
:h3@2V8~ Qpe%I b0  if(integer>array[middle])
g/r"Q {KWW0   tail=middle-1;
f,`1Dae,M}0  else if(integer<array[middle])51Testing软件测试网h&["[fY'J3`C{
   head=middle+1;51Testing软件测试网O2X)UU7Xd \I
  else
B FWp-a^ fq k0   return 1;51Testing软件测试网Tz]6f@Dj(d}#z
  middle=(head+tail)/2;
*Hb(JCd^W e0 }
7EU z(j'N|^0 return 0;
"ceU-^mWz0}

5M$t#P.Q M)D[-Uc4D0

?(@FC~@/i0void main()
r+mtS\0{
?/WNW/}S o:D;s fH0 int i;
[Y-Ec+E7BMG1?t0 int integer;51Testing软件测试网*{ ?c!D WQ
 printf("请输入10个正整数\n");51Testing软件测试网4Y$T e+~w$?Yh m
 for(i=0;i<10;i++)
H|;n&n+B%Y!JR F0  scanf("%d",&array[i]);51Testing软件测试网:C3t"o*P)T
    if(SUB1()==0)
%is [2B2p S0  printf("排序成功\n");51Testing软件测试网+X8~ kF R/l0}s-Z
    printf("请输入一个正整数:");51Testing软件测试网C5Ldja6t9}i
 scanf("%d",&integer);
*K.N!FP`0    if(SUB2(integer)==1)
*[Tui7NV(e0  printf("OK\n");
K3^AogK$r0 else51Testing软件测试网"H [}9g [#_
  printf("NO FOUND\n");
%uH[4k1T%Vf*p0}

(I1e$X+w;^"i051Testing软件测试网tLB c+DZ%g

13、编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。51Testing软件测试网Z,y|w9{}T K
#include <stdio.h>
Bhg7J8?0?2o%[$r0#include <stdlib.h>
6e1`/Q&] SH0#include <time.h>
.W~J(a.i0#include <math.h>51Testing软件测试网kY:L!C6PEn
#define TYPE int

9T5Jp-d7N(Np.B051Testing软件测试网wP+]8E`-h,?

int rise(TYPE array[],int n)
ZcPrs0{51Testing软件测试网 ^,at"f3j v Vj%s
 int i,j,temp;
W9U1v+a"Teu5`0 for(i=0;i<n-1;i++)
j L DuM4T0 {51Testing软件测试网B bq/iR*Q
  for(j=i+1;j<n;j++)
5J(Eg}V z[0   if(array[i]>array[j])
2Ph-j"\'x;z_U!h0   {
C.l;X K'kNPlk6q+m0    temp=array[i];
M?L{ X'?0    array[i]=array[j];51Testing软件测试网"Gl ?Y4qmvsc
    array[j]=temp;51Testing软件测试网-j }7a Q[paWT
   }51Testing软件测试网;JhO#Yu'c:A
 }
|@)V|7lw'R0 return 0;51Testing软件测试网({H w2N-|L M
}
51Testing软件测试网@1Y*mA9S

51Testing软件测试网L"RK(i4iGx-J

void main()
-L B)^Jf)l0{51Testing软件测试网4| gNR7I}w
 int array_1[5],array_2[5],array_3[10];51Testing软件测试网%|htrx%~.h{/H2Si
 int i;
3_+O*[%E@`*V9rF0 printf("请输入5个整数(以空格间隔,以回车结束输入):");
kr`jj6LL0 scanf("%d%d%d%d%d",&array_1[0],&array_1[1],&array_1[2],&array_1[3],&array_1[4]);51Testing软件测试网W%~;kI,bh^y+x"?
 if(rise(array_1,5)==0)51Testing软件测试网 R+Eo%E}9M:q~
  printf("升序完成,排序后的结果为:");
6N,]]O#xC0    printf("%d %d %d %d %d\n",array_1[0],array_1[1],array_1[2],array_1[3],array_1[4]);51Testing软件测试网oxK'`d;k
 printf("再次输入5个整数:");51Testing软件测试网V&XM6n Ke~
 scanf("%d%d%d%d%d",&array_2[0],&array_2[1],&array_2[2],&array_2[3],&array_2[4]);
9?)I&a(X:w/DR1u5I0    if(rise(array_2,5)==0)51Testing软件测试网(@@&k tw
  printf("升序完成,排序后的结果为:");51Testing软件测试网 a4bW*_ k@ U:fJ
    printf("%d %d %d %d %d\n",array_2[0],array_2[1],array_2[2],array_2[3],array_2[4]);
5Y1w_\s!M"yI+l];^0 for(i=0;i<10;i++)
0p;s`1wHxB0 {51Testing软件测试网 u{2Z3r(]9R2Q
  if(i<5)51Testing软件测试网k"AB5U.Nf
    array_3[i]=array_1[i];51Testing软件测试网[\?*u!?8c
  else
I~K,l^h2jB w&kF$O0    array_3[i]=array_2[i-5];
n$M$AFU~rz+]0X0 }
"`Q L g E(~0 if(rise(array_3,10)==0)51Testing软件测试网(}U-Dl.o-I*PTbs
  printf("合并数组成功,合并排序后的结果为:");
"hW8KZj)E0 for(i=0;i<10;i++)
T:EC J\-^C0{#{._6z6F0  printf("%d ",array_3[i]);
g p?Ky|w0}

E;i ef7I&G051Testing软件测试网 b8G;T"U)vo3r[0n

14、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。
:ws0hx2`0
#include <stdio.h>
H'c|^J}#y O6_8N*cj0#include <stdlib.h>
9a!KPk+Yn4c0#include <time.h>51Testing软件测试网lF vl&Y7e~&d
#include <math.h>
51Testing软件测试网%R \1c9C;AQm

51Testing软件测试网.F h8wOw9h2K {L,j$Q

void main()51Testing软件测试网mx8C:{~'e6M,D
{
/z)sN` Q1a0 int array[13]={0};51Testing软件测试网TS&uYn!L
 int n=13;
l3N8\D Ua e7JWR0 int j=0;51Testing软件测试网7Va+T;k_;x%E
 int i=1;51Testing软件测试网AuaE T/N(A{
 while(n>1)51Testing软件测试网 p WF7v$B]a(n3D.T
 {51Testing软件测试网QL2J/[St
  if(array[j]==0&&i!=3)51Testing软件测试网6j9yD,\;[]:s4x
   i++;
&Pv9Q1[5q6Ubc0  else if(array[j]==0&&i==3)
v(M$Z(Q[ [(G D#}G9E0  {
%~*_ X\| _`0   array[j]=1;51Testing软件测试网~|^xaO*Q
   i=1;
8Ua^ _:F8GiN;j0   n--;51Testing软件测试网G ~ {5k bX+C
  }51Testing软件测试网Kf1`T1OnW~/V
     if(j==12)
`\,`H4E;wrJ)g$x0   j=0;
h a['?I3Xf,Uy Dd0  else51Testing软件测试网hzS L;G5~`t
   j++;
!U#Lp l'G0 }51Testing软件测试网)C0x*U#T:Zr!N+[
 printf("出卖耶稣的叛徒是序号(1-13):");51Testing软件测试网5N mb`k
    for(i=0;i<13;i++)51Testing软件测试网'Yh-w3F,[m@
  if(array[i]==0)
F#i cC3}Ld0   printf("%d",i+1);51Testing软件测试网6s"D*[Pq7SP0`n:i4I
}

Z+[nv+h0b G'X0

Q;?uO!S-A_ H s015、按如下图形打印杨辉三角形的前10行。其特点是两个腰上的数都为1,其它位置上的每一个数是它上一行相邻两个整数之和。51Testing软件测试网 m;I"Giy ]9f
    1
P Kb,W&\`"|4EG z Z0   1 151Testing软件测试网-Be'm*wi6J&Wp
  1 2  1
Nj"EmE,G0 1 3  3  1
0i_"Qe_.m4J01 4  6  4  151Testing软件测试网 k,l?n.{qg
  ……

/pj@C X H?QC/Ic/l0#include <stdio.h>51Testing软件测试网.|%wyT5n H&vpT
#include <stdlib.h>51Testing软件测试网!f%i C(p5}@
#include <time.h>
$Cwb[+ze `3BN0c0#include <math.h>
51Testing软件测试网6ueAq:Z&J

5y5PXOrM8]1TQ0void main()51Testing软件测试网Zs+I$i6] DLu
{
;d1E/|7d%a"g0 int i,j;51Testing软件测试网k|a ?6v ls M6k
 int array[10][10];
5YH4S h;C/R!d0 for(i=0;i<10;i++)
^ SCA&QJ,]0 {51Testing软件测试网Xid)eD3L"r
  array[i][0]=1;51Testing软件测试网"uA*Q"^xas
  array[i][i]=1;
R.D6|4zb(l+Ywn/W0 }
Y M_C7MM1I0 for(i=2;i<10;i++)51Testing软件测试网&{!~8mJ]'pyD
 {51Testing软件测试网R-WlA(g,UZ
  for(j=1;j<i;j++)51Testing软件测试网|\ ko,u3_3G2a
   array[i][j]=array[i-1][j-1]+array[i-1][j];
i3q/_9^^&n0ND0 }
xz3Hk$zK*m/[5x0 for(i=0;i<10;i++)51Testing软件测试网J2G:L1qD!S
 {
W6olW-I _ B}&aq{0  for(j=0;j<9-i;j++)51Testing软件测试网6bI[$i k%F UK*k6a
   printf(" ");51Testing软件测试网 Chl)~8C p
  for(j=0;j<i+1;j++)51Testing软件测试网K4y D?/e%dv E4S
   printf("%d ",array[i][j]);51Testing软件测试网:q$r0o4ZtF@?'T
  printf("\n");
H[q#o5CK5_{0 }51Testing软件测试网I(bK%zHNUg
}
51Testing软件测试网4z&p?0@ qO[R

*{M~} V;J016、某班有5个学生,三门课。分别编写3个函数实现以下要求:51Testing软件测试网(CB7n)m t,~j`
(1) 求各门课的平均分;51Testing软件测试网8L"d#A/@]F,Q8u
(2) 找出有两门以上不及格的学生,并输出其学号和不及格课程的成绩;51Testing软件测试网 \|6S.o'jc
(3) 找出三门课平均成绩在85-90分的学生,并输出其学号和姓名51Testing软件测试网;O,l;w&Ay7s
主程序输入5个学生的成绩,然后调用上述函数输出结果。
51Testing软件测试网%c!v_(\,])T
#include <stdio.h>51Testing软件测试网v G-@G~;F#T`"Ll w
#include <stdlib.h>
DA })]}:k;e#o8kv0#include <time.h>
8^-d ^mAw@([|0#include <math.h>
%|7RX%N4J3ub']0struct stu_grade51Testing软件测试网eS3Ap#jF/t#S
{51Testing软件测试网ZcXcZ,wxEK5u2s V
 char number[20];
CR.n`"^&B0 char name[20];
3C!a:iD0^i8i0 float grade[3];
5js ?7P|^0}stu[5];
51Testing软件测试网"I]X8r'kY3B

7YURBS+U6d p P0void average()51Testing软件测试网Zn*T E?8?]w2P
{
;N'A!CVF6q1rV0 float aver[3];51Testing软件测试网6b ]K,F B
 int i,j;
&x(r|d&g \B0 float temp;51Testing软件测试网8N+e;r e0jO4CF%ob,o
 for(i=0;i<3;i++)
k~mN _a'G0 {
NJm|+g)F0  temp=0;51Testing软件测试网#\2D-pzBEWSRG
  for(j=0;j<5;j++)
4]B4w&_7G-^Y&?a0   temp+=stu[j].grade[i];
WP B4g#};|0  aver[i]=temp/3;
#|!q&M~-y8e0 }51Testing软件测试网 [Y@X l N(mg
 printf("三门课的平均分分别是%.2f %.2f %.2f\n",aver[0],aver[1],aver[2]);51Testing软件测试网~ ?.g{] a\"{h d
}

(b)G] vG2v-[:O3e051Testing软件测试网MJ(m1\m"c6l&[S

void fail()51Testing软件测试网1|"@M/~Y5^XU8G;i
{
#L*rL|(Y$o0 int i,j,n;
:E1tyH5T}1bi W C0 for(i=0;i<5;i++)51Testing软件测试网;[,\ | vUJ
 {51Testing软件测试网#Cd7J;L}.J$sO9Ic
  n=0;51Testing软件测试网Ifl'i%LQ
  for(j=0;j<3;j++)
mARp eGHJ0  {
0G+q0p }d:n:dG0   if(stu[i].grade[j]<60)
T1E"H(YcG0    n++;51Testing软件测试网P|4zpm
  }
e-mJ!D2_k!B0[0  if(n>=2)51Testing软件测试网(CyDq0K0L
  {51Testing软件测试网!^{#l @$n2_
   printf("学号%s的不及格成绩有:",stu[i].number);
Q[:wyK5Y0   for(j=0;j<3;j++)
kTHB.F2L1B0   {
*C y2}-px-Lu7X0    if(stu[i].grade[j]<60)
lbJ*AP'IN.M} L0     printf("%.2f ",stu[i].grade[j]);
x_ ~wof0_0   }51Testing软件测试网7miE F6w$|6R4mr8^3I
   printf("\n");51Testing软件测试网%ps7c uT"x+]9n
  }51Testing软件测试网!j H+C+`"I)CW5J G)w
 }51Testing软件测试网3n?B4s)_
}
51Testing软件测试网7Y v0A}&r9qQ{m

7r u A{JNs(f0void high()
)Bl A3|$@mv0{
3L6mk7wbY,Y0 float sum,aver;51Testing软件测试网`iZ6F^ ki
 int i,j;
0V*CyE4KA V'c0 for(i=0;i<5;i++)51Testing软件测试网;Y,O%FN6f1Km
 {51Testing软件测试网,d6_E"z(@$_%tyR
  sum=0;51Testing软件测试网$\L(R J0TU
  for(j=0;j<3;j++)
m&O/[6]6|1o5W5D`0   sum+=stu[i].grade[j];51Testing软件测试网BR(_6Up OO
  aver=sum/3;
+H{Qz4sD Y0        if(aver>=85&&aver<=90)51Testing软件测试网I%u/SyKl
   printf("学号%s,姓名%s平均成绩在85-90分之间\n",stu[i].number,stu[i].name);
.l#bv@K c9x[0 }51Testing软件测试网/EF!B'w+N
}
1Q'\2zR1v `0 

cyHAQ+f M Z051Testing软件测试网6]||&c"h}!bS4g6g

void main()51Testing软件测试网S L,Bh ~^(b
{
-N:F{:h/B+Ep cK0 int i;51Testing软件测试网7ui ^7y0E
 for(i=0;i<5;i++)51Testing软件测试网&\Hv'n|.Tc$hM3g
 {
Z5V_R ND3l0  printf("请输入第%d个学生的学号:",i+1);51Testing软件测试网,r szR7OXv'M1Z3g
     scanf("%s",stu[i].number);
s$h0f&hl_0  printf("请输入该学生的姓名:");51Testing软件测试网,eEL"g%d
  scanf("%s",stu[i].name);
z$H X;ap%[u0  printf("请输入该学生的三门课成绩,以空格分开:");51Testing软件测试网 V}s:T-} O
  scanf("%f%f%f",&(stu[i].grade[0]),&(stu[i].grade[1]),&(stu[i].grade[2]));51Testing软件测试网 }y,w#P"K p
 }51Testing软件测试网l;~0cHG,g;hk%h$u
    average();
&~jbz3PR,X0    fail();
cfPc6v U0 high();
Czz SWB8t0}
51Testing软件测试网~9wtV^*fpPD'x%rX

51Testing软件测试网"}'K#g4KiD

17、编写一人个求X的Y次幂的递归函数,X为double型,y为int型,要求从主函数输入x,y的值,调用函数求其幂。51Testing软件测试网uKF9[}h M7h
#include <stdio.h>
Jp*e(K~,k0#include <stdlib.h>
7ARf,m@9]&Ro0#include <time.h>
Pe m2hWo0#include <math.h>
51Testing软件测试网P}"s L ^:NLe)R

JI,_f o/D0double times(double x,int y)
C?j&`Sr].SG0{
0hf6SSj)i0 if(y==1)51Testing软件测试网 ^.f8xDP+G2r
  return x;51Testing软件测试网ucXm%N`0s+^_
 return x*times(x,y-1);
^ydVHo^0}

yJ KD b"TJ%H#@u0

LZ.plb0void main()51Testing软件测试网%D(AZ^)]2`D
{51Testing软件测试网$oSP{/ai3ktp
 double x;
&Y.F:O])AuM0 int y;
}!TQ {o*p in&e@0W0 printf("请输入x和y的值:\n");51Testing软件测试网-mU4z*K[-b|-U T
    scanf("%lf",&x);51Testing软件测试网1lr u2I4R3|O+s
 scanf("%d",&y);
:zI Qo$Ry(~w0 printf("X的Y次幂是%.2f\n",times(x,y));51Testing软件测试网;V2l$Ul S2}}`z E
}
51Testing软件测试网1u2U"k!VRtQ5i

51Testing软件测试网B%]#VU"F!@6w

18、打印魔方阵。
'wHq$tm7Q0@U0所谓魔方阵是指这样的的方阵:
%M6y&N"Fz+k0它的每一行、每一列和对角线之和均相等。51Testing软件测试网Gkqo4U6K8j8fr
输入n,要求打印由自然数1到n2的自然数构成的魔方阵(n为奇数)。
JcV0J%~,NzP0例如,当n=3时,魔方阵为:
U~\*p/y{%az0 8 1 651Testing软件测试网&ss,nq%tf
 3 5 751Testing软件测试网x/p1PL}'z
 4 9 2
!tqO'Q2d|6q Q C ~I0魔方阵中各数排列规律为:51Testing软件测试网2Q\?qY
① 将“1”放在第一行的中间一列;51Testing软件测试网0x8m/cP*Xc
② 从“2”开始直到n×n为止的各数依次按下列规则存放:每一个数存放的行比前一个数的行数减1,列数同样加1;
#hB:H P-w1odq0③ 如果上一数的行数为1,则下一个数的行数为n(最下一行),如在3×3 方阵中,1在第1行,则2应放在第3行第3列。51Testing软件测试网'S[[A5g'S Ti(@s
④ 当上一个数的列数为n时,下一个数的列数应为1,行数减1。如2在第3行第3列,3应在第2行第1列。51Testing软件测试网U/K%k W4U
⑤如果按上面规则确定的位置上已有数,或上一个数是第1行第n列时,则把下一个数放在上一个数的下面。如按上面的规定,4应放在第1行第2列,但该位置已被1占据,所以4就放在3的下面。由于6是第1行第3列(即最后一列),故7放在6下面。51Testing软件测试网5_8]$@.`(T4_o2A
#include <stdio.h>51Testing软件测试网(Y8|vXp
#include <stdlib.h>
| t8L,v |i1A7Z(S0#include <time.h>
3l S+e#zW(dV0#include <math.h>51Testing软件测试网)[-|*B-d1^:b1BGGP
#define N 5
51Testing软件测试网 _(gdZge

51Testing软件测试网? js0@ n+?mT

void main()
!y%N"m3~zR ]0{51Testing软件测试网+U}5Y,G B1m6rQRD.W
 int inter[N][N]={0};51Testing软件测试网 y(oe#e:|6n g
 int lie,line=0;51Testing软件测试网0mI(`1bxQ g%q
 int i,j;
O;puG6O z8Fe*SA0 int line_temp;51Testing软件测试网bfaT&[
 int lie_temp;
z IckIxB0 lie=(N-1)/2;
4v0j:_F&T A^9W0 inter[line][lie]=1;
]0Y0Ou.R!rrH0    for(i=2;i<=N*N;i++)51Testing软件测试网Pj+q h} tx
 {
d'F q~J/[+z0  if(line==0&&lie==N-1)
c7ZITP0  {
y@E9Wm0   line_temp=line+1;51Testing软件测试网)L3[OP)S+Ep(_3x
   lie_temp=lie;51Testing软件测试网'@K*`E4|sXX
  }51Testing软件测试网3cK1K8}iF S
  else if(line==0)
C(Z.a5bf%P*o!r6j{0  {
_Tm7B] EJ-L0   line_temp=N-1;51Testing软件测试网F9N`iC(cl1f d
   lie_temp=lie+1;51Testing软件测试网%c+I;al3s
  }
-~6a$z*M3WDcob@0  else if(lie==N-1)
a#J$J0T8mB|D0  {
B?2xIl:RJ0   lie_temp=0;51Testing软件测试网F7R&O Q5G ?Gz
   line_temp=line-1;51Testing软件测试网$F:^8g)| n?g6e\
  }
*U9X/WkPv+EON0  else51Testing软件测试网/U5ldfDr9l)Y"x_r
  {
YA9]2{ ];ShU0   line_temp=line-1;51Testing软件测试网;q3S5h0Z#w3n
   lie_temp=lie+1;51Testing软件测试网3@7hB'i"@;A
  }
?w#S3sLA^)Jm0  if(inter[line_temp][lie_temp]!=0)
*|y4w9k(c0  {
#~z%^7`F#M5f/iuVj0   line=line+1;51Testing软件测试网.j9x*k| c2?R5Y
   lie=lie;
n*cXt9F0   inter[line][lie]=i;
;f)s]|ZSE K~0  }51Testing软件测试网AC|/_xE3L
  else
M^HEYK#[0  {51Testing软件测试网'~O6Gg3V IkG
   line=line_temp;
I]v$g*{9i-S~4B0   lie=lie_temp;
!j8QN dLCeE4E$DM E0   inter[line][lie]=i;51Testing软件测试网w)z/H | ?
  }
!g_rQ4{J0 }51Testing软件测试网:Nr W(^l @| jG#y
 for(i=0;i<N;i++)
&a:zx9i Y*d.V5]0 {
brYyV0  for(j=0;j<N;j++)
M7K uX X:XA0   printf("%d ",inter[i][j]);51Testing软件测试网T&~5lR.aZ{7Z
  printf("\n");
2d%T { q4@ ~ Ar{-[0 }51Testing软件测试网gXsZIz)FB_W
}
51Testing软件测试网DN5U5@3uuk!C

1c#ThRU019、找出一个二维数组中的“鞍点”,即该位置上的元素在该行中最大,在该列中最小(也可能没有“鞍点”),打印出有关信息。
0I:W0XG+}1ZH!nx0#include <stdio.h>
1@ ^:sk%qp!HM0#include <stdlib.h>51Testing软件测试网9N+~7tT}\}0pE
#include <time.h>
R3} r:eQ\?0#include <math.h>51Testing软件测试网~X8t/e!JY
#define N 451Testing软件测试网QUj flj4VF
#define M 4
51Testing软件测试网V ep5{1s

51Testing软件测试网9b `ab6ac P*iT

void main()
/|8DY#l u0{51Testing软件测试网\S&N!P@'WT
 int i,j;51Testing软件测试网&f*|&Q+q~ o.O{(x
 int lie;51Testing软件测试网.Fkj"C,]NT
 int flag=0;
(_3O4O(mx E#n0 int inter[N][M]={{1,2,3,8},{4,3,2,9},{1,3,4,10},{2,4,1,11}};
W:[?Fy B0    for(i=0;i<N;i++)
vDZ(vc9M+s0 {
iMM-|it}!P;fj0  lie=0;51Testing软件测试网kmu8K5{#I
  for(j=1;j<M;j++)
)h1ugN:p(q&[0  {
G(p O1x?a/B!t0   if(inter[i][lie]<inter[i][j])51Testing软件测试网Zj#GJ!n I`'gH
   {51Testing软件测试网OV-e`0O8z*a){#b)E
    lie=j;51Testing软件测试网uA.U@]:_(t
   }51Testing软件测试网Si)az(Yf,F
  }
P,C x0{K-x"sLa0  for(j=0;j<N;j++)51Testing软件测试网7H6~-`9YOHSC-}w
  {
;?(h\pl!f1Wn0   if(inter[i][lie]>inter[j][lie])
/_9FY@"~R0    break;51Testing软件测试网,Qs,|/q4J-uo9~
  }51Testing软件测试网0D{T(X$cj'gi&H+zs
  if(j==N)51Testing软件测试网;S7P#VH9X7nG
  {51Testing软件测试网8e4[ F)kv&WTA
   printf("鞍点:行%d,列%d,值%d\n",i+1,lie+1,inter[i][lie]);
5yeEJl e0   flag++;
? nnB(NO"j*Z,u0  }
#[-Orl{3zPR'l AGa0 }
+dO"O,h8u^0 if(flag==0)
^ m{c}+us0  printf("没有鞍点\n");
M/S],o4[6i c}M0}
51Testing软件测试网)vs0?2Jlt K-RT4L`

51Testing软件测试网zXso1f!u

20、马克思在《数学手稿》中提出如下问题:有30个人(包括男人、女人和小孩)在一家饭店吃饭共花50先令,其中每个男人花3先令,每个女人花2先令,每个小孩花1先令,问男人、女人、小孩各有多少人?51Testing软件测试网*j,[ p*T&vr:`Ox
#include <stdio.h>51Testing软件测试网:W,ki#L6Q5T
#include <stdlib.h>51Testing软件测试网$bKO3H Y l_|
#include <time.h>51Testing软件测试网!Pbt p;oV6lJT
#include <math.h>
51Testing软件测试网W6Z*{"XnQ

6K.?/Ad0p$Sz0void main()51Testing软件测试网#}5b$e,SP M4Oe4P
{51Testing软件测试网 A|VQ4j b'~ Y+T
 int man,women,child;51Testing软件测试网+J]5d GVv3it
 for(man=1;man<29;man++)51Testing软件测试网c/SCukU(]!Q
 {
*@pl;?#\7u o0  for(women=1;women<29;women++)
8oH5cb,X6m7`"M0  {51Testing软件测试网*bY&nE!la/X
   child=30-man-women;
+d qA.hMBf'K+B:L A B0   if((man*3+women*2+child)==50)51Testing软件测试网|3_&V@r3gnN
    printf("男人%d人,女人%d人,小孩%d人\n",man,women,child);
bA6L)\0B0  }
XJ}!I7w;e/n0 }
.vl"jOhp0}51Testing软件测试网1x4]-Y*P*P

| IJXbDu-[ l0

TAG:

 

评分:0

我来说两句

Open Toolbar