为什么这个程序输出不了??
//1.编写一个函数,该函数显示n到m之间的其各位数字之和为5的整数,并返回之和为5的整数的数目。
//在主函数中输入n和m,然后调用该函数输出n到m的其各位数字之和为5的整数的数目。
#include<iostream>
using namespace std;
int sum5(int n,int m)
{
int sum=0,count=0;
for(int i=n;i<=m;i++)
{
while(i!=0)
{
sum+= i%10;
i=i/10;
}
if(sum==5)
count++;
}
return count;
}
void main()
{
int time,n,m; //time为测试次数,n和m为输入两个数的范围
cin>>time;
for(int i=0;i<time;i++)
cin>>n>>m;
cout<<sum5(n,m);
}
求助 例如
2
100 1000
1 100
但是之后就什么反应都没了。。
[解决办法]
for(int i=n;i<=m;i++)
{
while(i!=0)
{
sum+= i%10;
i=i/10;
}
}
死循环了啊
[解决办法]
//1.编写一个函数,该函数显示n到m之间的其各位数字之和为5的整数,并返回之和为5的整数的数目。
//在主函数中输入n和m,然后调用该函数输出n到m的其各位数字之和为5的整数的数目。
// 个人理解,比如输入2 15,那么各数字和有两次为5的整数,即:5 14
#include<iostream>
using namespace std;
#define SUM_5_NUM 100
int sum5(int n,int m, int iRes[])
{
int sum = 0,count = 0;
int iIdx = 0;
for(int i=n; i<=m; i++)
{
int iTmp = i;
sum = 0 ;
while( iTmp != 0 )
{
sum += iTmp % 10;
iTmp = iTmp / 10;
}
if( sum == 5 )
{
count++;
iRes[iIdx] = i ;
iIdx++;
}
}
return count;
}
void main()
{
int iTime = 0;// iTime为测试次数
int n, m;// n和m为输入两个数的范围
int iRes[SUM_5_NUM] = {0} ; // 保存各数字和为5的整数
cin>>n>>m;
iTime = sum5( n, m, iRes ) ;
printf("整数各数字之和的次数有%d次\n", iTime );
for ( int i=0; i<iTime; i++ )
{
if ( i % 6 == 0 )
{
printf("\n");
}
printf("%d\t", iRes[i]);
}
printf("\n");
system("pause");
}