主题:[讨论]请大家帮忙看下代码有什么问题!!谢谢!
#include<iostream>
#include<string>
using namespace std;
int sign=1;
int PositiveCharge(char a[]) //判断输入的正数是否非法
{
int flag=1;
for(int i=0;i<strlen(a);i++)
{
if(a[i]<'0'||a[i]>'9')
{
flag=0;
}
}
if(!flag)
{
return 1;
}
else
{
return 0;
}
}
int NegativeCharge(char a[]) //判断输入的负数是否非法
{
int flag=1;
for(int i=1;i<strlen(a)-1;i++)
{
if(a[i]<'0'||a[i]>'9')
{
flag=0;
}
}
if(!flag)
{
return 1;
}
else
{
return 0;
}
}
int StrToInt(char * str) //将字符串转换为整数
{
int value=0;
int sign=1;
if(*str=='-')
{
sign=-1;
str++;
}
while(*str)
{
value=value*10+*str-'0';
str++;
}
return sign*value;
}
void Input(int ptr[20],int num)
{
int sign=1;
cout<<"请依次输入数组元素:"<<endl;
for(int i=0;i<num;i++)
{
char c[100];
cin.getline(c,100);
if(c[0]=='-') //判断正负
{
while(NegativeCharge(c)||!strlen(c+1))
{
cout<<"法输入非!请重新输入数组元数!"<<endl;
cin.getline(c,100);
}
cout<<sign*StrToInt(c)<<endl;
}
else
{
while(PositiveCharge(c))
{
cout<<"法输入非!请重新输入数组元数!"<<endl;
cin.getline(c,100);
}
cout<<sign*StrToInt(c)<<endl;
}
}
}
void Search(int a[],int num)
{
int data,flag=1;
char s;
cout<<"您是否要查找数据?(y/n)"<<endl;
while(flag)
{
cin>>s;
if(s>='A'&&s<='Z'||s>='a'&&s<='z')
{
if(s=='y'||s=='Y')
{
cout<<"请输入要查找的数据元素:"<<endl;
cin>>data;
for(int i=0;i<num;i++)
{
cout<<a[i]<<endl;
if(a[i]==data)
{
cout<<"您要查找的数据元素的下标是"<<i<<endl;
}
}
if(i==num)
{
cout<<"未找到!"<<endl;
for(int i=0;i<num;i++)
{
cout<<a[i]<<endl;
}
}
}
flag=0;
}
else
{
cout<<"非法输入!请重新输入!"<<endl;
}
}
}
int main()
{
int number; //元素个数
int b[10]; //存储元素的数组
cout<<"请输入数据总个数:";
char a[100];
cin.getline(a,100);
while(PositiveCharge(a))
{
cout<<"法输入非!请重新输入数据总数!"<<endl;
cin.getline(a,100);
}
number=StrToInt(a);
cout<<"您已设定输入数据的总个数为"<<number<<endl;
Input(b,number);
for(int i=0;i<number;i++)
{
cout<<b[i]<<endl;
}
//Search(b,number);
return 0;
}
我想问一下,为什么我在调用插入函数input输入数据后,但是事实上并没有存入一维数组b[],请问是什么问题?
#include<string>
using namespace std;
int sign=1;
int PositiveCharge(char a[]) //判断输入的正数是否非法
{
int flag=1;
for(int i=0;i<strlen(a);i++)
{
if(a[i]<'0'||a[i]>'9')
{
flag=0;
}
}
if(!flag)
{
return 1;
}
else
{
return 0;
}
}
int NegativeCharge(char a[]) //判断输入的负数是否非法
{
int flag=1;
for(int i=1;i<strlen(a)-1;i++)
{
if(a[i]<'0'||a[i]>'9')
{
flag=0;
}
}
if(!flag)
{
return 1;
}
else
{
return 0;
}
}
int StrToInt(char * str) //将字符串转换为整数
{
int value=0;
int sign=1;
if(*str=='-')
{
sign=-1;
str++;
}
while(*str)
{
value=value*10+*str-'0';
str++;
}
return sign*value;
}
void Input(int ptr[20],int num)
{
int sign=1;
cout<<"请依次输入数组元素:"<<endl;
for(int i=0;i<num;i++)
{
char c[100];
cin.getline(c,100);
if(c[0]=='-') //判断正负
{
while(NegativeCharge(c)||!strlen(c+1))
{
cout<<"法输入非!请重新输入数组元数!"<<endl;
cin.getline(c,100);
}
cout<<sign*StrToInt(c)<<endl;
}
else
{
while(PositiveCharge(c))
{
cout<<"法输入非!请重新输入数组元数!"<<endl;
cin.getline(c,100);
}
cout<<sign*StrToInt(c)<<endl;
}
}
}
void Search(int a[],int num)
{
int data,flag=1;
char s;
cout<<"您是否要查找数据?(y/n)"<<endl;
while(flag)
{
cin>>s;
if(s>='A'&&s<='Z'||s>='a'&&s<='z')
{
if(s=='y'||s=='Y')
{
cout<<"请输入要查找的数据元素:"<<endl;
cin>>data;
for(int i=0;i<num;i++)
{
cout<<a[i]<<endl;
if(a[i]==data)
{
cout<<"您要查找的数据元素的下标是"<<i<<endl;
}
}
if(i==num)
{
cout<<"未找到!"<<endl;
for(int i=0;i<num;i++)
{
cout<<a[i]<<endl;
}
}
}
flag=0;
}
else
{
cout<<"非法输入!请重新输入!"<<endl;
}
}
}
int main()
{
int number; //元素个数
int b[10]; //存储元素的数组
cout<<"请输入数据总个数:";
char a[100];
cin.getline(a,100);
while(PositiveCharge(a))
{
cout<<"法输入非!请重新输入数据总数!"<<endl;
cin.getline(a,100);
}
number=StrToInt(a);
cout<<"您已设定输入数据的总个数为"<<number<<endl;
Input(b,number);
for(int i=0;i<number;i++)
{
cout<<b[i]<<endl;
}
//Search(b,number);
return 0;
}
我想问一下,为什么我在调用插入函数input输入数据后,但是事实上并没有存入一维数组b[],请问是什么问题?