• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

2019年第十届蓝桥杯C/C++ 省赛B组试题-试题D:数的分解

答案:40785

使用二个for语句循环求前面二位数,最后一位用2019-前面二位数得出;

用加法递增,升序进行循环,避免造成同一种方法重叠出现。

#include<stdio.h>
int look(int n)
{
	int t;
	while(n)
	{
		t=n%10;
		n=n/10;
		if(t==2||t==4)
		return 0;  
	}
	return 1;
}

int main()
{
	int i,j,a,b,c=0;
	for(i=1;i<2019;i++)
	{
		if(look(i))
		for(j=i+1;j<2019;j++)
		{
			if(look(j))
			{
			a=2019-i-j;
			if(look(a)&&a>j)c++;
			}
		}
	}
	printf("%d",c);
	return 0;
}
				

判断组成的数字当中没有2和4,寻找函数不能按以下写法:

int look(int n)
{
	int t;
	while(n)
	{
		t=n%10;
		n=n/10;
		if(t==2||t==4)
		return 0;
		else 	return 1;
	}

}

return具有强制结束返回的作用,while语句用来判断输入的n当中是否存在4和2,在还没有全部检查完前else return 1;会导致程序计算出错。

return需要最后返回,或者出错直接返回。

int look(int n)另一种写法:

int look(int n)
{
	int t;int b=1;
	while(n)
	{
		t=n%10;
		n=n/10;
		if(t==2||t==4)
		b=0;
	}
	return b;
}

posted on 2022-04-12 20:03  王陈锋  阅读(35)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3