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

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

这里写目录标题
    • 1. 编写程序,从键盘输入一个4位正整数,输出该数的反序数。反序数即原数各位上的数字颠倒次序形成的另一个整数,例如1234的反序数是4321,2468的反序数是8642。
    • 2. 输入一个100以内的正整数,将其分解质因数后输出。如输入60,输出60=2*2*3*5
    • 3. 找出所有满足以下特性的6位整数:它是一个完全平方数(完全平方数是指该数是某个整数的平方),该数同时也是回文数(回文数是指该数等于它的反序数)。例如,698896是836的平方并且698896是回文数,因此698896是满足所给条件的6位整数。输出所有满足上述条件的6位整数。
    • 4. 找出回文数,打印10~1000之间满足下列条件的所有整数: 正序读和反序读都相同,例如:55、232等
    • 5. 求斐波那契数列的前40个数,并输出
    • 6. 输入一个大于3的整数n,判定它是否为素数(prime,又称质数)
    • 7. 求100~200间的全部素数
    • 8. 整元换零钱问题。把1元兑换成1分、2分、5分的硬币,共有多少种不同的换法?
    • 9. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问40个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....

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);
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1499159.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-25
下一篇2022-06-25

发表评论

登录后才能评论

评论列表(0条)

    保存