C语言不要62....

Python024

C语言不要62....,第1张

#include<stdio.h>

void Solve(int, int)

int Judge(int n)

int main()

 int m, n 

 while(scanf("%d%d", &m, &n))

 { 

  if(m==0 && n==0)

  { 

   break 

  } 

  

  Solve(m, n)

 }

 

 return 0

}

void Solve(int m, int n)

{

 int cnt = 0

 for(int i = m i <= n ++i)

 {

  //为吉利数,则总数cnt加一

  if(Judge(i))

  {

   ++cnt

  }

 }

 //输出总吉利数

 printf("%d\n", cnt)

}

int Judge(int n)

{

 int sum = 0

 while(n)

 {

  sum += (n%10)

  n /= 10

 }

 //各位数字的和为10的倍数,为吉利数

 if(0 == sum % 10)

 {

  return 1

 }

 //非吉利数,返回0

 return 0

}

定义数组 int array[1000000] 栈溢出了,

要么这里改成少分配一些,如int array[100000],要么就采用malloc(C语言)或者new(C++)进行动态分配

一般一个进程的栈空间是2M,堆空间按照32位机器上是4G,所以你定义那么大的int型数组肯定直接溢出,可以算一下:

一个int占4字节,如果定义数组的话,那么2M/4=500K,当然进程启动本身就要很多东西要入栈,所以比500K要小。这里理论上定义int array[500000];但是实际上 还有其他的程序数据要入栈,所以不可能分配到这么多空间。

如果是动态分配出来的话,按照4G/4=1G,理论上应该比1G小点,即理论上动态分配大小为1000000000, 再大就堆溢出了。

判断方法如下:

1)将所所有数字拆分为单个字符

2)使用if判断语句,查看是否有减6之后值为0的数,如果有,则继续后面的代码,

3)使用if判断语句,查看是否有减2之后值为0的数,如果也有,则输出。

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,中括号内的索引值是从0算起的。