c++编程题 输入一个字符串,存入数组a,将其复制到数组b,然后将数组b中所有小写字母改为大写字母 5
B19、输入一个字符串,存入数组a,将其复制到数组b,然后将数组b中所有小写字母改为大写字母,再将a中字符串连接到b。比较并输出a,b中的字符串的大小,最后输出a,b中的...
B19、输入一个字符串,存入数组a,将其复制到数组b,然后将数组b中所有小写字母改为大写字母,再将a中字符串连接到b。比较并输出a,b中的字符串的大小,最后输出a,b中的字符串。
要求:(1)不能使用strcpy,strcat等字符串库函数。
(2)在子函数Converse()中进行大小写转换,在子函数Connect()中连接二个字符串,在子函数Compare()中比较二个字符串的大小。
例输入
abcdefg
输出
字符串a:abcdefg
字符串b:ABCDEFGabcdefg
比较结果:a > b
要用c++语言编写,网上搜索的不能用,希望有大神帮我解答 展开
要求:(1)不能使用strcpy,strcat等字符串库函数。
(2)在子函数Converse()中进行大小写转换,在子函数Connect()中连接二个字符串,在子函数Compare()中比较二个字符串的大小。
例输入
abcdefg
输出
字符串a:abcdefg
字符串b:ABCDEFGabcdefg
比较结果:a > b
要用c++语言编写,网上搜索的不能用,希望有大神帮我解答 展开
展开全部
如果是数组, 在a,b设置一个i和j, 指向当前元素, 初始指向第一个元素. 如果i和j所指都有元素,比较i,j所指元素大小, 把大的复制到c, 并且相应的i或j+1.(谁大加谁), c也+1右移一位,如果i或j没有元素,那么就忽略没有元素的那个表, 直接复制剩下下的到c .循环的停止条件是i和j都没有元素了. 如果是链表, 那么就修改相应的next域, 原理同上.不用创建或者删除新节点, 而是将结点顺序重新规划, 注意next域的修改顺序防止掉链, 你自己画个图研究一下即可. 最后达到的效果是a, b链表都消失, 形成一个c链表以降序排列
展开全部
#include <iostream>
using namespace std;
void Converse(char *x){
for(int i=0; x[i]!='\0'; i++)
if(x[i]>='a' && x[i]<='z')
x[i]-=32;
}
void Connect(char *d, char *s){
for(int i=0; d[i]!='\0'; i++);
for(int j=0; s[j]!='\0'; j++,i++)
d[i]=s[j];
d[i]='\0';
}
int Compare(char *s, char *t){
int f=0;
for(int i=0; f==0 && s[i]!='\0' && t[i]!='\0'; i++){
if(s[i]>t[i])
f=1;
else if(s[i]<t[i])
f=-1;
}
if(f==0 && s[i]!='\0')
f=1;
else if(f==0 && t[i]!='\0')
f=-1;
return f;
}
void main(){
char a[80],b[40];
int f;
cin >>a;
cin >>b;
Converse(b);
Connect(b,a);
f=Compare(a,b);
cout <<"字符串a:" <<a <<endl;
cout <<"字符串b:" <<b <<endl;
cout <<"比较结果:a " <<(f>0 ? '>' : f<0 ? '<' : '=') <<" b\n";
return;
}
using namespace std;
void Converse(char *x){
for(int i=0; x[i]!='\0'; i++)
if(x[i]>='a' && x[i]<='z')
x[i]-=32;
}
void Connect(char *d, char *s){
for(int i=0; d[i]!='\0'; i++);
for(int j=0; s[j]!='\0'; j++,i++)
d[i]=s[j];
d[i]='\0';
}
int Compare(char *s, char *t){
int f=0;
for(int i=0; f==0 && s[i]!='\0' && t[i]!='\0'; i++){
if(s[i]>t[i])
f=1;
else if(s[i]<t[i])
f=-1;
}
if(f==0 && s[i]!='\0')
f=1;
else if(f==0 && t[i]!='\0')
f=-1;
return f;
}
void main(){
char a[80],b[40];
int f;
cin >>a;
cin >>b;
Converse(b);
Connect(b,a);
f=Compare(a,b);
cout <<"字符串a:" <<a <<endl;
cout <<"字符串b:" <<b <<endl;
cout <<"比较结果:a " <<(f>0 ? '>' : f<0 ? '<' : '=') <<" b\n";
return;
}
追问
大神,是你变得程序是对的
不过有点问题,和我的提问不太符
是 只输入一组字母,然后在把它复制到b
不是输入两组数组
能再帮忙改一下吗?谢谢
追答
#include
using namespace std;
void Converse(char *x){
for(int i=0; x[i]!='\0'; i++)
if(x[i]>='a' && x[i]t[i])
f=1;
else if(s[i]>a;
for(int i=0; a[i]!='\0'; i++)
b[i]=a[i];
b[i]='\0';
Converse(b);
Connect(b,a);
f=Compare(a,b);
cout 0 ? '>' : f<0 ? '<' : '=') <<" b\n";
return;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询