有个问题不是很懂!!!来求教!!!

shhubo 2007-04-22 07:34:17
#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的数放在一个容器内?
...全文
160 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymtom 2007-04-22
  • 打赏
  • 举报
回复
1. C89里面没有bool类型的,C99才有!
2. 不是越界,是栈溢出(stack overflow), VC 默认的栈空间是1M,再看看你的程序1000000x4差多4M了,所以需要连接选项要加上 /stack:10485760, 栈控件设为10M。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧