帮忙回答一下这几个问题,谢谢了。

xplovexjy 2008-03-23 10:04:24
请大家帮我看看这3题。谢谢
第一题:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <limits>

using namespace std;
int main()
{
vector<int> a,b;
int c;
cout<<"请输入数字"<<endl;
while(cin>>c){
a.push_back(c);}
cin.clear();
cin.ignore( numeric_limits<streamsize>::max(), '\n' );

cout<<"请输入数字"<<endl;
while(cin>>c){
b.push_back(c);}
cin.clear();
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
if(a.size()==b.size())
if(a.size()==0)
cout<<"相等"<<endl;
else {
vector<int>::iterator a1=a.begin();
vector<int>::iterator b1=b.begin();
while(*a1==*b1&&a1!=a.end()&&b1!=b.end()){
++*a1;
++*b1;}
if(a1==a.end())
{cout<<"相等"<<endl;}
}
else
cout<<"不相等"<<endl;
return 0;}

第二题:编译的时候虽然成功,但是输入6个数字后会弹出一个窗口。不知所云。
#include "stdafx.h"
#include <iostream>
#include <vector>
using namespace std;


int main()
{
//定义变量
vector<int> b;
int a[6];
int i,c;
//输入一个vector对象;
cout<<"输入6个数字"<<endl;
for(vector<int>::size_type ix=0;ix!=6;ix++){
cin>>c;
a[ix]=c;}
//把这个vector对象的值传给一个数组;
for(int i=0;i!=6;i++)
{b[i]=a[i];

//输出这个数组
cout<<b[i]<<endl;
}
return 0;
}


第三题:不知道哪里错了。
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;


int main(){
//定义变量

char a[8]="I love ";
char b[4]={'Y','o','u','\0'};
char *p1=a;
char *p2=b;
//把两个c风格字符串连在一起;
int len=strlen(p1)+strlen(p2)+1;
char *p3=new char[len];
strcpy(p3,p1);
strcat(p3,p2);
//输出合并后的那个C风格字符串;
for(char *q=p3;q!=p3+len;q++){
cout<<*q<<endl;}
string s1="I love ";
string s2="You";
string s3=s1+s2;
cout<<s3<<endl;
return 0;
}



...全文
98 11 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
softking1 2008-04-01
  • 打赏
  • 举报
回复
第一题
在VC下编译的,所以我又删掉了#include "stdafx.h",再将< <改为<<,就这样我又得到了你想要的结果哈!
我真的不知道
#include "stdafx.h"是什么东东啊!?
softking1 2008-04-01
  • 打赏
  • 举报
回复
第三题
我在VC下编译的;首先我不清楚#include "stdafx.h"是 什么东西,应该没用吧,所以我删掉了;再次你<<有问题;最后就是把cstring改为string
这样做了之后就得到了你想要的结果了
gl0312 2008-04-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 liveforme 的回复:]
晕了,学习一下
[/Quote]
liveforme 2008-04-01
  • 打赏
  • 举报
回复
晕了,学习一下
xax100000 2008-04-01
  • 打赏
  • 举报
回复
就第三题短点。。。
把头文件
#include <cstring>
改成
#include <string>
就行了!


看第二题

for(vector <int>::size_type ix=0;ix!=6;ix++){
cin>>c;
a[ix]=c;}
这怎么能对?
ix 是啥?
a 是啥?

应该这样:
for(vector <int>::size_type ix=0;ix !=6;ix++){
cin>>c;
b.push_back(c);
}
xplovexjy 2008-03-24
  • 打赏
  • 举报
回复
第一,第三题还不是很清楚,大家说详细些吧。(谢谢)
great3779 2008-03-24
  • 打赏
  • 举报
回复
另外,再补充一下:1、代码风格很有问题,诸如int a, char a[8],从变量名上,完全让人无法知道你要表达什么。建议采用匈牙利命名法或其衍生,虽然麻烦点,但对你以后进行项目开发很有帮助。记住,程序是写给别人看的。2、注释别用中文写,用英文写吧。希望对你能有所帮助,谢谢!
great3779 2008-03-24
  • 打赏
  • 举报
回复
第一题:首先,你的算法思路并不是最优,其实,要比较两个vector是否包含完全相同的元素,可以:1、包含元素个数是否相等?2、逐一对各个元素进行比较即可。
第二题:越界。对vector赋值,为什么不用push_back操作?
第三题:头文件包含错误,应该是包含<string>,而不是<cstring>.
ysuliu 2008-03-23
  • 打赏
  • 举报
回复
第二题:

你这里vector<int> b;
b还是个空的vector,是不能直接用下标访问的,其效果其实跟数组越界是一样的。

操作vector下标,你要记住一点:
vector下标只能用来获取已经存在的元素,通过下标给不存在的元素赋值,不会添加任何元素!
zhb200692279 2008-03-23
  • 打赏
  • 举报
回复
第三题:+ << 运算符重载好像没写
zhb200692279 2008-03-23
  • 打赏
  • 举报
回复
第一题:建一个空的stdafx.h的空头文件
相关推荐
发帖
C++ 语言

6.3w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
帖子事件
创建了帖子
2008-03-23 10:04
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下