一个简单的c++程序错误,请高手指点!

来源:百度知道 编辑:UC知道 时间:2024/05/22 02:02:10
#include<iostream.h>
void main()
{ int i,j=0;
char a[31]={"the result of 3 and 2 is not 8"};
char b[]={4,9,6,2,8,7,3};
char c[32];
for(i=0;i<sizeof(a)/sizeof(a[0]);++i)
j=j%7;
c[i]=a[i]+b[j];
cout<<c[0]<<endl;
}
运行结果怎么会是“?”
题目是加密时将每个字符的asc11码值反复加上“4962873”中的数字进行加密

你这程序想干啥呀? 也不说明白点.

1. 你程序中的j根本就没有自增, 所以始终是0, 只能取到b中的一个数字4
2. 你的for语句控制的范围不够, 为什么不用{}, 不用的话, for只能控制它后面第一个语句.
3. 你只输出了c[0], 为什么不输出整个数组? 只输出一个元素有什么用呢?

用这个试试:
#include<iostream>
using namespace std ;
void main()
{
int i,j=0;
char a[31]= {"the result of 3 and 2 is not 8"};
char b[]={4,9,6,2,8,7,3};
char c[32];
for(i=0;i<sizeof(a)/sizeof(a[0]);++i)
{
j=j%7;
j++ ;
c[i]=a[i]+b[j];
cout<<c[i] ;
}
}

for(i=0;i<sizeof(a)/sizeof(a[0]);++i)
j=j%7;
这个地方sizeof(a)/sizeof(a[0])的值是31,因此循环结束后i=31,即c[i]=a[i]+b[j]; 这句话只是对c[31]进行赋值。而数组c没有初始化,因此c[0]的值不能确定。

程序是不是应该改成这样:
#include<iostream.h>
void main()
{ int i,j=0;
char a[31]={"the result of 3 and 2 is not 8"};
char b[]={4,9,6,2,8,7,3};
char c[32];
for(i=0;i<sizeof(a)/sizeof(a[0]);++i)
{j=j%7;
c[i]=a[