0601 P149
#include<stdio.h>
int main(void)
{
int i,k,a[50],j[11];
for(i=0;i<50;i++)
scanf("%d",&a[i]);
for(i=0;i<11;i++)
j[i]=0;
for(i=0;i<50;i++)
{
k=a[i]/10;
j[k]++;
}
printf("answer:\n");
for(i=0;i<11;i++)
printf("%3d--%3d:%6d\n",i*10,(i+1)*10-1,j[i]);
return 0;
}
0602 P152
#include<stdio.h>
int main(void)
{
int r,i,k,a[5][50],b[5][11];
for(i=0;i<5;i++)
{
for(r=0;r<50;r++)
scanf("%d",&(a[i][r]));
for(r=0;r<11;r++)
b[i][r]=0;
for(r=0;r<50;r++)
{
k=a[i][r]/10;
b[i][k]++;
}
printf("answer R:%d",i);
for(r=0;r<11;r++)
printf("%3d--%3d:%6d\n",r*10,(r+1)*10-1,b[i][r]);
}
return 0;
}
0603 P155(YangHuiA)
#include<stdio.h>
#define n 10
#define wideword 6
int main(void)
{
int a[n+1],b[n+1],i,j;
for(i=0;i<n;i++)
{
for(j=1;j<i;j++)a[j]=b[j-1]+b[j];
a[i]=1;
for(j=0;j<=i;j++)b[j]=a[j];
for(j=0;j<=40-i*(wideword/2);j++)printf("%c",' ');
for(j=0;j<=i;j++)printf("%6d",a[j]);
printf("\n");
}
return 0;
}
0603 P155(YangHuiB)
#include<stdio.h>
#define n 10
#define wide 6
int main (void)
{
int i,j,a[n+1];
for(i=0;i<n;i++)
{
a[i]=1;
for(j=i-1;j>0;j--)a[j]=a[j]+a[j-1];
for(j=0;j<=40-(wide/2)*i;j++)printf("%c",' ');
for(j=0;j<=i;j++)printf("%6d",a[j]);
printf("\n");
}
return 0;
}
0604 P156
#define m 10
#define n 20
#define p 30
float a[m][p],b[p][m],c[m][n];
void matrixproduct( ){
float e;int i,j,k;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
e=0;
for(k=0;k<p;k++)
e=e+a[i][k]*b[k][j];
c[i][j]=e;
}
}
0605 P157(主元排序)
#include<stdio.h>
#define M 5
int main (void)
{
int i,k,j,r,a[M];
for(i=0;i<M;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<M-1;i++)
{
j=i;
for(k=i+1;k<M;k++)
if(a[k]<a[j])j=k;
r=a[j];
a[j]=a[i];
a[i]=r;
}
printf("\nanswer:\n");
for(i=0;i<M;i++)
{
if(i%10==0)printf("\n");
printf("%6d",a[i]);
}
printf("\n");
return 0;
}
0606 P158(冒泡排序)
#include<stdio.h>
#include<stdbool.h>
#define M 5
void sortofup(int s[M],int n)
{
int i,r;
bool flag=true;
while(flag)
{
flag=false;
for(i=0;i<n-1;i++)
{
if(s[i]>s[i+1])
{
r=s[i];
s[i]=s[i+1];
s[i+1]=r;
flag=true;
}
}
}
}
int main(void)
{
int i,a[M];
for(i=0;i<M;i++)scanf("%d",&a[i]);
sortofup(a,M);
for(i=0;i<M;i++)
{
if(i%10==0)printf("\n");//为了格式美观
printf("%6d",a[i]);
}
printf("\n");
return 0;
}
0607 P161(插入排序)
void sort(int n,int a[ ]){
int i,j,k,r;
for(i=1;i<n;i++)
{
j=i-1;
while((a[j]>a[i])&&(j>=0))j=j-1;
r=a[i];
for(k=i-1;k>=j+1;k--)a[k+1]=a[k];
a[j+1]=r;
}
}
0608 P161(顺序检索)
int search(int n,int a[ ],int key){
int j;
for(j=n-1;j>=0&&key!=a[j];j--);
return j;
}
0609 P163(对半检索)
#include<stdio.h>
#define M 10
int a[M];
int half_search(int a[ ],int n,int key)
{
int lower,upper,j;
lower=0;
upper=n-1;
while(upper-lower>=0)
{
j=(upper+lower)/2;
if(a[j]==key)
return j;
else
{
if(a[j]<key)
lower=j+1;
else
upper=j-1;
}
}
return -1;
}
void main ( )
{
int k,i;
printf("please input achievement:\n");
for(i=0;i<M;i++)
scanf("%d",&a[i]);
printf("please input key:\n");
scanf("%d",&k);
i=half_search(a,M,k);
printf("\nanser:%d\n",i);
getchar();getchar();
}