解题思路:


a.当输入的n是偶数时,做除以2操作

b.当输入的n是奇数时,做乘3加1操作

1.输入两个整数 i,j;

2.比较两个数的大小,从小到大循环,进行上述运算(a.b.)

3.统计i到j中每个数的循环的次数

4.比较,输出i,j及大的循环次数。 


注意事项:

笔者我第一次没看懂两个地方:

1.要做循环从小到大,得出最大的。我第一次只做了两个(i,j)

2.还要比较i,j的大小,不一定i就是小的,j就是大的;反着来也要能输出正确答案(我是提交了然后没通过,很纳闷,看了别人的讲解才懂了题目是啥意思,一度还怀疑是题目错了 (>_<''))

3.小伙伴们一定要看清楚题目再敲代码呀,前期读懂题目很重要,要不后面花很多时间去改。

参考代码:

下面是我的代码,大家可以讨论讨论,我希望能和大家一起进步,进大厂。加油,我当然会有不足之处,希望大家能友好提建议。

#include <stdio.h>
int main()
{
	int i,j,temp,c,b;
	int max=0,num=1;     //num计数,max存值
	while(scanf("%d%d",&i,&j)!=EOF)    //循环输入
	{
        if(i<j)	{   //比较i,j的大小,c存小的,b存大的
		c=i;b=j;	
		}	
		else {
		c=j;b=i;	
		}	 
	for(;c<=b;c++)   //从小到大循环
	{   temp=c;
		while(temp!=1)    //1为循环结束标志
		{
			if(temp%2==0)
			{
			temp=temp/2;
			num++;
			}
			else {
				temp=temp*3+1;
				num++;
			}
		
		}	
			num++;	
		if(max<=num)         //比较大小,保证max的值是最大的
		{
			max=num;
		}	
		num=0;	
	}
	printf("%d %d %d\n",i,j,max); //输出
	max=0;       //这个语句非常重要,因为是循环输入,所以每组输出完,max归0,下组继续;如果少了它,max的值为上组的最大值,就会出错。
 } 

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论