C++问题:程序编译通过,但是无法执行

题目是编写程序提示输入2个字符串,看其中一个是否为另一个字母颠倒顺序得到的。
#include<iostream>
#include<string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
main()
{
string text1;
string text2;
int count=1;

cout<<"输入字符串1以#结束"<<endl;
std::getline(cin,text1,'#');
cout<<"输入字符串2以#结束"<<endl;
std::getline(cin,text2,'#');
if(sizeof text1/sizeof text1[0]==sizeof text2/sizeof text2[0])
{
for(int j=0;j<sizeof text1/sizeof text1[0];j++)
{
if(text1[j]=text2[sizeof text1/sizeof text1[0]])
{

count++;
}
}
}
else
cout<<"no"<<endl;
if(count==sizeof text1/sizeof text1[0])
cout<<"yes"<<endl;
else
cout<<"no"<<endl;

return 0;
}

#include<iostream>
#include<string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
main()
{
string text1;
string text2;
int count=1; //============这里改为:count=0;

cout<<"输入字符串1以#结束"<<endl;
std::getline(cin,text1,'#');
cout<<"输入字符串2以#结束"<<endl;
std::getline(cin,text2,'#');
if(sizeof text1/sizeof text1[0]==sizeof text2/sizeof text2[0])
{
for(int j=0;j<sizeof text1/sizeof text1[0];j++)
{
if(text1[j]=text2[sizeof text1/sizeof text1[0]]) //==========>>>这里应该改为:======>>>>
//=====>>>>if(text1[j] == text2[sizeof text1/sizeof text1[0] - j - 1])
{
count++;
}
}
}
else //=====================>>>>这句和下一句可以去掉,只要用count变量判断就可以了
cout<<"no"<<endl;//=========>>>>这句和上一句一起去掉

if(count==sizeof text1/sizeof text1[0])
cout<<"yes"<<endl;
else
cout<<"no"<<endl;

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-11-14
#include<iostream>
#include<string>
using std::cout;
using std::cin;
using std::endl;
using std::string;
main()
{
string text1;
string text2;
int count=0;

cout<<\"输入字符串1以#结束\"<<endl;
std::getline(cin,text1,\'#\');
cout<<\"输入字符串2以#结束\"<<endl;
std::getline(cin,text2,\'#\');

int Len1 = text1.size();
int Len2 = text2.size();
if(Len1==Len2-1)
{
for(int j=0;j<Len1;j++)
{
if(text1[j]==text2[Len1-j])
{
count++;
}
}
}
else
cout<<\"no\"<<endl;

if(count==Len1)
cout<<\"yes\"<<endl;
else
cout<<\"no\"<<endl;

return 0;
}

程序有几个特别注意的地方:
1.得出string的长度可以调用方法size(),不要用sizeof()/sizeof();
2.输入的两个字符串有点问题,输入text1时候必须回车后确认输入,而这个回车进入了text2的内容里,text2的长度始终要长一个单位
3.比较时候采用if(text1[j]==text2[Len1-j])比较,逆序排列
第2个回答  2006-11-14
std::getline(cin,text1,'#'); 这个函数有问题,我跟踪过了, 把它改了就可以, 你的这个函数获得的数据大小比你需要的数据要大,你可以跟踪一下看看,

我编了一个c++程序,语法没有错误,但是不能执行,每次那个黑框就弹出一...
这是因为你生成的程序是命令行方式的,不是windows的GUI方式. 命令行方式在"命令提示符"环境下运行才正常,用"开始"-"运行"或在集成调试环境下运行要加getch();或system("pause");让它暂停以便观察."开始"-"运行"-, 输入cmd命令即可进入命令行方式....

为什么C++程序设计能编译却不能运行,而且不能键盘输入
这个说明你的程序在逻辑上可能有问题了,因为编译和运行是两个过程,编译的条件是:语句正确就可以通过的,但是,你要运行,是需要将整个程序块链接起来的,不能运行,说明你的程序在链接后无法完成,你自习阅读下你的程序,看看哪里有逻辑上的错误,比如说死循环等等 ...

C++程序,为什么编译通过了,执行时却出现错误
编译通过是因为你没有语法问题,运行出错是你的程序有逻辑问题,空指针,内存漏洞等程序问题

为什么这个c++小程序编绎无错,却不能运行??
是strcat函数的问题. strcat函数可以连接两个字符串, 传入两个参数, 是指向要连接的两个字符串的指针.但是它的第一个参数必须是一个字符串数组头地址, 即是一个分配了内存的, 拥有一定空间的指针. 但是f()无参数时默认建立的两个指针*a和*b都是指针变量, 没有自己的空间, 所以会发生内存错误.用...

c++ 程序编好了运行不了
两种方式解决,只要你的程序没问题 一个是在程序的结尾加上一句话,system("psuse"),或者getch()还有一个就是打开dos窗口,在dos下找到你编译好的那个exe文件运行

C++编译连接都通过了,可是运行时却莫名其妙终止了~
是逻辑问题,你的指针 指到了非法的区域。调试下你的指针移动吧。--- 这个需要结合你的程序调试。在Debug模式下 看究竟是哪个指针错了。然后再反推……

为什么编译正确的c++程序在运行时会停止工作
编译只是保证没有语法错误,但是不能保证你的程序的算法没有错误,如果你的程序中有比较严重的Bug,如果说访问了系统保护的内存,出于保护,windows会中止你的程序,或是抛出一个异常,如果异常没有被捕获并加以处理,程序也会中止,当然,这时你也有机会用调试工具去debug。这种运行期的错误是需要程序员去...

c++编完程序出现这个,总运行不成功
以下是可能产生LNK2001错误的原因:一.由于编码错误导致的LNK2001。1.不相匹配的程序代码或模块定义(.DEF)文件能导致LNK2001。例如, 如果在C++ 源文件内声明了一变量“var1”,却试图在另一文件内以变量“VAR1”访问该变量,将发生该错误。2.如果使用的内联函数是在.CPP文件内定义的,而不是在头...

为什么我的C++正确的代码也无法运行,那种在其他电脑上可以的在我电脑...
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\/VC98\/Bin”下面, 你可以到相应的路径下找到这个应用程序。方法一:因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)” —>“Directories(目录)”重新设置“Excutable Fils、Include Files、 ...

为什么我的c++程序不能运行?
1,第一步是通过选项(例如\/ FPi87,需要协处理器)编译或链接程序。请注意,该程序在未安装协处理器的计算机上运行。2,然后printf_s或scanf_s函数的格式字符串包含浮点格式规范,然后程序不包含任何浮点值或变量,如下图所示。3,然后,通过加载浮点支持以最小化程序大小来完成编译器。此时,请注意,...

相似回答