标题:C++中已经初始化的数组如何去初始化啊?
取消只看楼主
zhaobuzhule
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2014-1-15
 问题点数:0 回复次数:4 
C++中已经初始化的数组如何去初始化啊?
比如一个已经初始化过的数组a[10],怎么把a[10]里已经有的值去掉
搜索更多相关主题的帖子: 如何 
2014-03-26 16:47
zhaobuzhule
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2014-1-15
得分:0 
回复 2楼 hubinyes
我的意思是去掉已经初始化的值
2014-03-26 17:05
zhaobuzhule
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2014-1-15
得分:0 
让a数组回到没有初始化的状态
2014-03-26 17:06
zhaobuzhule
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2014-1-15
得分:0 
回复 5楼 hubinyes
因为我写的一个求两个16进制的数的加法的程序在第一次运算时正常,第二次运算就不对了,我估计是数组已经赋值的原因,或者我估计错误,程序代码我这样写的#include<iostream>
#include<cmath>
void shuru(char a[],int &size);
void jisuan(char a[],int &size1,char b[],int &size2);
int zhuanhuan(char a[],int size);
int main()
{
    using namespace std;
    cout<<"这是一个计算两个十六进制数加法的程序"<<endl;
   
    char p;
    do
    {
        
        char a[10],b[10];
        int size1,size2;
         cout<<"请输入两个十六进制的数并用空格隔开"<<endl;
        shuru(a,size1);
        shuru(b,size2);
        jisuan(a,size1,b,size2);
        cout<<"是否继续计算?(Y or N)"<<endl;
        cin>>p;
    }
    while(p=='y'||p=='Y');
    return 0;
}
void shuru(char a[],int &size)
{
    using namespace std;
    char next;
    size=0;
    for(int i=0;i<10;i++)
    {
        cin.get(next);
        if(next==' '||next=='\n')
            break;
        a[i]=next;
        size++;
    }
    return;
}
void jisuan(char a[],int &size1,char b[],int &size2)
{
    using namespace std;
    int x,y,sum;
    x=zhuanhuan(a,size1);
    y=zhuanhuan(b,size2);
    sum=x+y;
    cout<<"结果转换为十进制为:"<<sum<<endl;
    return;
}
int zhuanhuan(char a[],int size)
{
    using namespace std;
    int num=0;
    for(int i=0;i<size;i++)
    {
        switch(a[i])
        {
            case '0':
                num=num+0*pow(16,size-1-i);
                break;
            case '1':
                num=num+1*pow(16,size-1-i);
                break;
            case '2':
                num=num+2*pow(16,size-1-i);
                break;
            case '3':
                num=num+3*pow(16,size-1-i);
                break;
            case '4':
                num=num+4*pow(16,size-1-i);
                break;
            case '5':
                num=num+5*pow(16,size-1-i);
                break;
            case '6':
                num=num+6*pow(16,size-1-i);
                break;
            case '7':
                num=num+7*pow(16,size-1-i);
                break;
            case '8':
                num=num+8*pow(16,size-1-i);
                break;
            case '9':
                num=num+9*pow(16,size-1-i);
                break;
            case 'a':
                num=num+10*pow(16,size-1-i);
                break;
            case 'b':
                num=num+11*pow(16,size-1-i);
                break;
            case 'c':
                num=num+12*pow(16,size-1-i);
                break;
            case 'd':
                num=num+13*pow(16,size-1-i);
                break;
            case 'e':
                num=num+14*pow(16,size-1-i);
                break;
            case 'f':
                num=num+15*pow(16,size-1-i);
                break;
        }
    }
    return num;
}
当输入y准备进行第二次运算时就不对了,我调试后显示第二次输入时第一个数组的值没有赋值进去,第二个数组的值反而被赋值成了我本想赋给第一个数组的值。
你看看这是哪里错了呀?


2014-03-26 21:38
zhaobuzhule
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2014-1-15
得分:0 
回复 9楼 hubinyes
多谢了,我发现问题了,第二次赋值时把'\n'赋值给了数组a,我在cin>>p;后面加一个qukong()函数就解决了
void qukong()
{
    using namespace std;
    char a;
    do
    {
        cin.get(a);
    }
    while(a!='\n');
    return;
}
2014-04-01 21:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-429198-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.153131 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved