一个C++有关问题,这个程序的逻辑是没错的,可是Visual 2008编译不过去,语法应该是没异常的吧
一个C++问题,这个程序的逻辑是没错的,可是Visual 2008编译不过去,语法应该是没错误的吧!
#include<iostream>
using namespace std;
int main ()
{
char a[20],b[20];
cin >>a>>b;
//int alen;
//int blen;
for (int alen=0;a[alen]!='\0';alen++);
for (int blen=0;b[blen]!='\0';blen++);
cout <<"alen=" << alen << " " << "blen=" << blen <<endl;
char* c=new char[alen+blen];
for (int i=0;i<=alen+blen;i++)
{
if (i<alen)
{
c[i]=a[i];
}
else
{
c[i]=b[i-alen];
}
cout <<c <<endl;
delete [] c;
return 0;
}
}
------解决方案--------------------
alen/blen放在for循环中声明的话,那么后面的语句是看不到的:
#include<iostream>
using namespace std;
int main ()
{
char a[20],b[20];
cin >>a>>b;
//int alen;
//int blen;
for (int alen=0;a[alen]!='\0';alen++);
for (int blen=0;b[blen]!='\0';blen++);
cout <<"alen=" << alen << " " << "blen=" << blen <<endl;
char* c=new char[alen+blen];
for (int i=0;i<=alen+blen;i++)
{
if (i<alen)
{
c[i]=a[i];
}
else
{
c[i]=b[i-alen];
}
cout <<c <<endl;
delete [] c;
return 0;
}
}
------解决方案--------------------
alen/blen放在for循环中声明的话,那么后面的语句是看不到的:
#include<iostream>
using namespace std;
int main ()
{
char a[20],b[20];
cin >>a>>b;
int alen;
int blen;
for (alen=0;a[alen]!='\0';alen++);
for (blen=0;b[blen]!='\0';blen++);
cout <<"alen=" << alen << " " << "blen=" << blen <<endl;
char* c=new char[alen+blen];
for (int i=0;i<=alen+blen;i++)
{
if (i<alen)
{
c[i]=a[i];
}
else
{
c[i]=b[i-alen];
}
cout <<c <<endl;
delete [] c;
return 0;
}
}