C语言实现反序输出、分解质因数、回文数判断、斐波那契数列、素数判断、零钱换整、求兔子总数

14 篇文章 20 订阅

1. 编写程序,从键盘输入一个4位正整数,输出该数的反序数。反序数即原数各位上的数字颠倒次序形成的另一个整数,例如1234的反序数是4321,2468的反序数是8642。

在这里插入图片描述

#include "stdio.h"
int main() {
	int i;
	for(i=10; i <=999; i++)
		if((i/100==0&&i/10==i%10)||(i/100!=0&&i/100==i%10))
			printf("%d ",i);
}
#include "stdio.h"
int main() {
  int a,b;
  scanf("%d",&a);
  if (a%10==0)
    a=a/10;
  while (a>0)
  {
      b=a%10;
      a=a/10;
      printf("%d",b);
  }

2. 输入一个100以内的正整数,将其分解质因数后输出。如输入60,输出60=223*5

在这里插入图片描述

#include  "stdio.h"
int main()
{
	int x,i=2;
	scanf("%d",&x);
	printf("%d=",x);
	while(x!=i){
		if(x%i==0){
			printf("%d*",i);
			x=x/i;
		}
		else
			i++;
	}
	printf("%d",i);
}
#include "stdio.h"
int main() {
  int a,b;
    scanf("%d",&a);
    printf("%d=",a);
    for (int i = 2; i <= a; i++)
    {
        while (a!=0)
        {
            if (a%i==0)
            {
                printf("%d",i);  
                if (a/i >= 2) printf("*");
                a=a/i;
            }
            else
                break; 
        }   
    }
}

3. 找出所有满足以下特性的6位整数:它是一个完全平方数(完全平方数是指该数是某个整数的平方),该数同时也是回文数(回文数是指该数等于它的反序数)。例如,698896是836的平方并且698896是回文数,因此698896是满足所给条件的6位整数。输出所有满足上述条件的6位整数。

在这里插入图片描述

#include  "stdio.h"
#include  "math.h"
int main()
{
	int i,j,k;
	for(i=100000;i <=999999;i++){
		j=i;
		k=0;
		while(j!=0){
			k=k*10+j%10;
			j=j/10;
		}
		if(i==k&&(int)sqrt(i)==sqrt(i))
			printf("%d\n",i);
	}
}
//需要引入的文件
#include "stdio.h"
int main() {
  int a=836,b,c,d,j;
  a*=a;
  c=a;
  for (int i = 0; i < 1; i++)
  {
      d=5;
      for (int i = 0; i < 6; i++)
      {
          b=(a%10) ;
          j+=b*pow(10,d--);
          a=a/10;
      }
      if (c==j)
      {
          printf("%d",c);
      }
      else
       printf("%d",c);
      
  }
}

4. 找出回文数,打印10~1000之间满足下列条件的所有整数: 正序读和反序读都相同,例如:55、232等

在这里插入图片描述

#include "stdio.h"
int main() {
	int i;
	for(i=10; i <=999; i++)
		if((i/100==0&&i/10==i%10)||(i/100!=0&&i/100==i%10))
			printf("%d ",i);
}
#include "stdio.h"
int main() {
  int a,b;
  for (int i = 10; i <= 1000; i++)
  {
      b=i;
      a=0;
      while (b>0)
      {
          a=a*10+b%10;
          b/=10;  
      }
      if (a==i)
      {
          printf("%d ",i);
      }
  }
}

5. 求斐波那契数列的前40个数,并输出

在这里插入图片描述

#include  "stdio.h"
int main() {
	int f1=1,f2=1,f3;
	int i;
	printf("%d %d ",f1,f2);
	for(i=1; i <=38; i++) {
		f3=f1+f2;
		printf("%d ",f3);
		f1=f2;
		f2=f3;
	}
}
#include "stdio.h"
int main() {
  int a=1,b=1,c=0;
  for (int i = 0; i < 40; ++i)
  {
      printf("%d ",a);
      c=a+b;
      a=b;
      b=c;
  }
}

6. 输入一个大于3的整数n,判定它是否为素数(prime,又称质数)

在这里插入图片描述

#include  "stdio.h"
#include  "math.h"
int main() {
	int n,i,k;
	scanf("%d",&n);
	k=sqrt(n);
	for (i=2; i <=k; i++)
		if(n%i==0) 
			break;
	if(i <=k)
		printf("no\n",n);
	else 
		printf("yes\n",n);
	return 0;
}
#include "stdio.h"
int main() {
    int a,b=0;
    scanf("%d",&a);
    for (int i = 1; i <= a; i++)
    {
        if (a%i==0)
            b++;
    }
    if (b==2)
    {
        printf("yes");
    }
    else
        printf("no");
}

7. 求100~200间的全部素数

在这里插入图片描述

# include  "stdio.h"
# include  "math.h"
int main() {
	int n,k,i,m=0;
	for(n=101; n <=200; n=n+2) {
		k=sqrt(n);
		for (i=2; i <=k; i++)
			if (n%i==0) break;
		if (i>=k+1) {
			printf("%d ",n);
			m=m+1;
		}
		if(m%10==0) printf("\n");
	}
	printf ("\n");
	return 0;
}
#include "stdio.h"
int main() {
  int count =0;
  for (int  i = 100; i < 200; i++)
  {
    for (int j = 2; j <= i; j++)
    {
        if (i==j)
        {
            count++;
            printf("%d ",i);
        }
        if (i%j==0)
        {
            break;
        }
      
    }
    if (i==149 || i==197)
        printf("\n");
  }

8. 整元换零钱问题。把1元兑换成1分、2分、5分的硬币,共有多少种不同的换法?

在这里插入图片描述

#include  "stdio.h"
int main() {
   int i,j,k,n;
   n=100,k=0;
   for(i=0; i <=n/5; i++)
   	for(j=0; j <=(n-i*5)/2; j++) {
   		k++;
   	}
   printf("%d\n",k);
}
#include "stdio.h"
int main() {
  int  c1,c2,c5,sum=0;
  for(c1=0;c1<=100;c1++)  //1分硬币的兑换种数
    for(c2=0;c2<=50;c2++)  //2分硬币的兑换种数
      for(c5=0;c5<=20;c5++)  //5分硬币的兑换种数
        if(c1*1 + c2*2 +c5*5 ==100)   //从上⾯的for循环的种数中选择可以达到这个条件的⽅法,组成1元硬币
          sum++;
 printf("%d\n",sum);
}

9. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问40个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21…

在这里插入图片描述

#include "stdio.h"
#define N 40
int main() {
	long f1,f2;
	int i;
	f1=f2=1;
	for(i=1; i <=N/2; i++) {
		f1=f1+f2;
		f2=f1+f2; 
	}
	printf("%ld",f2);
}
#include "stdio.h"
int main() {
  int a=1,b=1,c;
  for (int i = 0; i <= 40; i++)
  {
      c=a+b;
      a=b;
      b=c;
  }
  printf("%d",a);
}
  • 9
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

回忆式~过去.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值