慕课第八周编程题在线测试

摘苹果

陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当他不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度(已知在100cm到200cm之间,包括100cm和200cm),以及陶陶把手伸直时能达到的最大高度(已知在100cm到120cm之间,包括100cm和120cm),请你编写程序帮助陶陶计算一下他能摘到的苹果数目。假设他碰到苹果,苹果就会掉下来。函数原型:int GetApple(int a[], int height, int n);函数功能:计算淘淘能摘到的苹果数目函数参数:数组a保存苹果到地面的高度;height代表陶陶把手伸直时能达到的最大高度;n为苹果数函数返回值:淘淘能摘到的苹果数目

#include <stdio.h>
int GetApple(int a[], int height, int n)
{
 int i;
 for(i = 0;i < 10; i++)
 {
  if(a[i] <= height)
   n++;
 }
 return n;
}
int main()
{
    int n,a[11],he,i,m;
    n=0;
    for(i = 0;i < 10; i++)
    {
     scanf("%d",&a[i]);
 }
 scanf("%d",&he);
 he=he+30;
 m=GetApple(a,he,n);
 printf("%d",m);
    return 0;
}

好数对

已知一个集合A,对A中任意两个不同的元素求和,若求得的和仍在A内,则称其为好数对。例如,集合A={1 2 3 4},1+2=3,1+3=4,则1,2和1,3 是两个好数对。编写程序求给定集合中好数对的个数。注:集合中最多有1000个元素,元素最大不超过10000

#include <stdio.h>
int bubble(int a[],int n,int m)
{
 int i,fa=0;;
 for(i=0;i<n;i++)
 {
  if(a[i]==m)
   fa=1;
 }
 return fa;
}
int main()
{
 int a[1001],b,n,m,i,j,count;
 scanf("%d",&n);
 for(i = 0;i < n;i ++)
 {
  scanf("%d",&a[i]);
 }
 
 m=0;
 for(i = 0;i < n-1;i ++)
 {
  for(j = i+1;j < n;j ++)
  {
   count=a[i]+a[j];
   b = bubble(a,n,count);
   m+=b;
  }
 }
 printf("%d",m);
 return 0;
}

组合三位数

将0到9这十个数字分成三个3位数,要求第一个3位数,正好是第二个3位数的1/2,是第三个3位数的1/3。问应当怎样分,编写程序实现。

#include<stdio.h>
int combination(int x,int y,int z)
{
 int i,j,k,a[10]={0};
 k=0;
 while(x>0)
 {
  j=x%10;
  a[j]++;
  x=x/10;
 }
 while(y>0)
 {
  j=y%10;
  a[j]++;
  y=y/10;
 }
  while(z>0)
 {
  j=z%10;
  a[j]++;
  z=z/10;
 }
 for(i=0;i<10;i++)
 {
  if(a[i]==1)
   k++;
 }
 return k;
}
int main()
{
 int i,j,n,m;
 for(i=100;i<339;i++)
 {
  n=i*2;
  m=i*3;
  j=combination(i,n,m);
  if(j==9)
  {
   printf("%d,%d,%d\n",i,n,m);
  }
 }
 return 0;
}

求100以内的最大素数

编程计算n(n<=500)以内的10个最大素数及其和,分别输出这最大的10个素数及其和。n的值要求从键盘输入。要求10个素数按从大到小的顺序输出。程序运行示例1:
Input n(n<=500):10↙
7 5 3 2
sum=17

#include<stdio.h>
int main()
{
 int i,j,f,k=0,n,a[12]={0},b=0,sum=0;
 printf("Input n(n<=500):");
 scanf("%d",&n);
 for(i=n;i>1;i--)
 {
  f=1;
  for(j=2;j<i;j++)
  {
   if(i%j==0)
   {
    f=0;
    break;
   }
  }
  if(f==1)
  {
   a[b]=i;
   k++;b++;
  }
  if(k==10)
   break;
 }
 for(i=0;i<k;i++)
 {
  printf("%6d",a[i]);
  sum+=a[i];
 }
 printf("\nsum=%d\n",sum);
 return 0;
}

第四题我打算使用开平方根的方式来减少运行时间但是提交的时候,出现了部分案例不能通过,只好采用笨方法

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值