部分编程答案
书P158
1.
#include
main()
{
char c,a[10]="abcdefg";
int i,top,bot,mid;
printf("input c:\n");
scanf("%c",&c);
printf("c=\'%c\'\n",c);
for(top=0,bot=10;top<=bot;)
{
mid=(top+bot)/2;
if(c==a[mid])
{
printf("The position is %d\n",mid+1);
break;
}
else if(c>a[mid]) top=mid+1;
else bot=mid-1;
}
if(top>bot) printf("**\n");
}
2.
#include
#include
main()
{
int x[21],i,j;
x[1]=0,x[2]=1;
i=3;
do
{
x[i]=x[i-2]+x[i-1];
x[i+1]=(int)fabs((x[i-1]-x[i]));
i=i+2;
}while(i<=20);
for(i=1;i<=20;i++)
{
printf("%6d",x[i]);
if(i%4==0) printf("\n");
}
}
3.
#include
main()
{
int num[20],i=0,d,n,j;
printf("\ninput d:");
scanf("%d",&d);
printf("input n:\n");
scanf("%d",&n);
printf("d=%d,n=%d==>",d,n);
do
{
i++;
num[i]=d%n;
d=d/n;
}while(d!=0);
for(j=i;j>=1;j--)
printf("%d",num[j]);
}
4.
#include
main()
{
int i,n,ns,flag,count,r,rs;
static int a[50];
count=0;
for(i=1;i<700;i++)
{
n=i;
ns=i*i;flag=1;
while(n>0&&flag)
{
r=n%10;n=n/10;
rs=ns%10;ns=ns/10;
if(rs!=r) flag=0;
}
if(flag)
{
a[count]=i;count++;
printf("%5d",i);
}
}
printf("\ncount=%d,max=%d",count,a[count-1]);
}
5.
#include
main()
{
int n;
double f[181],max=0;
f[0]=f[1]=1;
f[2]=0;
for(n=3;n<=50;n++)
{
f[n]=f[n-1]-2*f[n-2]+f[n-3];
if(max
}
printf("\nmax=%.0lf\n",max);
}
6.
#include
main()
{
int a[1001],i,s=0,n=1;
for(i=1;i<=1000;i++) a[i]=i;
a[1]=0;
for(i=1;i<=1000;i++)
{
if(a[i]!=0)
{
s+=1;
if(s==50)
{
n++;
if(n==1000)
{
printf("\na[%d]=%d",i,a[i]);
break;
}
a[i]=0;s=0;
}
}
if(i==1000) i=0;
}
}
7.
#include
main()
{
int a[10][10],i,j,t;
printf("input lines<10:\n");
scanf("%d",&t);
for(i=1;i<=t;i++)
{
for(j=1;j<=i;j++)
{
if((i==j)||(j==1)) a[i][j]=1;
else a[i][j]=a[i-1][j-1]+a[i-1][j];
printf("%5d",a[i][j]);
}
printf("\n");
}
}
8.
#include
int sushu(int n)
{
int flag=1,i;
for(i=2;i<=n/2;i++)
if(n%i==0) {flag=0;break;}
return flag;
}
main()
{
int i,b,max1=0,max2=0,count=0;
for(i=2;i<=299;i++)
{
if(sushu(i))
{
b=i+2;
if(sushu(b))
{
if(i>max1) {max1=i;max2=b;}
count++;
}
}
}
printf("count=%d\nmax1=%4dmax2=%4d\n",count,max1,max2);
}
9.
#include
main()
{
int a[10]={2,4,6,8,10,12,14,16,18,20},b[10]={1,3,5,7,9,11,13,15,17,19},c[20],i,j,t,k;
i=j=t=0;
do
{
if(a[i]
else {c[t]=b[j];t++;j++;}
}while(i<10&&j<10);
if(i<10)
for(k=i;k<10;k++)
{
c[t]=a[k];t++;
}
else
for(k=i;k<10;k++)
{
c[t]=b[k];t++;
}
fo
r(j=0;j<20;j++)
printf("%4d",c[j]);
}
10.
#include
main()
{
int a[10][10],i,j,k=0,m,n;
printf("iput n