SCAU程序设计在线实训平台_考试_ 2020级计算机***第(4)次堂测

1、因子和:

描述:

给定一个数N,可以计算该数所有因子(除它本身之外)的和,如12的因子和为16,现给定一个和,
求1~10000之间所有可得到该和的数,按由小到大,一行一个输出。
注:能整除N的数称为N的因子

输入格式:

一个正整数

输出格式:

所有满足题意的数

输入样例:

6

输出样例:

6
25

代码实现(参考):
#include <stdio.h>

int main()
{
    int a, h=0;
    scanf("%d",&a);

    for(int n=1; n<=10000; n++){
        for(int j=1; j<n; j++){
            if(n % j == 0){
                h += j;
            }
        }
        if(h == a){
            printf("%d\n", n);
        }
        h = 0;
    }

    return 0;
}

2、计算组合数:

描述:

由键盘输入m和n,计算组合数,公式如下:
在这里插入图片描述

输入格式:

m与n

输出格式:

组合数

输入样例:

6 2

输出样例:

15

提示:

建议用函数的方法简化代码

代码实现(参考):
#include <stdio.h>
int m,n;
int jiecheng(int x){
    int result = 1;
    for(int i=1;i<=x;i++){
        result *= i;
    }
    return result;
}

int zuhe(int m,int n){
    int result;
    result = jiecheng(m)/(jiecheng(m-n)*jiecheng(n));
    return result;
}

int main()
{
    scanf("%d %d",&m,&n);
    printf("%d",zuhe(m,n));

    return 0;
}

3、[填空题]最近对问题:

描述:

下列程序,实现由键盘输入n(n<50)个点的坐标x,y(x,y<1000),计算出最近两个点的距离。(保留三位小数) 请填空:

#include "stdio.h" 
#include "math.h" 

int d(int x,int y,int m,int n){ 
    int i,j; 
    i=x-m; 
    j=y-n; 
    return _______________________; 
} 

int main() 
{ 
    int i,j; 
    int x[50],y[50]; 
    float ff; 
    int m,_______________________,n; 
    scanf("%d",&i); 
    j=0; 
    while(j<i) 
    { 
        scanf("%d%d",&x[j],&y[j]); 
        _______________________; 
    } 

    for(j=0;j<i;j++) 
    { 
        for(m=j+1;m<i;m++) 
            if(min==0||d(x[j],y[j],x[m],y[m])<min)  
                 min=_______________________; 
    } 
    ff=sqrt(min); 
    printf("%.3f",ff); 
} 
输入样例:

3 0 0 1 2 2 2

输出样例:

1.000

代码实现(参考):
#include "stdio.h"
#include "math.h"

int d(int x,int y,int m,int n){
    int i,j;
    i=x-m;
    j=y-n;
    return i*i+j*j; //距离平方
}

int main()
{
    int i,j;
    int x[50],y[50];
    float ff;
    int m,min=0,n;
    scanf("%d",&i);
    j=0;
    while(j<i)
    {
        scanf("%d%d",&x[j],&y[j]);
        j++;    //输入点的个数
    }

    for(j=0;j<i;j++)
    {
        for(m=j+1;m<i;m++)
            if(min==0||d(x[j],y[j],x[m],y[m])<min)
                 min=d(x[j],y[j],x[m],y[m]);    //最小值
    }

    ff=sqrt(min);
    printf("%.3f",ff);
}

4、判断3次方数:

描述:

输入一个正整数n,问你这个数是不是某个整数的3次方。

输入格式:

一个整数n(0<n<=1000000)

输出格式:

是,输出YES(全大写),如果不存在,输出NO(全大写)

输入样例:

1000

输出样例:

YES

代码实现(参考):
#include "stdio.h"

int main()
{

    int n,flag=0;
    scanf("%d",&n);
    for(int i = 1; i<n; i++){
        if(i*i*i==n){
           flag=1;
        }
    }
    if(flag){
        printf("YES");
    }
    else{
        printf("NO");
    }
}

严禁抄袭!

严禁抄袭!

严禁抄袭!

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值