南信大程序设计大赛题目及代码

给出n个正整数和一个正整数m,求出这n个正整数中是m的倍数的所有数的平均值。
输入: 输入包含若干组,每组包含三行,第一行为n(n<200),第二行为n个
正整数,第三行为正整数m。如果n为0表示输入结束。
输出: 对每组测试样例输出一行,这n个正整数中是m的倍数的所有数的平均值。
结果小数点后保留2位小数。如果没有满足条件的数,则输出-1

#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define N 3
void main()
{
 int i,j,k=0,n,*A,m;
 float sum=0.0;       //care
    for(i=0;i<N;i++){
     printf("输入整数个数:");
  scanf("%d",&n);
  if(n==0)
   exit(0);
  A=(int*)malloc(n*sizeof(int));
     printf("输入n个整数: ");
  for(j=0;j<n;j++){
     scanf("%d",&A[j]);
  }
  printf("输入整数m: ");
  scanf("%d",&m);
        for(j=0;j<n;j++)
   if(A[j]%m==0){
    sum+=A[j];
    k++;
  }
  if(sum==0)
   printf("-1");
  printf("%0.2f",sum/k);
 }
}


给出平面上的三个点(点的坐标都是整数),求三点构成的三角形的周长
输入: 
  输入的第一行为N, 接下来包括N组测试数据,每组数据为3行,每行2个整数,
  分别为该点的横坐标和纵坐标。
输出: 
  输出为N行,每行为得出的结果。最终结果小数点后保留两位。

#include<stdio.h>
#include<math.h>
typedef struct{
   int x,y;
}Point;
void main()
{
     int N,i,j;
  double S1,S2,S3;
  Point p[3];
  scanf("%d",&N);
  for(i=0;i<N;i++){
      for(j=0;j<3;j++)
    scanf("%d %d",&p[j].x,&p[j].y);
    S1=sqrt((p[0].x-p[1].x)*(p[0].x-p[1].x)+(p[0].y-p[1].y)*(p[0].y-p

[1].y));
             S2=sqrt((p[2].x-p[1].x)*(p[2].x-p[1].x)+(p[2].y-p[1].y)*(p[2].y-p[1].y));
    S3=sqrt((p[0].x-p[2].x)*(p[0].x-p[2].x)+(p[0].y-p[2].y)*(p[0].y-p

[2].y));
   printf("%0.2f",S1+S2+S3);
  }
}

 


 问题大意是给定一个正整数a(1<a<30000),能有多少种满足后面表达式的分解方法  a =

a1*a2*a3*...*an,
 并且1<a1<=a2<=a3<=...<=an。注意a = a也是一种分解。

输入: 第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a

输出: n行,每行输出对应一个输入。输出应是一个正整数,指明满足要求的因式分解的个数


#include<stdio.h>
#include<malloc.h>
int k=0;
int fun(int x)
{
   int i;
   printf("*****%d\n",x);
   for(i=2;i<x;i++){
      if(x%i==0)
    break;
   }
   if(x==i)
    return k;
   k++;
   x=x/i;
   fun(x);                //递归调用
   return k;
}
void main()
{
   int n,i,*A,*B;
   sc

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值