求高手来看看并指出错误~~~~~~~~~~~~~~
#include <iostream>
using namespace std;
char str(char a[],char b[])
{
char*p=a;
char*q=b;
int i=0,j=0;
while(*(p+i)!= '\0 '&&*(q+j)!= '\0 ')
{
if(*(p+i) <=*(q+j))
{
cout < <*(p+i);
i++;
}
else
{
cout < <*(q+j);
j++;
}
}
if(*(p+i)== '\0 '&&*(q+j)!= '\0 ')
{
for(;j <10;j++)
{
cout < <*(q+j);
}
}
else if(*(p+i)!= '\0 '&&*(q+j)== '\0 ')
{
for(;i <10;i++)
{
cout < <*(p+i);
}
}
cout < <endl;
return 0;
}
int main()
{
char a[10],b[10];
cout < < "请输入第一个字符串: ";
for(int i=0;i <10;i++)
{
cin> > a[i];
}
cout < < "请输入第二个字符串: ";
for(int j=0;j <10;j++)
{
cin> > b[j];
}
str(a,b);
return 0;
}
[解决办法]
程序是没有问题,问题在于,cin流读字符你停不下来
[解决办法]
#include <iostream>using namespace std;char str(char *a,char *b){char*p=a;char*q=b;int i=0,j=0;while(*(p+i)!= '\0 '&&*(q+j)!= '\0 '&& i != 10 && j != 10){if(*(p+i) <=*(q+j)){cout <<*(p+i);i++;}else{cout <<*(q+j);j++;}}if(*(p+i)== '\0 '&&*(q+j)!= '\0 '){for(;j <10;j++){cout <<*(q+j);}}else if(*(p+i)!= '\0 '&&*(q+j)== '\0 '){for(;i <10;i++){cout <<*(p+i);}}cout <<endl;return 0;}int main(){char a[10],b[10];cout << "请输入第一个字符串: ";for(int i=0;i <10;i++){cin>> a[i];}a[9] = '\0';cin.clear();cout << "请输入第二个字符串: ";for(int j=0;j <10;j++){cin>> b[j];}cin.clear();b[9] = '\0';str(a,b);return 0;}
[解决办法]
#include <iostream> using namespace std; bool str(char c[],char a[],char b[]) { char*p=a; char*q=b; int i=0,j=0; int k = 0; while(*(p+i)!= '\0'&&*(q+j)!= '\0') { if(*(p+i) <=*(q+j)) { c[k++] = *(p+i); cout <<*(p+i); i++; } else { c[k++] = *(q+j); cout <<*(q+j); j++; } } while(*(p+i)!= '\0') { c[k++] = *(p+i); cout <<*(p+i); i++; } while( *(q+j)!= '\0') { c[k++] = *(q+j); cout << *(q+j); j++; } c[k]='\0'; cout << endl; return true; } int main() { char c[20]; char a[10],b[10]; cout << "请输入第一个字符串: "; cin >> a; cout << "请输入第二个字符串: "; cin >> b; str(c,a,b); cout << c << endl; return 0; }//关键在于你的'\0 '写错了