if(a%i==0)/*如果i是a的因子*/
{n++;/*n加1,表示新找到一个因子*/
s=s-i;/*s减去已找到的因子,s的新值是尚未求出的因子之和*/
switch(n)/*将找到的因子赋给k1...k9,或k10*/
{case1:
k1=i;break;/*找出的笫1个因子赋给k1*/
case2:
k2=i;break;/*找出的笫2个因子赋给k2*/
case3:
k3=i;break;/*找出的笫3个因子赋给k3*/
case4:
k4=i;break;/*找出的笫4个因子赋给k4*/
case5:
k5=i;break;/*找出的笫5个因子赋给k5*/
case6:
k6=i;break;/*找出的笫6个因子赋给k6*/
case7:
k7=i;break;/*找出的笫7个因子赋给k7*/
case8:
k8=i;break;/*找出的笫8个因子赋给k8*/
case9:
k9=i;break;/*找出的笫9个因子赋给k9*/
case10:
k10=i;break;/*找出的笫10个因子赋给k10*/
}
}
if(s==0)
{
printf("%d,Itsfactorsare",a);
if(n>1)printf("%d,%d",k1,k2);/*n>1表示a至少有2个因子*/
if(n>2)printf(",%d",k3);/*n>2表示至少有3个因子,故应再输出一个因子*/
if(n>3)printf(",%d",k4);/*n>3表示至少有4个因子,故应再输出一个因子*/
if(n>4)printf(",%d",k5);/*以下类似*/
if(n>5)printf(",%d",k6);
if(n>6)printf(",%d",k7);
if(n>7)printf(",%d",k8);
if(n>8)printf(",%d",k9);
if(n>9)printf(",%d",k10);
printf("\n");
}
}
return0;
}
5-9-2
#include
intmain()
{intm,s,i;
for(m=2;m<1000;m++)
{s=0;
for(i=1;iif((m%i)==0)s=s+i;
if(s==m)
{printf("%d,itsfactorsare",m);
for(i=1;iif(m%i==0)printf("%d",i);
printf("\n");
}
}
return0;
}
5-10
#include
intmain()
{
inti,n=20;
doublea=2,b=1,s=0,t;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a,
a=a+b,
b=t;
}
printf("sum=%16.10f\n",s);
return0;
}
5-11
#include
intmain()
{
doublesn=100,hn=sn/2;
intn;
for(n=2;n<=10;n++)
{
sn=sn+2*hn;/*第n次落地时共经过的米数*/
hn=hn/2;/*第n次反跳高度*/
}
printf("第10次落地时共经过%f米\n",sn);
printf("第10次反弹%f米\n",hn);
return0;
}
5-12
#include
intmain()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第1天的桃子数是第2天桃子数加1后的2倍.*/
x2=x1;
day--;
}
printf("total=%d\n",x1);
return0;
}
5-13
#include
#include
intmain()
{
floata,x0,x1;
printf("enterapositivenumber:
");
scanf("%f",&a);
x0=a/2;
x1=(x0+a/x0)/2;
do
{x0=x1;
x1=(x0+a/x0)/2;
}while(fabs(x0-x1)>=1e-5);
printf("Thesquarerootof%5.2fis%8.5f\n",a,x1);
return0;
}
5-14
#include
#include
intmain()
{doublex1,x0,f,f1;
x1=1.5;
do
{x0=x1;
f=((2*x0-4)*x0+3)*x0-6;
f1=(6*x0-8)*x0+3;
x1=x0-f/f1;
}while(fabs(x1-x0)>=1e-5);
printf("Therootofequationis%5.2f\n",x1);
return0;
}
5-15
#include
#include
intmain()
{floatx0,x1,x2,fx0,fx1,fx2;
do
{printf("enterx1&x2:
");
scanf("%f,%f",&x1,&x2);
fx1=x1*((2*x1-4)*x1+3)-6;
fx2=x2*((2*x2-4)*x2+3)-6;
}while(fx1*fx2>0);
do
{x0=(x1+x2)/2;
fx0=x0*((2*x0-4)*x0+3)-6;
if((fx0*fx1)<0)
{x2=x0;
fx2=fx0;
}
else
{x1=x0;
fx1=fx0;
}
}while(fabs(fx0)>=1e-5);
printf("x=%6.2f\n",x0);
return0;
}
_
5-16
#include
intmain()
{inti,j,k;
for(i=0;i<=3;i++)
{for(j=0;j<=2-i;j++)
printf("");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{for(j=0;j<=i;j++)
printf("");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
return0;
}
5-17
#include
intmain()
{
chari,j,k;/*是a的对手;j是b的对手;k是c的对手*/
for(i='x';i<='z';i++)
for(j='x';j<='z';j++)
if(i!
=j)
for(k='x';k<='z';k++)
if(i!
=k&&j!
=k)
if(i!
='x'&&k!
='x'&&k!
='z')
printf("A--%c\nB--%c\nC--%c\n",i,j,k);
return0;
}
第6章利用数组处理批量数据【第168页】
6-1
#include
#include
intmain()
{inti,j,n,a[101];
for(i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;ifor(j=i+1;j<=100;j++)
{if(a[i]!
=0&&a[j]!
=0)
if(a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for(i=2,n=0;i<=100;i++)
{if(a[i]!
=0)
{printf("%5d",a[i]);
n++;
}
if(n==10)
{printf("\n");
n=0;
}
}
printf("\n");
return0;
}
6-2
#include
intmain()
{inti,j,min,temp,a[11];
printf("enterdata:
\n");
for(i=1;i<=10;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
printf("Theorginalnumbers:
\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for(i=1;i<=9;i++)
{min=i;
for(j=i+1;j<=10;j++)
if(a[min]>a[j])min=j;
temp=a[i];
a[i]=a[min];
a[min]=temp;
}
printf("\nThesortednumbers:
\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
return0;
}
6-3
#include
intmain()
{
inta[3][3],sum=0;
inti,j;
printf("enterdata:
\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%3d",&a[i][j]);
for(i=0;i<3;i++)
sum=sum+a[i][i];
printf("sum=%6d\n",sum);
return0;
}
6-4
#include
intmain()
{inta[11]={1,4,6,9,13,16,19,28,40,100};
inttemp1,temp2,number,end,i,j;
printf("arraya:
\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("insertdata:
");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
printf("Nowarraya:
\n");
for(i=0;i<11;i++)
printf("%5d",a[i]);
printf("\n");
return0;
}
6-5
#include
#defineN5
intmain()
{inta[N],i,temp;
printf("enterarraya:
\n");
for(i=0;iscanf("%d",&a[i]);
printf("arraya:
\n");
for(i=0;iprintf("%4d",a[i]);
for(i=0;i{temp=a[i];
a[i]=a[N-i-1];
a[N-i-1]=temp;
}
printf("\nNow,arraya:
\n");
for(i=0;iprintf("%4d",a[i]);
printf("\n");
return0;
}
6-6
#include
#defineN10
intmain()
{inti,j,a[N][N];
for(i=0;i{a[i][i]=1;
a[i][0]=1;
}
for(i=2;ifor(j=1;j<=i-1;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i{for(j=0;j<=i;j++)
printf("%6d",a[i][j]);
printf("\n");
}
printf("\n");
return0;
}
6-7
#include
intmain()
{inta[15][15],i,j,k,p,n;
p=1;
while(p==1)
{printf("entern(n=1--15):
");
scanf("%d",&n);
if((n!
=0)&&(n<=15)&&(n%2!
=0))
p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1;
j=j+1;
if((i<1)&&(j>n))
{i=i+2;
j=j-1;
}
else
{if(i<1)i=n;
if(j>n)j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
return0;
}
6-8
#include
#defineN4
#defineM5/*数组为4行5列*/
intmain()
{
inti,j,k,a[N][M],max,maxj,flag;
printf("pleaseinputmatrix:
\n");
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;i{max=a[i][0];/*开始时假设a[i][0]最大*/
maxj=0;/*将列号0赋给maxj保存*/
for(j=0;jif(a[i][j]>max)
{max=a[i][j];/*将本行的最大数存放在max中*/
maxj=j;/*将最大数所在的列号存放在maxj中*/
}
flag=1;/*先假设是鞍点,以flag为1代表*/
for(k=0;kif(max>a[k][maxj])/*将最大数和其同列元素相比*/
{flag=0;/*如果max不是同列最小,表示不是鞍点令flag1为0*/
continue;}
if(flag)/*如果flag1为1表示是鞍点*/
{printf("a[%d][%d]=%d\n",i,maxj,max);/*输出鞍点的值和所在行列号*/
break;
}
}
if(!
flag)/*如果flag为0表示鞍点不存在*/
printf("Itisnotexist!
\n");
return0;
}
6-9
#include
#defineN15
intmain()
{inti,number,top,bott,mid,loca,a[N],flag=1,sign;
charc;
printf("enterdata:
\n");
scanf("%d",&a[0]