读书人

变量未被重新赋过值,但值却变掉了,请教

发布时间: 2012-02-11 09:51:34 作者: rapoo

变量未被重新赋过值,但值却变掉了,请问为什么
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
bool equal(int arr[],int dangqian)//判断数组最后一个元素与之前元素的不重复性
{
bool flag=false;
for(int i=0;i <dangqian;i++)
if(arr[i]==arr[dangqian])
{
flag=true;
break;
}
return flag;
}
void yuanshu2(int arr[],int max)//产生MAX个0-9之间的随即数
{
srand(time(0));
for(int i=0;i <max;i++)
{
do
{
arr[i]=rand()%10;
}while(equal(arr,i));
}
}
void main()
{
int ys[]={0,0,0,0};
yuanshu2(ys,4);
cout < < "输出系统产生数的数组形式 " < <ys[0] < <ys[1] < <ys[2] < <ys[3] < <endl;
int int_ys;
int_ys=ys[0]*1000+ys[1]*100+ys[2]*10+ys[3];
if(int_ys <1000)
cout < < "输出系统产生数的整型数形式 " < < "0 " < <int_ys < <endl;
else
cout < < "输出系统产生数的整型数形式 " < <int_ys < <endl;

char user_num_arr[4];
do{
cin> > user_num_arr;
}while(strlen(user_num_arr)!=4);//用户输入4个0-9之间的数

cout < < "输出用户输入数的数组形式 " < <user_num_arr[0] < <user_num_arr[1] < <user_num_arr[2] < <user_num_arr[3] < <endl;
int user_num;
user_num=(user_num_arr[0]-48)*1000+(user_num_arr[1]-48)*100+(user_num_arr[2]-48)*10+(user_num_arr[3]-48);
cout < < "输出用户输入数的整型数形式 " < <user_num < <endl;


//int_ys=ys[0]*1000+ys[1]*100+ys[2]*10+ys[3];
cout < < "输出系统产生数的数组形式 " < <ys[0] < <ys[1] < <ys[2] < <ys[3] < <endl;
if(int_ys <1000)
cout < < "输出系统产生数的整型数形式 " < < "0 " < <int_ys < <endl;
else
cout < < "输出系统产生数的整型数形式 " < <int_ys < <endl;//这里变量int_ys的值被改变了-_-!

}
在输入完字符串后,在对int_ys输出一下,发现其值改变了,中间没有重新赋过值,请问为什么啊,真郁闷

[解决办法]
对了,都知道数组user_num_arr的长度,就不用strlen(user_num_arr)!=4
char user_num_arr[5];
int i=0;
do{
cin> > user_num_arr;
}while(i <4);//用户输入4个0-9之间的数
user_num_arr[4]= '\0 ';
cout < < "输出用户输入数的数组形式 " < <user_num_arr[0] < <user_num_arr[1] < <user_num_arr[2] < <user_num_arr[3] < <endl;

读书人网 >C++

热点推荐