-3
給出一個整數N.找到這個數字中的數字,正好除以N我的代碼給了我一個超時消息,即由於超時或CPU而終止超過時限(核心轉儲)。這裏是我的代碼enter code here
如何將數組轉換爲long int並返回到數組
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main()
{
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int T, cnt, digits1, digits2, rem;
long long x;
char N[11];
scanf("%d", &T);
for (int i = 1; i <= T; i++)
{
scanf("%10c", N);
int x = (atoll(N));
digits1 = x;
while (digits1 != 0)
{
digits1 = x/10;
cnt++;
}
// char buffer[cnt + 1];
for(int j = 1; j <= cnt; j++)
{
rem = x % N[j];
if (rem == 0)
{
digits2++;
}
}
printf("%d", digits2);
}
return 0;
}
你嘗試調試程序?幫助中心中的鏈接:[如何調試小程序](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。 – usr2564301
digits1永遠不會變爲零,使第一個內部循環無限。你不能被零除,因此,除以兩個數字將永遠不會等於零。顯然,如果「x」小於10,digits1應該爲零。 – superultranova
你應該編譯你的程序並啓用警告(並且已經執行)。 'x'被聲明瞭兩次,即使你的編譯器允許在範圍內使用,在同一個函數中有兩個不同的同名變量是不好的。有未初始化的變量,你也應該研究'scanf()'用'%c'類型做什麼 - 它不會填充數組。 –