1.6 一维数组(part1)
1.6.1与指定数字相同的数的个数
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,m,i,ctr=0;
int ray[105];
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&ray[i]);
scanf("%d",&m);
for(i=1;i<=n;i++)
if(ray[i]==m) ctr++;
printf("%d",ctr);
return 0;
}
1.6.2陶陶摘苹果
#include <stdio.h>
#include <stdlib.h>
int main()
{
int ah[15];
int th,i,ctr=0;
for(i=1;i<=10;i++)
scanf("%d",&ah[i]);
scanf("%d",&th);
for(i=1;i<=10;i++)
{
if(ah[i]<=th+30) ctr++;
}
printf("%d",ctr);
return 0;
}
1.6.3计算书费
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num[15]={0};
double price[15]={28.9,32.7,45.6,78,35,86.2,27.8,43,56,65};
int i;
double sum=0;
for(i=0;i<10;i++)
{
scanf("%d",&num[i]);
sum+=num[i]*price[i];
}
printf("%.1lf",sum);
return 0;
}
1.6.4数组逆序重放
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,i,a[105],b[105];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[n-i]=a[i];
}
for(i=1;i<=n;i++)
printf("%d ",b[i]);
return 0;
}
1.6.5年龄与疾病
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,n,ag=0;
double age[5]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&ag);
if(ag>=0 && ag<=18) age[1]++;
if(ag>=19 && ag<=35) age[2]++;
if(ag>=36 && ag<=60) age[3]++;
if(ag>=61) age[4]++;
}
for(i=1;i<=4;i++)
{
age[i]/=n;
age[i]*=100;
printf("%.2lf%%\n",age[i]);
}
return 0;
}
1.6.7有趣的跳跃
#include <stdio.h>
#include <stdlib.h>
int comp(const void*a, const void*b)
{
return *(int*)a-*(int*)b;
}
int main()
{
int n,i,bl=0,m;
int in[3005]={0};
int leap[3005]={0};
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&in[i]);
if(n>=1)
{
for(i=1;i<n;i++)
{
m=in[i]-in[i-1];
if(m<0) m=-m;
leap[i-1]=m;
}
qsort(leap,n-1,sizeof(int),comp);
for(i=1;i<n;i++)
{
if(leap[i-1]!=i)
bl=1;//not jolly
}
}
if(bl==1) printf("Not jolly");
else printf("Jolly");
return 0;
}
1.6.8石头剪刀布
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n,na,nb,xa,xb;
int i,ca=0,cb=0;
int a[105],b[105];
scanf("%d%d%d",&n,&na,&nb);
for(i=0;i<na;i++)
scanf("%d",&a[i]);
for(i=0;i<nb;i++)
scanf("%d",&b[i]);
for(i=0;i<n;i++)
{
xa=i%na;
xb=i%nb;
if((a[xa]-b[xb]==-2)||(a[xa]-b[xb]==-3)||(a[xa]-b[xb]==5))
ca++;
if((a[xa]-b[xb]==2)||(a[xa]-b[xb]==3)||(a[xa]-b[xb]==-5))
cb++;
}
if(ca>cb)
printf("A");
else if(ca==cb)
printf("draw");
else printf("B");
return 0;
}
1.6.9向量点积计算
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n;
long long int ans=0;
int i;
int a[1005],b[1005];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
for(i=0;i<n;i++)
ans+=a[i]*b[i];
printf("%lld",ans);
return 0;
}
1.6.10大整数加法
1.6.11大整数减法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char x[205],y[205];
int a[205]={0},b[205]={0};
int ans[205]={0};
int la=0,lb=0,adding=0;
int i,t;
scanf("%s",x);
scanf("%s",y);
la=strlen(x);
lb=strlen(y);
for(i=0;i<la;i++)
{
a[i]=x[la-i-1]-'0';
ans[i]=a[i];
}
for(i=0;i<lb;i++)
b[i]=y[lb-i-1]-'0';
//输入完毕
for(i=0;i<=lb+1;i++)
{
ans[i]=a[i]-b[i]-adding;
adding=0;
if(ans[i]<0)
{
ans[i]+=10;
adding=1;
}
}
while(ans[la]==0)
la--;
for(i=la;i>=0;i--)
printf("%d",ans[i]);
return 0;
}
1.6.12计算2的N次方
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n;
int ans[1000]={0};
int len=1,i,t,adding=0;
ans[0]=1;
scanf("%d",&n);
for(t=0;t<n;t++)
{
if(ans[len-1]>=5) len++;
for(i=0;i<len;i++)
{
ans[i]*=2;
ans[i]+=adding;
adding=0;
if(ans[i]>=10)
{
ans[i]%=10;
adding=1;
}
}
}
for(i=len-1;i>=0;i--)
printf("%d",ans[i]);
return 0;
}