wen


私信TA

用户名:dotcpp0787593

访问量:233

签 名:

等  级
排  名 22259
经  验 657
参赛次数 1
文章发表 6
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:    利用调用函数使主函数更加简洁。



注意事项:    ◆调用函数写在主函数前面,或者在主函数中对需要调用的函数进行声明;◆函数可能有些臃肿,建议自己再进行修正。▓



参考代码:

#includeint hw(int k,int n,int f)                //k是循环中的每一个数,依次增加;n是各个位数之和;f是标记变量
{
	int a=0,b=k;
	int s,m=0;
	while(1){                            //用while循环来判断回文数和各个位数之和
		s=k%10;
		m+=s;                        //m用来计算各个位数之和,以便后续判断
		a=a*10+s;
		k/=10;
		if(k==0)                       //当k为0时跳出去循环,防止死循环
			break;
	}	
	if(a==b&&m==n)                        //判断是否为回文数且各个位数之和是否和输入值相等
	{
		f=0;                            //当有输出时,变量的值发生变化
		printf("%d\n",a);            //输出条件符合的数值
	}
	return f;                            //返回变量的最终值(这里我也不是特别清楚,没有返回的话标记变量的值不会变化,
	                                                            主函数中任意输入值的输出结果 都会带有-1)
}
int main(){
	int n,s=0,i,f=1,g;                //f是用来标记的变量,以此来确定是否有输出
	scanf("%d",&n);
	for(i=10000;i<1000000;i++){        //题目要求,直接用循环条件
		f=hw(i,n,f);                调用hw函数,(个人觉得会使主函数简洁一些,当然代码行数可能会增加¥¥¥)
	}
	if(f)                                //如果f为1,则没有输出,此时输出-1;
		printf("-1\n");
	return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »