首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为啥这个程序输出不了?

2013-04-21 
为什么这个程序输出不了??//1.编写一个函数,该函数显示n到m之间的其各位数字之和为5的整数,并返回之和为5

为什么这个程序输出不了??

//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");
}

热点排行