展望2011

第8章

上一篇 / 下一篇  2008-12-02 18:20:15 / 个人分类:编程基础

OL8l"Na#GI0为了坚持每天写代码,所以每天将写好的代码放到blog上,也许一开始代码写的比较烂,但我相信,万丈高楼平地起,只要坚持每天写代码,编程能力一定会有很大进步的。各位朋友,对代码有什么好的建议和问题,欢迎提出来。51Testing软件测试网Zpd9@z:cT7C)Q;Eo

51Testing软件测试网j `Z;l$O:t6D

第八章
qV9w*dO Y08.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 
DCY4ZrG0#include <stdio.h>51Testing软件测试网:U r i&n#h,FT+K8[WN-M
#include <math.h>51Testing软件测试网T-F,@9Y M W
#include <string.h>

OO4^pvI x051Testing软件测试网:yAwJx+_;u2p

int Max(int a,int b)51Testing软件测试网,w;_1[n nLY
{51Testing软件测试网V~%c&g2SEndKl
 if(a>=b)51Testing软件测试网8@vGM ?
  return a;51Testing软件测试网9j _Gbhy z%O
 else51Testing软件测试网m;y2b#HO}#m kG
  return b;
V3n2eW @0}

w+LiQr0

3i1wnu^e/TU0int Min(int a,int b)
/A st2];I&rx U(ev0{
,J*Muv)b.n,U0 if(a<=b)
`F1b,h9p iO3_0  return a;51Testing软件测试网do'D v@G(Y
 else51Testing软件测试网Yf,Y0Zc;I5Fu
  return b;
5_9|{)n3^A0}

;_CaY*Lk051Testing软件测试网F iK,@L&Bl

int max_common(int a,int b)
OQ+CKN5C1_0{
maxEsJ:@0int min,i;
O'n*Wum }0int m,n;51Testing软件测试网sP0x)A ]0x
m=abs(a);51Testing软件测试网-k,uXw6Q3V"?7a
n=abs(b);
7{7H2ia6n3j0h"Fr0if(m==0||n==0)51Testing软件测试网kIop.|
return -1;
:l%pdq ze6m0min=Min(m,n);
u j6cR(W0for(i=min;i>1;i--)51Testing软件测试网0johQT1@+`@(^'`Z.[
  if((m%i==0)&&(n%i==0))51Testing软件测试网@#fw]gb4\
   return i;
%sls!v3HN1O(U#c0return 0;
hs L+j+G.e0}

Nj#j.w&Imr y051Testing软件测试网+O:J c-oFr7a

int min_multiple(int a,int b)51Testing软件测试网;uly:X*zO&o+L
51Testing软件测试网l.Q}7xU1Jo-tl
int max,i;51Testing软件测试网#e)af*PLQ^bI
int m,n;
\3W@ W/x QNv0m=abs(a);51Testing软件测试网!t-DC.M/N"^v
n=abs(b);51Testing软件测试网8~-[%P$fU'\-x$e!O
if(m==0||n==0)51Testing软件测试网,o%te!g-kZ I#k?
return -1;51Testing软件测试网3r*C._ ^ s j X2a
max=Max(m,n);
%lC~,CW0for(i=max;i<=n*m;i++)51Testing软件测试网] XP!hyV$F
  if(i%m==0&&i%n==0)
LF!qP!C(lik0   return i;51Testing软件测试网"N]Pyj)pc\Qm a
return -1;
'`C"l2E8}7G(W0}

0BT&iSdO051Testing软件测试网7i|-@.?5y

void main()51Testing软件测试网/G w:l4qEr.v B
{51Testing软件测试网 W S vj u9Xo3qc
 int a,b;
6AQE&]H6~-bZl0 int max;51Testing软件测试网J4u}!Nl
 int min;
N1~F#b }C-t0 printf("输入2个整数,以逗号分隔:\n");51Testing软件测试网'iC2s+g/] }]
 scanf("%d,%d",&a,&b);51Testing软件测试网@Fb6sP2N7Jr
 max=max_common(a,b);51Testing软件测试网Gx,Q,?+M+b
 min=min_multiple(a,b);
m _BOz6PB a0 if(max==0)
i1_%F0s5X+uw'lkV4J0  printf("没有最大公约数\n");
XCi@+{V ?6ZR[)u0 else if(max==-1)51Testing软件测试网)Ri4\q0N4CP6a \Y
  printf("不可输入0\n");51Testing软件测试网p`CJ9z!z;{
 else51Testing软件测试网,o#A:d nP DI
  printf("最大公约数为%d\n",max);51Testing软件测试网ElV? cz{ q0J
    if(min<=0)
fj*]aV@(g,mk f:y*J0  printf("有错误发生");51Testing软件测试网#AV0em5K1`1p-r
 else51Testing软件测试网XLXR P9I'JK,L1[
  printf("最小公倍数为%d\n",min);
6?"bbY'IB0}
51Testing软件测试网 V#gY"L,Nf(n K

51Testing软件测试网)`? _ m3rl

8.2求方程的根,用三个函数分别求当大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。51Testing软件测试网x&i'i^!h\C#w
#include <stdio.h>51Testing软件测试网'w^~1D[Rt
#include <math.h>51Testing软件测试网!f.^ ` s5he,G
#include <string.h>
51Testing软件测试网 _$UohS!S3n%S

51Testing软件测试网f.kV%Y9P;~6a

float x1,x2,p,q;

OYD)ZJA~0

,E-R,N(J2|4}0more_than(float a,float b,float c)
oK#YX3Iz)YX-S;Nsa0{
A&r)J s*mg0 x1=(-b+sqrt(b*b-4*a*c))/(2*a);51Testing软件测试网s(B4V7a*ve]*gv
 x2=(-b-sqrt(b*b-4*a*c))/(2*a);51Testing软件测试网!\b8kK`9m
}

Zm8RC#rUP0U5y0

j'Je;q%R!? RV/K5M0less_than(float a,float b,float c)
`JM7R)U0b0{51Testing软件测试网e(kJ|~ W
 p=-b/(2*a);51Testing软件测试网6T(g]id~0Q
 q=sqrt(4*a*c-b*b)/(2*a);
"U-{;\R*L CHB0}
51Testing软件测试网%i{ ?V3h

51Testing软件测试网5Hl"Bi!u6c

equal_to(float a,float b,float c)51Testing软件测试网*J x0Yn B i2r"AIYt
{
g!v4}5\%|uS0 x1=x2=-b/(2*a);51Testing软件测试网Hs-e/rO R!yzj'_
}

gTqpl,`(C.ih051Testing软件测试网-[{\R y8l

void main()
3@ q,co)j.UdZ.j.P0{
L[/ti Cf L'c0 float a,b,c;51Testing软件测试网9Dobp J!a4j7z Y
 printf("请输入a,b,c,以逗号分开\n");51Testing软件测试网&u i`DC
 scanf("%f,%f,%f",&a,&b,&c);
BA1daf4q%Y!Z0 if(a==0)
#\y)|VJy hi#b0 {
?1lY'_3W u+CxU0  x1=x2=-c/b;51Testing软件测试网 ZB ]i|gd |
  printf("%.2fx+%.2f=0的根为%.2f\n",b,c,x1);
(tJ6Sa.O*R$ff o0        return;51Testing软件测试网N*a:CX~k%P
 }
3|g$t,E2tYt1T2d0 if(b*b-4*a*c>0)
FW2KbS%t0~*L0 {51Testing软件测试网JYB+?3N"uI B3r
  more_than(a,b,c);
\Q7Rb7^q,k0  printf("%.2fx2+%.2fx+%.2f=0的根为%.2f和%.2f\n",a,b,c,x1,x2);
)X*x/H g7q U&kr!r0 }
b1]`?,vB0 else if(b*b-4*a*c<0)
WV@ M!CqX0 {
.bI.vh']*dy!C k0  less_than(a,b,c);51Testing软件测试网B;of3V!~/J@ G
  printf("%.2fx2+%.2fx+%.2f=0的根为%.2f+%.2fi和%.2f-%.2fi\n",a,b,c,p,q,p,q);
%B)o&lH"AZ%V0 }51Testing软件测试网{/w,}&k%LTK n
 else
5}?*e\(XTT-A0 {
.sj+N*Ci7D|1C C0  equal_to(a,b,c);51Testing软件测试网.b#@&C X.{Te
  printf("%.2fx2+%.2fx+%.2f=0的根为%.2f\n",a,b,c,x1);51Testing软件测试网K+Y{}o
 }51Testing软件测试网x O/z'wa }5gUu$k"i
}

cNW1K[n1RZ d9r0

g wQV_$M#JC08.3写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。51Testing软件测试网z5g6YRq4A!m
#include <stdio.h>51Testing软件测试网zlC$U(].j-`K
#include <math.h>
0vRK.mV@0#include <string.h>

2q3me$W ?i051Testing软件测试网+J t q.bdZ~e


*`Xc~5G F0int prime_number(int num)51Testing软件测试网;v;ylu"r,_gn'W
{51Testing软件测试网 c*x8KV`(}8U,S
 int i;
G$M.[1^%_K2]M$}0 if(num==0||num==1)
epZbf0  return 0;
Nj)HBVq'eY0 for(i=2;i<num/2+1;i++)
*]1V"C3c)\r B"x+c0 if(num%i==0)
DRXtFb0  return 0;
V$f g4V{7[TL-z&d$ub0 return 1;
O {h,_'mdV0}
51Testing软件测试网3E*~%O5W3C$A

Xy{Eh4X0void main()51Testing软件测试网 ?#q:F| H&~;b;`8B$vu
{
*@&d)c#X\+R-`,EO0 int num,temp;
~G6c7T(@3@*z0 printf("请输入一个整数\n");
-Ae%T1y)N4N0 scanf("%d",&num);
4p vR#M \'V%l{0 temp=abs(num);51Testing软件测试网:E:w$Y{2z"O0HP`
 if(prime_number(temp)==1)51Testing软件测试网.@-G0^]!M}0F&FO]VQ
  printf("%d是素数\n",num);51Testing软件测试网3T[!xE fZF
 else
1Mqq Mre0  printf("%d不是素数\n",num);
$q{_(a w:rK*y,p0}
51Testing软件测试网~M"f/s8d*An.Z

51Testing软件测试网-yR.]W1_!tV1CQ

8.4 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。 51Testing软件测试网y9N,@7]-TR8`"W7t
#include <stdio.h>51Testing软件测试网3Jg@|d0p
#include <math.h>51Testing软件测试网2@~~6@O
#include <string.h>
51Testing软件测试网wcE:A`

51Testing软件测试网YGcl;k;h j8o CQ

#define N 351Testing软件测试网$Z$e$|5B&sG,a&p7L@~6g L:n

51Testing软件测试网%YW_BO(pcqA

void Trans(int a[N][N])51Testing软件测试网KD1N;f}1Va z
{
m W*g'~;M6k;[&q0 int temp,i,j;51Testing软件测试网 ?1@V"t5O
 for(i=0;i<N;i++)51Testing软件测试网|0i\mGeO SiFt
  for(j=i+1;j<N;j++)51Testing软件测试网#ee#]q(?
  {
7Rt$uc#jT t0   temp=a[i][j];51Testing软件测试网+m o RKOs
   a[i][j]=a[j][i];51Testing软件测试网 @6q9A-@#r'N:b
   a[j][i]=temp;
oh*reu`-t1e0  }51Testing软件测试网-n$] j)nw
}
51Testing软件测试网r"pXE:o;SEl1b

|v^0dZ0tU0void main()
*T2{2jVumm;mJ0^0{
u3M1V5l:?;w0 int a[N][N];51Testing软件测试网&S-An'Su u#y
 int i,j;
t3rI l"?'wc Ih0 printf("请输入一个N×N的整型数组,以空格分开\n");51Testing软件测试网2w(ZG5|OB9`%Ep1i
 for(i=0;i<N;i++)
'e^|\L G)Wshm*XS.P0  for(j=0;j<N;j++)51Testing软件测试网MPY/Ihv
   scanf("%d",&a[i][j]);51Testing软件测试网,yy;p/v4Z5a b(B
 printf("转置前为:\n");51Testing软件测试网2N\dn*`1y
 for(i=0;i<N;i++)51Testing软件测试网Q&G^pd
 {
d#s xU+D V1W0  for(j=0;j<N;j++)51Testing软件测试网m3t l^9f+q
   printf("%d ",a[i][j]);
3S0vr c-S0  printf("\n");
,U+p&V]~g4[2U0 }
R HGZ:A,eG0 Trans(a);
(n"Cc? g0 printf("转置后为:\n");51Testing软件测试网0}KE"}UCA!\
 for(i=0;i<N;i++)
/Mi,_qWp z6Ck+r0 {51Testing软件测试网M$^ ?1Zo|S+l+A
  for(j=0;j<N;j++)
?s {/Q u4PG%~Z[|0   printf("%d ",a[i][j]);51Testing软件测试网fHj g"^*F
  printf("\n");51Testing软件测试网P(egaf+D
 }
%P+q8xj~4~8p3?;|y0}

#g8s6U D2yMAD0

C hCV#Tg\(O9S:m/yz08.5 写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。
9P y7J\6PL0#include <stdio.h>
6~o!ZL(nC0#include <math.h>51Testing软件测试网n})^XA9qo{
#include <string.h>
51Testing软件测试网 k1g7~O fg"u/P+_z

51Testing软件测试网BCu4d3n

void reverse(char *a,int len)
7\[ `Fp[0{51Testing软件测试网9H-NV h-s$DU g
 char temp;51Testing软件测试网 x mWK.`S6t
 int i;51Testing软件测试网-VB"F:ysMi
 for(i=0;i<len/2;i++)51Testing软件测试网S f1G S6}&a2J:F
 {51Testing软件测试网dg'\4j&h%g-tQ
  temp=a[i];
o9TB7`O2FS0  a[i]=a[len-i-1];
nC4d.W]g!| P"R0  a[len-i-1]=temp;
e(_e2h%_+U}3M {xf0 }
!S7?/`@(EH$@.S0}
(@f @0k%[t"M0void main()
J?8PW@.@ZVb2J0{
1N:H TDU hJ#i0 char a[100];51Testing软件测试网9w(j-xg$B
 int len;
H$S&N4C:D*H-v0 printf("请输入一串字符\n");51Testing软件测试网&]]4b-jj~#xc^+c
 gets(a);51Testing软件测试网q9S7L4Z.Y#Gri j
 len=strlen(a);51Testing软件测试网U3|.e|:aO B(z1r~
 reverse(a,len);51Testing软件测试网0l1Zr5T5TsS?
    printf("反序后的字符串为%s\n",a);
+gf0OjdNd.Yn^0}

3I EIQ l|051Testing软件测试网7VZi4E F#w

8.6 写一函数,将两个字符串连接。 
n;L#Y:iEt4lH X0#include <stdio.h>51Testing软件测试网'Wk`3U Y)EE"U+L
#include <math.h>
*W.^3w;`.p&H8r0#include <string.h>
51Testing软件测试网r!O S c.R;C)`1n

q$r4x G)wn0void connect_chars(char *str_a,char *str_b)
!]/PY*Q(u'}F0yP$F0{
Vr ~w^[0 int i=0;
,BaZp!Khrf0 int j=-1;
5?xU0xPC |)b0 while(str_a[i]!='\0')51Testing软件测试网!bG uO1Ox~'}
  i++;51Testing软件测试网)B@0f#N \[
 i--;
(O*j1i ?{"v g0Q5H0 do51Testing软件测试网n:\$Pb6e b^1[ZP
  str_a[++i]=str_b[++j];51Testing软件测试网:n9ip!It rD kK
 while(str_b[j]!='\0');51Testing软件测试网%g-Z TM!?y'Y"akL w gK}
}

Q1hR6`&kRz3I0

Qt f,@ uUs0U+O0void main()
4G%o7~9LV*y0{51Testing软件测试网s7p*f m U!d[/L
 char a[100];51Testing软件测试网1`$Ud4Uy~.^;q1v1v
 char b[100];
5\ {K-p;D%{-AG0 printf("请输入2个字符串\n");
S7b"u6s _'XD%\J@0 gets(a);
}+jMDE0 gets(b);
"Ld2KI.Mz0 connect_chars(a,b);51Testing软件测试网U]^/U^w
 printf("连接后的字符串为%s\n",a);51Testing软件测试网z%?$q0\ppC:{
}
51Testing软件测试网v)J|*MJ s

51Testing软件测试网g1UlL a

8.7 写一函数,将一个字符串中的元音字母复制到另一个字符串,然后输出。
n,]N F$fw/h0
#include <stdio.h>
d&G+|^3U4j-}0#include <math.h>

c-k*K,o7p:yV*|0

fK[@sx%V Y0void func(char *a,char *c)
c_Y;?tP1}8L q0{
y^/l Z n0 int i=0;51Testing软件测试网6` V`Hl2Howv
 int j=0;51Testing软件测试网(Z[j^P5p(pi
 while(a[i]!='\0')
0TJ/rK)f4z0 {
+r*DMO!W}n |'B0  if(a[i]=='a'||a[i]=='e'||a[i]=='i'||a[i]=='o'||a[i]=='u'||a[i]=='A'||a[i]=='E'||a[i]=='I'||a[i]=='O'||a[i]=='U')
;[)_;nkYB,HuF0   c[j++]=a[i];
^h9u(hFO%AG%B({9yK0  i++;51Testing软件测试网,uw*b|4Rn,_-K u2Q~2G
 }
BJ4Wr$`ui0 c[j]='\0';
O7^1qA2y0}

"QmID U~|0

FVQd#Y9wK0void main()
1vR~|1MXv#R0{51Testing软件测试网`$_+j Txf
 char a[100],c[100];51Testing软件测试网z/Q}*m"m8G{'B)t`5D
 printf("输入1个字符串\n");51Testing软件测试网3xK8d%ex:C |9CE
 gets(a);51Testing软件测试网SA4r,l2[kuc
 func(a,c);51Testing软件测试网 j0Td1d4Q&{#K[ t
 printf("元音组成的字符串为%s\n",c);51Testing软件测试网mf3Ha'\ NJ
}

`#ei T`(zle;q0

n7vY)W u8Kd0
2E3sPb]*d&AW*J08.8 写一函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空格。如输入1990,应输出"1_9_9_0"。51Testing软件测试网0n4^\.s] H(l:R2O
#include <stdio.h>
8Dg+G`m j!ba:wH:V/m0#include <math.h>51Testing软件测试网D \G;Cc.G6u
#define N 451Testing软件测试网S(sX| eF$lk#}
void func(int a,char *str)51Testing软件测试网]fNjkp9s ]*G,c
{
pH0J)\8V FWN)Sk6wo0 int i,j;
:WW3b5zYA+bC/zP.N0 int num[N];
h1KP tn~go0 for(i=0;i<N;i++)
.`_s$kD%u0 {51Testing软件测试网;{o}5X hw
  num[i]=a/pow(10,N-i-1);51Testing软件测试网8N} |,e5W
  a%=(int)pow(10,N-i-1);
hHX6q"[.t^0 }
!G2Pp?.kN8X0 j=0;
1U Qyt5iu _%BT0 for(i=0;i<N;i++)51Testing软件测试网KR)@'be#B'wN)sE
 {51Testing软件测试网L+}r/s5_ovr
  str[j++]=num[i]+'0';51Testing软件测试网o;__(u0fer
  str[j++]=' ';51Testing软件测试网'G:Z4JuU W)s!Q6sHP9q
 }
/VB%cb9K1qB:{0 str[j]='\0';51Testing软件测试网z+Gg&r6UeO\
}51Testing软件测试网7h,@`@ f$I-Ys
void main()51Testing软件测试网V"kr.Ww(W
{
j k.Q+k*t*QZAr0 int number;
E7U;noJc9A0 char str[10];51Testing软件测试网3Q |x9c1zH4aO9I-_!t
 printf("请输入一个四位数字\n");51Testing软件测试网v:`j5OkM2UP7F
 scanf("%d",&number);
G0k h-X+JL0 func(number,str);51Testing软件测试网!B#bIlU6C
 printf("转换后为%s\n",str);51Testing软件测试网5Z+J4W C3E5`_)p
}

2La^ F"_,G0

_pqB8_ ?08.9 编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。 51Testing软件测试网)ocro.{
#include <stdio.h>51Testing软件测试网6K y9q5[%C!bX6Ac8x
#include <math.h>51Testing软件测试网eE7D~L^WS"}
#include <string.h>

9X0Z9]tY T+l4A0

e'A(~ `;}Ok0void stat(char *str,int a[4])
h)s9{uX K HV0{51Testing软件测试网 ui.{s1vz
 int i=0;
,q!n0Ty;M8v_0 while(str[i]!='\0')
z6?,R1Xa2Hj9y0 {
jlmgKE%C0 if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))51Testing软件测试网w@R$ZV3Kv
  a[0]++;
.a8Fw(lbJ!L0 else if(str[i]>='0'&&str[i]<='9')
(]*h5K&n5p0UX0  a[1]++;51Testing软件测试网W'Y9EUh'THJ
 else if(str[i]==' ')
|M'U@2_G1r(B0  a[2]++;
9d7^,LSg/ta7Z0 else
us @c*O9gg7D6M{a/i0  a[3]++;
7i?X;H2q/}6otV0 i++;51Testing软件测试网VV?a [%lt7L
 }
wn#tX3n9G-W0}
51Testing软件测试网:c)b5J o0gu4r"WA

"D(S*Aa5~X8B0void main()
:PHt u*b,v `0{51Testing软件测试网%g7[;o8{w4\/lu ]
 char str[100];
sf+T&PB8x6c0 int a[4]={0,0,0,0};
]a1n A"mR7O8L}7T r0 int i;51Testing软件测试网H7a3a+Uoy|
 printf("请输入一串字符\n");51Testing软件测试网7kBDl%ewK M
 gets(str);
\C8t6z3PV0 stat(str,a);
Y@j&N[1@I9SF0 printf("字母,数字,空格和其他字符的个数分别为:");
qZ'd#wBb%O0 for(i=0;i<4;i++)
DEN6vLv%N;s0  printf("%3d",a[i]);51Testing软件测试网al&wC U0B-T
}

N#u3yI$f/l3Uj:y2g S0

y+oTUHis7x J08.10 写一函数,输入一行字符,将此字符串中最长的单词输出。 51Testing软件测试网?|\){;B
#include <stdio.h>
6s/I I,i6iBTt%sUar%H0#include <math.h>
u.t2l\:|c:zu0Z3l'qf0#include <string.h>

Rh1G JW}1p0

};_3HsQ0void longer(char *str,char *sub_str)51Testing软件测试网!y?k j!aPc)^6O:Q
{51Testing软件测试网1yx(m,X v!DV
 int n=0;51Testing软件测试网h:T!T#I$q3wdT
 int j,k,i=0;
y'{zW$b7b[]:X0 int begin=0;51Testing软件测试网^$E8L/rD yf
 while(str[i]!='\0')
'H.x3}i$`n-d`u0 {
+?)@$syg)HO0  if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
JriEk'p0  {51Testing软件测试网'v.u@ g0Z0c-R3J|
  j=i+1;51Testing软件测试网0g H }`W0ovr
  while((str[j]>='a'&&str[j]<='z')||(str[j]>='A'&&str[j]<='Z'))51Testing软件测试网S2Ou5~"ge;E
   j++;51Testing软件测试网 X }/c+nq.RIk
  if(n<=j-i+1)51Testing软件测试网,w6W)H]N}K
  {
D&r1[k }#jE;T'n0   n=j-i+1;
$W.s-Bc'XM,c*Ub0   begin=i;
Q]+T(p7A.l|L3AUJ0  }51Testing软件测试网!\ Wpd4M8d+} W1w
  i=j+1;51Testing软件测试网M"m7fJ?&S r:L&[2{
  }
fR Q0Tbs^0  else51Testing软件测试网 ON Nbfj*\,bp#K"L
   i++;51Testing软件测试网JuZnf$v
 }51Testing软件测试网` u t!t j ~1_,?I8`
 for(k=0;k<n;k++)51Testing软件测试网1k7]\LC @M
  sub_str[k]=str[begin++];
t lY0I ],O0 sub_str[k]='\0';51Testing软件测试网 }[n k G7w
}

M](eg+W_ H.M0

x~:pQI+bO+Y r {0void main()51Testing软件测试网F#b"t-iwn:~
{
7w"M-E!m @V)s Z0 char str[100],sub_str[100];
,H)Pi LY%M6R0 printf("请输入一串字符\n");
D/Oqi6\0 scanf("%s",str);51Testing软件测试网T/Z:Hq ?(tHXU\2L
 longer(str,sub_str);51Testing软件测试网1Vq6CVg8l s [
 printf("最长单词为:%s\n",sub_str);
Yh n#R4d:ruMh0}

i ^ ^7Qg P8?4z051Testing软件测试网7n!Sv2rU P X

8.11 写一函数用起泡法对输入的每个字符按由小到大的顺序排列。 
h)u0Fgn m s'b0#include <stdio.h>
7x]!U%vX"o0#include <math.h>

li-pvK'^ L G&q0

.S6_*CI%W#^bkA8fC0void func(char *str)51Testing软件测试网T.Ru0sQ
{51Testing软件测试网 `8X ~C-z:yn
 int i,j,temp;
(@9f)@e ^0 int n=strlen(str);
!q*V%b7C9rk'u0 for(j=0;j<n-1;j++)51Testing软件测试网.l.}j6qW2lG#V|
  for(i=0;i<n-1-j;i++)
)\[e)yw^0   if(str[i]>str[i+1])
3PIFP8bn0   {51Testing软件测试网:[pI cU
        temp=str[i+1];51Testing软件测试网0mhu~C+h
        str[i+1]=str[i];51Testing软件测试网L[ I7?:LFG C s[
        str[i]=temp;
Ze3n^3\Z8Z_0   }
E$H'n4] ? s;X0}

wy/c1Ow'f\0

;V;NU#W x0void main()
dl`9g Db-| a(W0{51Testing软件测试网;BS X6_2|3Q6_P
 char str[100];51Testing软件测试网6l1v'Yz DR)f-Q \s
 printf("请输入一个字符串\n");51Testing软件测试网"a_0A\'B8R],h [\.S
 gets(str);
!r z,{3m d-^ HE0 func(str);51Testing软件测试网2{`#F#Ge9c
 printf("排序后的字符串为%s\n",str);
'ea&[5C9P6O^!@0}
51Testing软件测试网|Vl,r(b*~U

q3Mi$v'{C%M+b08.12 用牛顿迭代法求根。方程为aX^3+bX^2+cX+d=0,系数a,b,c,d的值依次为1、2、3、4,由主函数输入。求X在1附近的一个实根。求出根后由主函数输出。 
Y$c~b3r I mAV0待补充...
51Testing软件测试网 wgbc"p,VPe.r

`x1_ n4~#v3`K*C08.13 用递归方法求n阶勒让德多项式的值递归公式为51Testing软件测试网4nA ?m `kaTw
       1                                            n=051Testing软件测试网2uu p{-Q)tg
Pn(x)= x                                            n=1
'N~:{'M"h5`2R0       ( (2n-1) * x-Pn-1(x)- (n-1) * Pn-2(x) )/n    n>=1
51Testing软件测试网%{E A3DQ/g(K
#include <stdio.h>
,f/O:\8Q f7JX0#include <math.h>
51Testing软件测试网_m;j1ea;E

51Testing软件测试网zZ[{B)\T_

float func_P(float x,float n)
5F1^ dgW7D9b0{
$[C M{1xw3N9FJ/[0 if(n==0)51Testing软件测试网S m5{I8j$?\
  return 1;51Testing软件测试网 Z k dl?RS(a
 else if(n==1)
8O7o?I7{#L1ST#Y0  return x;51Testing软件测试网!txG T|+E*H
 else if(n>1)51Testing软件测试网J:E|,pAS@1\NE%[
  return ((2*n-1)*x-func_P(x,n-1)-(n-1)*func_P(x,n-2))/n;51Testing软件测试网1y4j:H8}s#?h9OW[F w
 else51Testing软件测试网w"y,M1p+zM+T;h?
  printf("n的值为%f错误\n",n);51Testing软件测试网+V)UkczM g~
}

?YZn&kC9x1[(dO I0

HoPM0Gc0void main()
I;@f:CN {/\~a,k0{
~ `nerIjR0EH}0 float x,n,result;
lgZ(u4aV m/v0 printf("请输入x和n,以逗号分开\n");51Testing软件测试网(e ZywyGT9l
 scanf("%f,%f",&x,&n);51Testing软件测试网"[0`wbCmM6X)Nrh
 result=func_P(x,n);
XWX0I3C? E4L*x0 printf("多项式的值为%.4f\n",result);
1^Z$r FHb1K!j'V0}

%?)Z6ec9p9T/c0

yy@qI(x08.14 输入10个学生5门课的成绩,分别用函数求:①每个学生平均分;②每门课的平均分;③找出最高分所对应的学生和课程;④求平均分方差:δ=[∑Xi^2]/n-(∑Xi/n)^2,其中,Xi为一学生的平均分。
eAw DNG0
#include <stdio.h>51Testing软件测试网Rd*o%tq o8\u
#include <math.h>

Z"?-C}#Wp0

A[#nI i/Ge\C0#define N 251Testing软件测试网YJhR Px,R
#define M 2
9in&BE8g1iud0float value_1[N];51Testing软件测试网g0o*r2O}
float value_2[M];
3eoyrZ3Fu;Nn0q0int stud,value_3;
51Testing软件测试网Z@,ENI[

{Pk1UL8V@B0
hP)Y ?s`&j9X c0void func_1(float a[N][M])
5M]t;PwB%]0{51Testing软件测试网m cC%?(^,he'z
 int i,j;
-tg{To(D)n3t0 for(i=0;i<N;i++)
V/LN,]k#XL0  value_1[i]=0;51Testing软件测试网f+Fa"{n@(\'P
 for(i=0;i<N;i++)51Testing软件测试网bV,dLk ms
  for(j=0;j<M;j++)
x8b/b3^7J~,z4w](^0   value_1[i]+=a[i][j]/M;
7P!F)xr.DRK"\0}
51Testing软件测试网MA4n ~!K{o#T

S*eeR g+cy0void func_2(float a[N][M])
qLyT6`b&H0{
*E2g0] a Q.Yw"R0 int i,j;51Testing软件测试网3X| v5oi6VQ
 for(i=0;i<M;i++)
n&u:y b\3h0  value_2[i]=0;
;j#t{ I;j{0 for(i=0;i<M;i++)51Testing软件测试网2RyO3f(E ~.E$I
  for(j=0;j<N;j++)
\*A@i U,w[0   value_2[i]+=a[j][i]/N;51Testing软件测试网1VEo ZW.r
}

.hupb7v0

jIX7`,N0void func_3(float a[N][M])  //还有点问题,当有多个相同的最高分时51Testing软件测试网KZ)J-p1F5e
{51Testing软件测试网m!SVU:b`[?n,k+c
 int i,j;
|C-vN4s]v0 float max=0;51Testing软件测试网d3J.ON{&uh
 for(i=0;i<N;i++)
:]"{k]Jp8cq9j8q0  for(j=0;j<M;j++)51Testing软件测试网5dO-`;OV"R:f0j(M
   if(max<a[i][j])51Testing软件测试网0i*s.ya g
   {51Testing软件测试网J5_`0i ]'Ub
    max=a[i][j];51Testing软件测试网I0]3A&`^p0C+F6?
    stud=i+1;51Testing软件测试网 n4CQ/C n}@B;o
    value_3=j+1;51Testing软件测试网&j6y{9D z
   }51Testing软件测试网L9H9x0o G)c/~,G
}
51Testing软件测试网p1AS$i#F

.P6Yb?8u&ab9LP0float func_4(float a[N][M])51Testing软件测试网@K&yl1{&W0H
{51Testing软件测试网1R5U U5xh
 int i;
pC%W4D(gml m0 float temp1=0;
Z3bQ T(|2wws0 float temp2=0;51Testing软件测试网s @;an4qg[VN
 func_1(a);51Testing软件测试网.\)xL8|og
 for(i=0;i<N;i++)51Testing软件测试网G7c;_d@r3|
  temp2+=value_1[i];51Testing软件测试网0bmKvW&|
 for(i=0;i<N;i++)
0{U!i-fNW0  temp1+=value_1[i]*value_1[i]/N;
]M*f V f yO?2W[:e0 return temp1-temp2*temp2/(N*N);
G{;ss}Y]0}

&v$bDI+a$I y051Testing软件测试网w"IR)D M&_?2^

void main()51Testing软件测试网6@Zxxl+T3w
{51Testing软件测试网P#_ G;WQI8_
 int i,j;
!?["W A"|B Z V9y0 float result_4=0;51Testing软件测试网j'Z/~2\KM
 float a[N][M];
*Rqb _;Kvw L_0 printf("请输入N个学生M门课成绩,以空格分开\n");51Testing软件测试网:JU3n/dkc
 for(i=0;i<N;i++)
x*d'?]X&x0  for(j=0;j<M;j++)
R8k)_A&_n(I0   scanf("%f",&a[i][j]);51Testing软件测试网/R!jYg0{:r-@-fW6@
    func_1(a);
g6h@4[2d[B,_0 func_2(a);
t @ P1o ]b\0 func_3(a);
(k9Rg4L H3gm6Jo0 result_4=func_4(a);
7qZlK0y1OP|0 printf("每个学生平均分为:");
I%HoL} ^*oG8[ O0 for(i=0;i<N;i++)51Testing软件测试网Wc1\#sIzP4BL!B
  printf("%.2f ",value_1[i]);51Testing软件测试网*Z3IJ HJ[.cc
 printf("\n每门课的平均分为:");51Testing软件测试网+~kjAa1{J'O
 for(i=0;i<M;i++)
:g^~ tl{S'S0  printf("%.2f ",value_2[i]);
7r@7KP3cdC8a1H0 printf("\n最高分对应的学生和课程是第%d个学生的第%d门功课",stud,value_3);51Testing软件测试网6|)LSRE$C"J0Sk]K^
    printf("\n平均分方差为%.2f\n",result_4);
#Y;KXxh}}u(C:FO0}
51Testing软件测试网-Oi:a o$hET)M8|

51Testing软件测试网)j!\/N7oGn

8.15 写几个函数:
ED}$dt3UH0①输入10个职工的姓名和职工号;
|;W w v*Q;j"f0②按职工号由小到大顺序排序,姓名顺序也随之调整;51Testing软件测试网7Q OK/y;L9q
③要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。
G2fV#IF0
#include <stdio.h>
J2g&wb Jubn0#include <math.h>

1]x'QB4H7N051Testing软件测试网y Y CjS_g&j!@

#define N 1051Testing软件测试网']+PPCZ[
int seq[N];51Testing软件测试网lp\wGO
char name[N][10];

)P\ d3x?kp0

XdDv~BVUH%Z |4t0void func1()
I!ZZ#EE j0{51Testing软件测试网 yC6]M)j1d:sE!r
 int i;
-x }c1A1a)O8^](K@0 for(i=0;i<N;i++)51Testing软件测试网 p2]%`O.nR8D
 {51Testing软件测试网u,b;JM(tJy!j4eR
  scanf("%s",name[i]);51Testing软件测试网 u{ou HK"v6s
  scanf("%d",&seq[i]);51Testing软件测试网@WY'Pal P
 }51Testing软件测试网l+NA _TL
}

5S"B JXyU"r051Testing软件测试网 n'ti!L~ @ h

void func2()51Testing软件测试网;})VFn"F4Ue6?|
{
e7eB8\0^'N0 int i,j;
@ SM{,qy!b-Z9l0 char temp2[10];51Testing软件测试网8{fH%J} ~3vB
 int temp1;
W d&zZ?]$`*U0 for(i=0;i<N-1;i++)51Testing软件测试网]vyrr5z"{
  for(j=i+1;j<N;j++)
/`Zv4N S7@0   if(seq[i]>seq[j])51Testing软件测试网3JOTX.l;u\(M Ok
   {51Testing软件测试网 aU6yp'IP~
        temp1=seq[i];
"l _L9E~v bl3O.S0        seq[i]=seq[j];51Testing软件测试网v3r P9w*oh i/g8a
        seq[j]=temp1;51Testing软件测试网 H&d{RbI
        strcpy(temp2,name[i]);51Testing软件测试网0T?#z6B#g1w a5Pjbl O
        strcpy(name[i],name[j]);51Testing软件测试网\J/]7W d:fj+Y$f&a
        strcpy(name[j],temp2);51Testing软件测试网-FA3] SV~
   }51Testing软件测试网9k/c\ WOUY
}
51Testing软件测试网 w]/DP6m5vI Z

/sFx9p-z8y(B*T:]G$C0int func3(int seqx,char namex[10])
ce0GG)NW*c(k4NV0{
"R q\ G G0 int begin=0;
*S)OT'wU v*X#F0 int end=N-1;51Testing软件测试网:X5c/V:GyS&g9B
 int mid;51Testing软件测试网 u LN Y`x%SSN
 while(begin<end)51Testing软件测试网)He3?/pdp QB
 {51Testing软件测试网1ii {`o5r2wB5}P
 if(seq[begin]==seqx)
F+j#i}"i"Kr|5s&ki0 {
/K/^:S I X[:h0  strcpy(namex,name[begin]);51Testing软件测试网 f$P3]5o;u;k1Qx j
  return 0;51Testing软件测试网Jqw7\,V,o`$p w w
 }
}$dC Q&Q/f1t;|0 else if(seq[end]==seqx)
\j RMU4t {0 {51Testing软件测试网Gi_ n$c!@
  strcpy(namex,name[end]);51Testing软件测试网5J$Y.B ` g }\
  return 0;51Testing软件测试网 C%h5r;b_g'V
 }
/B*dSP.K X0 if(begin==end-1)
fK{7rjmM0  return -1;
+r AEak,r3M#@0 mid=(begin+end)/2;51Testing软件测试网` M4fn7pO
 if(seq[mid]==seqx)
zdH9h;e:Rf0 {51Testing软件测试网Y$]z)jg+R(S$Pw
  strcpy(namex,name[mid]);51Testing软件测试网7k.V_Q@4_\;H6@|T
  return 0;
T)nuM#s8KK"VQ4UC c0 }
7^? ~ F8tY;n(D0 else if(seq[mid]>seqx)51Testing软件测试网mN,_.?9zM*^
  end=mid;
+Cr!g|n,JR_h,yY0 else
,Km8T{Jq0  begin=mid;
~Gow,p|c0    }
quwkfE"H0 return -1;51Testing软件测试网 {:mvnP0f#?
}
51Testing软件测试网]9Z(A%kn$i

51Testing软件测试网Bm+k@p

void main()
c:W_%D'u L `0{
4`:_X&H }7C+Bq6Y[;f0 int i,temp;51Testing软件测试网/Uy E^]-s3Q
 int result;
lY Tl3t7q.RR0 char namex[10];
2TN0c0F!S0 printf("请输入%d个职工的姓名和职工号,以空格和回车分割\n",N);51Testing软件测试网j6|&]-^NS^[t}
 func1();51Testing软件测试网G;NE*r wi3PEb
 func2();51Testing软件测试网?JtB-O6Ym
 printf("按职工号排序后为:\n");51Testing软件测试网?1m mf){i3f$Ds
 for(i=0;i<N;i++)51Testing软件测试网'Ft#G5}+a'N6Z
  printf("%d  %s\n",seq[i],name[i]);
_8h6Z ?`|#B[5K0 printf("请输入一个职工号:");
` WPfE0 scanf("%d",&temp);51Testing软件测试网h;GQ1n0M
 result=func3(temp,namex);
3Ti2tVSK*c0 if(result<0)51Testing软件测试网 t;p_+aej bq
  printf("该职工号对应的职工不存在\n");
z3qO9JGm$a)iqN-O0 else51Testing软件测试网^7N6S_L4e h i7u}
  printf("\n该职工号对应的职工姓名为%s\n",namex);
`S G"~|-H#Wp O0}
51Testing软件测试网Dwg,H9| ydMX

8m5y8g`7@J w08.16写一函数,输入一个十六进制数,输出相应的十进制数。51Testing软件测试网+Tr@,q1g
#include <stdio.h>
wt"@4_@0#include <math.h>
51Testing软件测试网 \2Mh {ZI

51Testing软件测试网)dI0gpSz x9M(aL)\

int chang()51Testing软件测试网!VvW#b-P~;u^A
{51Testing软件测试网^}+]f6v)o
 char str[100];51Testing软件测试网c7F0^S*w*U4Wl+f
 int a[100];51Testing软件测试网3a`@+Zw t%G'd r4L)`
 int result=0;
UGl vJCK0 int len,i;51Testing软件测试网DR)i$@k"[q
 printf("输入一个十六进制数:");51Testing软件测试网 |.Yk!OMwFO
 scanf("%s",str);51Testing软件测试网 m~g:G u_.Y+K
 len=strlen(str);51Testing软件测试网/H{?/D+G6n _
 for(i=0;i<len;i++)
Co@:IQ0  if((str[i]>='1'&&str[i]<='9')||(str[i]>='A'&&str[i]<='F')||(str[i]>='a'&&str[i]<='f'))51Testing软件测试网"ta7N'cQ!qf9p}3^~$p
   continue;51Testing软件测试网*cZkt(Qm2i&ej'W V7m
  else if((i==len-1)&&(str[i]=='0'))
)P7eBm2MQq.[u0   continue;
(q-MC\v8z0  else51Testing软件测试网9wy&wN PS;cQ9v/iB
  {51Testing软件测试网)]"^W7J,GP+p
   printf("该数不是十六进制\n");51Testing软件测试网%j!tB)M4xB0W
   return -1;51Testing软件测试网/c"V-KD1Cr]
  }
qG*J9^4m6{E/J0 for(i=0;i<len;i++)
)f^J!B5_6{ c*g9I0 {51Testing软件测试网0|r%ze/O:vn!~
  if(str[i]>='0'&&str[i]<='9')
3f0A7A2[J&q?p3p0   a[i]=str[i]-'0';
0is1rk3ZI x0  else if(str[i]>='A'&&str[i]<='F')51Testing软件测试网/} Z3q;C}.p0CH
   a[i]=str[i]-'A'+10;
;|R:XYJ,D0  else51Testing软件测试网l1r7eh(T1kl w/oH
   a[i]=str[i]-'a'+10;
1_1S0vS4i0g;M"@,[0 }
U p8X/I4O!B1t4lD0 for(i=0;i<len;i++)
-?OuD P@O0  printf("%d\n",a[i]);51Testing软件测试网nUv4Wz8Z!]/{*r
 for(i=0;i<len;i++)
'z8uLD PL;Z(l;pf0  result+=a[i]*pow(16,len-i-1);51Testing软件测试网|/O0i7l Ze
 printf("转换后的十进制数为%d\n",result);
.N;i5sg `9f0 return 0;51Testing软件测试网]^@7dA9TD
}

3r:O6^ m:^SQ(ET051Testing软件测试网-AZ*Lk!kPJeS

void main()
:b-`k2mhn A2~0{51Testing软件测试网| syvE
 int i;
!K9mYd9{lGeGx6s0 i=chang();
jJ0r+F ](m-A&T0}
51Testing软件测试网`&P8z8]JJ\7L

0{'uiq)n1R'l3Ou WC$f08.17用递归法将一个整数n转换成字符串。例如,输入486,应输出字符串"486"。n的位数不确定,可以是任意位数的整数。
aS@f(iA(V6?0
注:未使用递归法
$IG?7d+b-MBn0#include <stdio.h>
Y d Lu8NbE0#include <math.h>
51Testing软件测试网w4AvGK c1b

|2X]ta V0void trans()51Testing软件测试网u w6h[D+y
{51Testing软件测试网(m8z9E6PxX9U
 int a;
9D{Hw9R_*`C} P0 int b[100];51Testing软件测试网![ w)tP~`
 int j,i=1;51Testing软件测试网i0e l{'Yw7q-G!n ~D
 char str[100];51Testing软件测试网}&c}_5C
 printf("请输入一个整数:");
| vt#A$}{:k0 scanf("%d",&a);51Testing软件测试网O"}-zMy5xM+k$q
 while(a/(int)pow(10,i)!=0)
QW'n8nN-rJ0  i++;51Testing软件测试网 \PF-I?-y
 for(j=0;j<i;j++)
a6hhZ5bmyy(E0 {51Testing软件测试网~3Fx-T-Z"@/V4T
  b[j]=a%10;51Testing软件测试网zu0D6OvX4{8}*D!I
  a=a/10;
2v {Y2bk0R3eB:t0 }51Testing软件测试网o(T#M*E^6XL&N
 for(j=0;j<i;j++)51Testing软件测试网VYH_7S ^Y
  str[j]='0'+b[i-j-1];
v;M*_,v0Y'Tc,w pN0 str[j]='\0';51Testing软件测试网%}4p m`~t6q
 printf("对应的字符串为%s\n",str);
IWBnb0G0}

({SH d0Hv&zhn0

)S,l/Ki7VlO,S0void main()
"b W"i,q i)l"N*j+LU0{51Testing软件测试网:Bc7{:L9nO
 trans();51Testing软件测试网5DX,^U'Hh:dm2X
}

l$u,t2\j051Testing软件测试网4v~N4? Z

8.18 给出年、月、日,计算该日是该年的第几天。
s*\2ST!_g9TC Uz0注:未判断该年月日是否合法
~"gHm5j#d:U0#include <stdio.h>51Testing软件测试网5_g_ a#t7`S
#include <math.h>

~4z5E|{!Q#z.C051Testing软件测试网.h Al'_1V npb

int is_runn(int year)
dT4}{0?y/v0P0{51Testing软件测试网S4C&f+Hp{KF O
 if(year%4==0&&year%100!=0)51Testing软件测试网 D)Cz|1B
  return 1;
"J&V$g sE3Qx1ng0 else if(year%400==0)51Testing软件测试网*a'C"b kk.X
  return 1;
/C d(}r$yY3I5Q ]0|H0 else
jh2\z7Hk!\0  return 0;51Testing软件测试网#p] ?{Fq(Nu0u
}

['AR&KZ1hF%U051Testing软件测试网'I)L7B+c.]g

int func(int year,int month,int day)51Testing软件测试网QV!ijr Gd%P
{
+? i)z{-],Zl4O0 int a[12];51Testing软件测试网"N%BI~2yv0u g
 int result=0;51Testing软件测试网&X0cu E!\G
 int i;
`,s gOK0 if(is_runn(year)==1)
Y+L`m xaEY0  a[1]=29;51Testing软件测试网~^6Lx0w*_c+p
 else
`_z:Mm ]0B+_|0  a[1]=28;51Testing软件测试网 D q2l3BG%q?
 for(i=0;i<7;i+=2)
$W2?*C.lFOar#J1V3O0  a[i]=31;51Testing软件测试网N!GhH*l Z
 for(i=7;i<12;i+=2)
*i2Ww:^)u~.t2l-U0  a[i]=31;51Testing软件测试网C l-L3Y ~_`x
 for(i=3;i<6;i+=2)
.d%o8P0L M0  a[i]=30;
|+Vdt Zf8f7ef0 for(i=9;i<12;i+=2)
+J!G+O0fN fpb0  a[i]=30;
J\ jD"L] |0 i=0;
lZ.w%\2~%T0 while(month>i+1)
%a L(eN`9eF0 {
M/s-l;A6e c is0  result+=a[i];51Testing软件测试网3B|M/e/rH8F}V
  i++;
7[ H2H0BoK/l+[0 }51Testing软件测试网j8Bu9I#B4v
 result+=day;
9m&x w#wh{A-T,J0 return result;51Testing软件测试网3@z^;|(TU)J4q)\
}

.y P(j"`Z'[*a0

:H*CT`!vF1yM0void main()51Testing软件测试网8L$F"P'U{
{
#c7]^.k b'Z Qtz&S0 int year,month,day;51Testing软件测试网{&} Gh.b lc_h
 int temp;51Testing软件测试网 `;LwQ?%B;?%}
 printf("请输入年月日,以逗号分开:");51Testing软件测试网"I's0L%uO9gz~:t8]
 scanf("%d,%d,%d",&year,&month,&day);51Testing软件测试网a2_q`L g&I/p
 temp=func(year,month,day);
p:g4z(_k_W8V"C0 printf("该日是该年的第%d天\n",temp);51Testing软件测试网,vP_5x?z6[r\^0f;r z
}
k3c*W'KR4J\0
51Testing软件测试网TlbqP&oh y


TAG: 编程基础

Lovely Land 引用 删除 xiaoyanzi518   /   2009-04-09 11:58:27
佩服,以后向你学习
Lovely Land 引用 删除 xiaoyanzi518   /   2009-04-09 11:57:57
5
 

评分:0

我来说两句

Open Toolbar