0
点赞
收藏
分享

微信扫一扫

算法第二章剩下的三道题

南陵王梁枫 2022-03-21 阅读 38
算法学习

目录

题目一 子序列的和

 题目二 分数化小数

题目三 排列

题目一 子序列的和

结束标记:输入两个0,程序直接结束。 应该也可以用do  while。

#include <stdio.h>
#include <math.h>
int main()
{
	long long  n=0,m=0,i=0;
	double sum=0;
	scanf ("%d %d",&n,&m);
	if((n!=0)||(m!=0))
	{
	   for(i=n;i<=m;i++)
	  {
		sum+=1.0/pow(i,2);
	  }
	   printf("%.5lf\n",sum);		
	}
	return 0;
}

 题目二 分数化小数

输入 n 保留 n 位小数:直接 scanf ("%d",&n); 然后printf ("%.nf",m); 的话有问题。要scanf("%d",&n);  printf("%.*f",n,123.666666);

#include <stdio.h>
int main()
{
	int a=0,b=0,c=0;
	double m;
	scanf("%d %d %d",&a,&b,&c);
	if((a!=0)&&(b!=0)&&(c!=0))
	{
	 m=(a*1.0)/b;
	 printf("%.*lf",c,m);
	}
	
	return 0; 
}

题目三 排列

我写的:(bug: 没有能使九个数互不相等。。不能写9!个if 条件吧)

#include <stdio.h>
int main()
{
//	int arr[9]={1,2,3,4,5,6,7,8,9};
	int s1=0,s2=0,s3=0;
	int a=0,b=0,c=0;
	int d=0,e=0,f=0;
	int g=0,h=0,i=0;
	for(a=0;a<9;a++)
	{
	for(b=0;b<9;b++)
	{
	for(c=0;c<9;c++)
	{
	for(d=0;d<9;d++)
	{
	for(e=0;e<9;e++)
	{
	for(f=0;f<9;f++)
	{
	for(g=0;g<9;g++)
	{
	for(h=0;h<9;h++)
	{
	for(i=0;i<9;i++)
	{
		s1=a*100+b*10+c;
		s2=d*100+e*10+f;
		s3=g*100+h*10+i;
		if(((s1*6)==(s2*3))&&((s2*3)==(s3*2)))
		{
			printf("%d  %d  %d\n",s1,s2,s3);
		}
	}	
	}	
	}
	}	
	}	
	}	
	}	
	}	
	}
	
	return 0; 
}

思考一:

 1.改第七行,不改第六行:printf("%d\n",2*i);

2.改第六行,不改第七行: for(i=2;i<=n;i=i+2)

 思考二:

 

举报

相关推荐

0 条评论