代码编译成功,运行有问题,求解

sacheo 2011-09-29 09:12:32

#include<iostream>
using namespace std;

int main()
{
int n;
cin>>n;
cout<<endl;
int i,j;
bool a[n];
bool b[n];
bool c[n];
int key;

for(i=0;i<n;i++)
{
cin>>a[n];
}
cout<<endl;
for(i=0;i<n;i++)
{
cin>>b[n];
}
cout<<endl;
for(j=0;j<n;j++)
{
key=a[j]+b[j];
c[j]=key%2+c[j];
if(c[j]>1)
{
c[j]=0;
c[j+1]=1;
}
}
for(i=0;i<n;i++)
{
cout<<c[n];
}

return 0;
}
...全文
174 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
fiveyes 2012-02-10
  • 打赏
  • 举报
回复
原来是要做一个二进制加法啊,汗……

建议用int数组吧,另外注意一下存储的顺序,按LZ的代码应该是从低位到高位的顺序。

动态数组确实是比较新的特性,建议改用new,这样可以适应大多数编译器。
DyanWang 2012-02-09
  • 打赏
  • 举报
回复
虽然我不知道你想要做什么,也不知道你所谓的错误究竟是什么,但我估计是下面这个错误


你数组的类型是bool类型,就只能输入0或者1,因此
c[j]=key%2+c[j];这句始终都为0,下面这一段都不会执行
if(c[j]>1)
{
c[j]=0;
c[j+1]=1;
}
亮______亮 2011-10-07
  • 打赏
  • 举报
回复
编译错误的话、换个编译器试试...
Arnis1973 2011-10-04
  • 打赏
  • 举报
回复
这种情况一般是数组出问题了
michunping1 2011-10-03
  • 打赏
  • 举报
回复
错了 楼主对于数组的定义有问题n为变量,在定义数组时数组的大小必须是固定的,不能使变量 ,如果想用变量的 建议用动态数组来开辟数组
赵4老师 2011-09-30
  • 打赏
  • 举报
回复
//使用动态分配
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int i,L;
char *p;
void main() {
for (i=0;i<20000;i++) {
L=rand();
p=malloc(L);
if (NULL==p) {
printf("malloc error!\n");
continue;
}
memset(p,0,L);
free(p);
}
}
//不使用动态分配
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define MAXLEN 30000
int i,L;
char buf[MAXLEN];
char *p;
void main() {
p=&buf[0];
for (i=0;i<20000;i++) {
L=rand();
if (L>MAXLEN) {
printf("L>MAXLEN==%d, ignore spilth.\n",MAXLEN);
L=MAXLEN;
}
memset(p,0,L);
}
}
sacheo 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 namelij 的回复:]

如果想要 数组大小可变的话,你那样做是不对的

建议用动态内存来做
[/Quote]
指针是把?
sacheo 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zhao4zhong1 的回复:]

C/C++ code
//使用动态分配
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int i,L;
char *p;
void main() {
for (i=0;i<20000;i++) {
L=rand();
p=malloc(L);
if (NULL==p)……
[/Quote]
这个是???
sacheo 2011-09-30
  • 打赏
  • 举报
回复
原题:实现这样一个算法:
输入:两个长度为n位的储存着二进制数的数组A和B
输出:长度为n+1位的储存着A、B之和的二进制数组S
  • 打赏
  • 举报
回复
如果想要 数组大小可变的话,你那样做是不对的

建议用动态内存来做
szqh97 2011-09-30
  • 打赏
  • 举报
回复
动态数组啊,好像是只有gcc才可以这样吧
5t4rk 2011-09-29
  • 打赏
  • 举报
回复
 for(i=0;i<n;i++)
{
cin>>a[n];//同下??
}
cout<<endl;
for(i=0;i<n;i++)
{
cin>>b[n];//同下??
}
for(i=0;i<n;i++)
{
cout<<c[n];//为什么是c[n] 楼主的这循环在干什么 这是在循环吗 ???
}
柯本 2011-09-29
  • 打赏
  • 举报
回复
你的程序用的是gcc编译器?因为据我所知只有它支持 bool a[n];这种可变下标数组
程序语法上没任何问题,也能正常运行,就是不知你要实现什么功能.
火龙 2011-09-29
  • 打赏
  • 举报
回复
问题都没说怎么知道你是什么问题?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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