【单循环结构】习题

沈阳航空航天大学习题的整理,仅供参考。

1.完数判断程序

【问题描述】一个数如果恰好等于它的真因子之和,这个数就称为"完数"。例如,6的真因子有1、2、3,而6=1+2+3,因此6是"完数"。从键盘输入一个正整数m,判断其是否是完数,并按下面格式输出判断结果:

1、m是完数:6=1+2+3

2、m不是完数,真因子之和小于m:4>1+2

2、m不是完数,真因子之和大于m:12<1+2+3+4+6

【输入形式】输入正整数m。

【输出形式】判断m是否为完数并输出可能的结果。

【样例输入】6

【样例输出】6=1+2+3

【样例输入】4

【样例输出】4>1+2

【样例输入】12

【样例输出】12<1+2+3+4+6

#include <stdio.h>
int main()
{
    int n, i, sum = 0;
    scanf("%d", &n);
    for (i = 1; i < n; i++)
    {
        if (n % i == 0)
            sum += i;
    }
    if (n == sum)
    {
        printf("%d=1", n);
        for (i = 2; i < n; i++)
        {
            if (n % i == 0)
                printf("+%d", i);
        }
    }
    else if (n > sum)
    {
        printf("%d>1", n);
        for (i = 2; i < n; i++)
        {
            if (n % i == 0)
                printf("+%d", i);
        }
    }
    else if (n < sum)
    {
        printf("%d<1", n);
        for (i = 2; i < n; i++)
        {
            if (n % i == 0)
                printf("+%d", i);
        }
    }
    return 0;
}

2.整数反序输出

【问题描述】输入一个正整数m,将该数反序输出,如1234,反序输出为4321。

【输入形式】输入正整数m。

【输出形式】反序输出m。

【样例输入】1234

【样例输出】4321

【样例输入】100

【样例输出】1

#include <stdio.h>
int main()
{
	int a, b, sum = 0;
	scanf("%d", &a);
	b = a;
	while (b != 0)
	{
		sum = sum * 10 + b % 10;
		b = b / 10;
	}
	printf("%d", sum);
	return 0;
}

3.某序列求和

【问题描述】从键盘输入正整数 n,编程实现序列 2/1,3/2,5/3,8/5,13/8,21/13 ...... 的前 n 项之和。

【输入形式】输入正整数 n。

【输出形式】输出求和结果,保留小数点后两位。

【样例输入】1

【样例输出】2.00

【样例输入】25

【样例输出】40.75

#include <iostream>
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n;
    double sum = 0;

    scanf("%d", &n);
    int i;
    double x = 2, y = 1, t;
    for (i = 1; i <= n; i++)
    {
        sum += x / y;
        t = x;          //把分子的值赋给t
        x = y + x;      //把x+y的值赋给分母x 
        y = t;          //把t的值赋给分子
    }
    printf("%.2lf", sum);
    return 0;
}

4.求多项式 1+2+3+...+n 的前n项之和

【问题描述】求多项式 1+2+3+...+n 的前n项之和。n值由键盘输入(n不大于100)。

【输入形式】1个整数

【输出形式】1个整数

【样例输入】3

【样例输出】6

#include <iostream>
#include <stdio.h>
int main()
{
    int i, n, sum;
    sum = 0;//1
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
        sum = sum + i;//2
    printf("%d", sum);
    return 0;
}

5.求水仙花数的个数

【问题描述】输出区间[a, b]内所有水仙花数的个数。(水仙花数指一个三位数其各位的立方和等于该数,如:153 = 1 * 1 * 1 + 5 * 5 * 5 + 3 * 3 * 3。)

【输入形式】包含2个正整数a, b(a <= b; 例如:[100, 999])

【输出形式】输出区间[a, b]内的所有水仙花数个数

【样例输入】100 200

【样例输出】1

#include<stdio.h>
int main()
{
	int m, n, a, b, c, i = 0;
	scanf("%d%d", &m, &n);
	while (m <= n)
	{
		a = m / 100;
		b = m % 100 / 10;
		c = m % 10;
		if (m == a * a * a + b * b * b + c * c * c)
			i++;
		m++;
	}
	printf("%d\n", i);
	return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lnk_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值