一个个人定制的编程错题集

一个个人定制的编程错题集

从1的阶乘累加到n的阶乘

//1!+2!+...+n!
#include <stdio.h>
int main(void)
{
    int n,sum=0;
    scanf("%d",&n);
    for (int i=1; i<=n; i++)
    {
        int m=1;
        for (int j=1; j<=i; j++)
        {
            m*=j;
        }
        sum+=m;
    }
    printf("%d\n",sum);
}

从1/(1!)累加到1/(n!)

#include <stdio.h>
int main(void)
{
    double n,sum=0;
    scanf("%lf",&n);
    for (int i=1; i<=n; i++)
    {
        double m=1;
        for (int j=1; j<=i; j++)
        {
            m*=j;
        }
        sum+=(1/m);
    }
    printf("%f\n",sum);
}

反置数

个整数的“反置数”指的是把该整数的每一位数字的顺序颠倒过来所得到的另一个整数。如果一个整数的末尾是以0结尾,那么在它的反置数当中,这些0就被省略掉了。

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

数位分离

编写一个程序,输入一个1000 以内的正整数,然后把这个整数的每一位数字都分离出来,并逐一地显示。

#include <stdio.h>
#define N 100
int main()
{
    int n,m,t=0,num[N]={0};
    scanf("%d",&n);
    while (n)
    {
        m=n%10;
        n/=10;
        num[t]=m;
        t++;
    }
    for (int i=t-1; i>=0; i--)
    {
        printf("%d ",num[i]);
    }
}

完数

一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,而6=1+2+3,因此6就是“完数”。又如,28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28也是“完数”。编写一个程序,判断用户输入的一个数是否为“完数”。


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


水仙花数

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


回文数

#include<stdio.h>
int main()
{
	int n,j,k,a[30];
	int i = 0;
	scanf("%d",&n);
	while(n > 0)
	{
		a[i++] = n % 10;
		n /= 10;
	}
	j = 0;
	k = i - 1;
	while(a[j] == a[k] && j <= i - 1) 
	 //一一比对,注意:j<=i - 1是为了在位数范围内 
	{
		j++;
		k--;
	}
	if(j > i - 1)    //有些类似判断素数的结构
		puts("yes");
	else
		puts("no");
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Gowi_fly

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

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

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

打赏作者

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

抵扣说明:

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

余额充值