有个问题不是很懂!!!来求教!!!
#include<stdio.h>
int main()
{
bool s[1000000];
int t,r,i;
for(i=0;i<1000000;i++)
s[i]=false;
for(i=1;i<=1000000;i++){
t=i;
r=i;
while(t!=0){
r+=t%10;
t/=10;
}
if(r<=1000000)
s[r-1]=true;
}
for(i=0;i<1000000;i++)
if(s[i]==false) printf("%d\n",i+1);
}
这个代码为什么在用VC检查时会出现这些:
--------------------Configuration: 试验 - Win32 Debug--------------------
Compiling...
试验.c
G:\C程序\zjuacm\A掉的\O 1180\试验.c(5) : error C2065: 'bool' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(5) : error C2146: syntax error : missing ';' before identifier 's'
G:\C程序\zjuacm\A掉的\O 1180\试验.c(5) : error C2065: 's' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(5) : error C2109: subscript requires array or pointer type
G:\C程序\zjuacm\A掉的\O 1180\试验.c(6) : error C2143: syntax error : missing ';' before 'type'
G:\C程序\zjuacm\A掉的\O 1180\试验.c(7) : error C2065: 'i' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(8) : error C2109: subscript requires array or pointer type
G:\C程序\zjuacm\A掉的\O 1180\试验.c(8) : error C2065: 'false' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(8) : error C2106: '=' : left operand must be l-value
G:\C程序\zjuacm\A掉的\O 1180\试验.c(10) : error C2065: 't' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(11) : error C2065: 'r' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(17) : error C2109: subscript requires array or pointer type
G:\C程序\zjuacm\A掉的\O 1180\试验.c(17) : error C2065: 'true' : undeclared identifier
G:\C程序\zjuacm\A掉的\O 1180\试验.c(17) : error C2106: '=' : left operand must be l-value
G:\C程序\zjuacm\A掉的\O 1180\试验.c(20) : error C2109: subscript requires array or pointer type
执行 cl.exe 时出错.
试验.exe - 1 error(s), 0 warning(s)
难道C里面不能用bool型的吗?
还有把上面的代码改成以下方式:
#include<stdio.h>
int main()
{
int s[1000000],t,r,i;
for(i=0;i<1000000;i++)
s[i]=0;
for(i=1;i<=1000000;i++){
t=i;
r=i;
while(t!=0){
r+=t%10;
t/=10;
}
if(r<=1000000)
s[r-1]=1;
}
for(i=0;i<1000000;i++)
if(s[i]==0) printf("%d\n",i+1);
}
就会超界,难道数组不能超过1000000的?那要怎么样表示超过1000000的数放在一个容器内?