首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-11 
变量未被重新赋过值,但值却变掉了,请问为什么#includeiostream.h#includetime.h#includestdlib.h#in

变量未被重新赋过值,但值却变掉了,请问为什么
#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;

热点排行