想写一个把一个数组挨个插入到另一个数组中间,然后比较他们的值找最大值的程序,但是出现如题的错误error: invalid conversion from 'char' to 'char*' [-fpermissive],请问各位大神这是错在哪里了啊,怎么修改嘞
#include <iostream>
#include <cstring>
using namespace std;
using std::string;
//void compareNum(char n[]);
int inse(char s1[] ,char s2[],int index);
int main()
{
int n1,n2;
int max=0;
cout<<"要输入几位基准数:";
cin>>n1;
cout<<"要输入几位插入数:";
cin>>n2;
char s1[n1];
char s2[n2];
cin.getline(s1,n1);
cin.getline(s2,n2);
for(int index=0;index<n1;index++){
max=inse(s1[n1],s2[n2],index);
}
cout<<max<<endl;
return 0;
}
int inse(char s1[] ,char s2[],int index)
{
int n1=strlen(s1),n2=strlen(s2);
for(int i=index;i<n1;i++){
s1[i+n2]=s1[i];
}
if(n2==1){
s1[index]=s2[0];
}else if(n2==2){
s1[index]=s2[0];
s1[index+1]=s2[1];
}
int newNum = *(int*)s1;A
int max=0;
if(newNum > max)
max = newNum;
return max;
}
1) 仔细写程序,不要慌里慌张。 用代码模块。
#include <iostream>
#include <cstring>
using namespace std;
using std::string;
//void compareNum(char n[]);
int inse(char s1[] ,char s2[],int index);
int main()
{
int n1,n2;
int max=0;
cout<<"要输入几位基准数:";
cin>>n1;
cout<<"要输入几位插入数:";
cin>>n2;
char s1[n1];
char s2[n2];
cin.getline(s1,n1);
cin.getline(s2,n2);
for(int index=0;index<n1;index++){
max=inse(s1[n1],s2[n2],index);
}
cout<<max<<endl;
return 0;
}
int inse(char s1[] ,char s2[],int index)
{
int n1=strlen(s1),n2=strlen(s2);
for(int i=index;i<n1;i++){
s1[i+n2]=s1[i];
}
if(n2==1){
s1[index]=s2[0];
}else if(n2==2){
s1[index]=s2[0];
s1[index+1]=s2[1];
}
int newNum = *(int*)s1;A
int max=0;
if(newNum > max)
max = newNum;
return max;
}
两个明显错误:
char s1[n1]; char s2[n2]; //不能这样动态声明数组, 要用 malloc()
s1; A //这个 A 是多余的。
你把这些问题解决了再来提问。