我写了以下C程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int count;
scanf("%d",&count);
if(count < 1 || count > 100)
{
exit(1);
}
int inputs[10];
for(int i = 0; i < count; i++)
{
scanf("%d",&inputs[i]);
if(inputs[i] < 1 || inputs[i] > 30000)
{
exit(1);
}
}
for(i = 0; i < count; i++)
{
printPrimeFactor(inputs[i], 2);
printf("\n");
}
}
void printPrimeFactor(int number, int factor)
{
if(number % factor == 0)
{
int flag = 1, newNumber;
newNumber = number;
for(int i = 0; i < factor/2; i++)
{
if(factor % i == 0)
{
flag = 0;
break;
}
}
if (flag)
{
printf("%d ", factor);
newNumber = number / factor;
}
factor++;
if(factor <= newNumber / factor)
{
printPrimeFactor(newNumber, factor);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在编译时(在windows中,turbo C),我一直在收到错误:
Function 'printPrimeFactor' should have a prototype error
Run Code Online (Sandbox Code Playgroud)
我发现代码没有任何问题.可能是什么问题?
在编译器看到它的定义之前调用你的函数,因此编译器会说"我想首先看到这个函数的原型".
这意味着你void printPrimeFactor(int number, int factor);在函数调用之前放置.
或者,您可以在调用之前放置整个函数(即其定义).