以下问题在DEVC++中编译
希望输出根据字母排序最小的字符串
#include
#include
using namespace std;
int main()
{
char a[10]="English";
char b[10]="China";
char c[10]="USA";
char min1[10];
int i=0,s1=0,s2=0,s3=0,s;
while (a[i] != '\0' )
{
s1+=1;
i+=1;
}
i=0;
while (b[i] != '\0' )
{
s2+=1;
i+=1;
}
i=0;while (c[i] != '\0' )
{
s3+=1;
i+=1;
}
if ((strcmp(a,b))<1)
{
strcpy(min1,a);
s = s1;
}
else
{
strcpy(min1,b);
s = s2;
}
if ((strcmp(a,c))<1)
{
strcpy(min1,a);
s = s1;
}
else
{
strcpy(min1,c);
s = s3;
}
if ((strcmp(b,c))<1)
{
strcpy(min1,b);
s = s2;
}
else
{
strcpy(min1,c);
s = s3;
}
for (int i=0;ireturn 0;
}
若利用函数来编写这个程序(未讲计数写入)
#include
#include
using namespace std;
int main()
{
char min(const char a[],const char b[],const char c[]);
const char a[10]="English";
const char b[10]="China";
const char c[10]="USA";
char min1[10];
strcpy(min1[10],(min(a[10],b[10],c[10])));
for (int i=0;i<10;i++)
{
cout<return 0;
}
char min(const char a[],const char b[],const char c[])
{
int x[10];
if ((strcmp(a,b))<1) strcpy(min,a); else strcpy(min,b);
if ((strcmp(a,c))<1) strcpy(min,a); else strcpy(min,c);
if ((strcmp(b,c))<1) strcpy(min,b); else strcpy(min,c);
return x[10];
}
则会出现以下等一系列报错
C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp In function 'int main()':
11 27 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
6 7 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Note] initializing argument 1 of 'char min(const char*, const char*, const char*)'
11 33 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
6 7 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Note] initializing argument 2 of 'char min(const char*, const char*, const char*)'
11 39 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
6 7 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Note] initializing argument 3 of 'char min(const char*, const char*, const char*)'
11 16 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] invalid conversion from 'char' to 'char*' [-fpermissive]
2 0 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp In file included from C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp
51 18 C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\string.h [Note] initializing argument 1 of 'char* strcpy(char*, const char*)'
11 40 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] invalid conversion from 'char' to 'const char*' [-fpermissive]
2 0 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp In file included from C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp
51 18 C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include\string.h [Note] initializing argument 2 of 'char* strcpy(char*, const char*)'
C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp In function 'char min(const char*, const char*, const char*)':
21 35 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] cannot resolve overloaded function 'min' based on conversion to type 'char*'
21 55 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] cannot resolve overloaded function 'min' based on conversion to type 'char*'
22 35 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] cannot resolve overloaded function 'min' based on conversion to type 'char*'
22 55 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] cannot resolve overloaded function 'min' based on conversion to type 'char*'
23 35 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] cannot resolve overloaded function 'min' based on conversion to type 'char*'
23 55 C:\Users\Administrator\Desktop\C++\第5章\013-最小字母排序.cpp [Error] cannot resolve overloaded function 'min' based on conversion to type 'char*'
求解程序应该如何修改
参考如下:
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
char* min(const char a[],const char b[],const char c[]);
const char a[10]="English";
const char b[10]="China";
const char c[10]="USA";
char min1[10];
strcpy(min1,(min(a,b,c)));
for (int i=0; min1[i] != '\0';i++)
{
cout<<min1[i];
}
return 0;
}
char* min(const char a[],const char b[],const char c[])
{
char min[10];
if ((strcmp(a,b))<1) strcpy(min,a); else strcpy(min,b);
if ((strcmp(a,c))<1) strcpy(min,a); else strcpy(min,c);
if ((strcmp(b,c))<1) strcpy(min,b); else strcpy(min,c);
char * temp = min;
return temp;
}