C++程序设计,这个错在哪啊,有知道的达人告诉下下,并帮忙改一下吧,谢谢!我才接触C++半个月哦!谢谢

2025-01-04 16:00:14
推荐回答(5个)
回答1:

因为你的x大于w,根据你的条件:if(c>='w'&&c<='z') c=c-54;}这个意思是往前移动54位,小写转一圈后,是52位,然后再往后移动2位,刚好是大写的B所以,运行c=c-54,y也是一样,你输入大写的X,就会输出大写的I,不信试试。条件判断嘛,这个很简单的,努力点吧,想四个月之前我开始学的时候都没有你这么菜也,哈哈,不过现在我已经在写API了,正学习MFC中,O(∩_∩)O哈哈~,你要加油哦。。

回答2:

你这个程序的问题处在if语句上了,你说的s t u v有问题S T U V也有问题啊说不定还有其它字母也有问题.
你看你的程序结构如果键盘输入stuv或S T U V 程序会进入第一个if语句接着会进入第二个if语句做c = c+4;当第二个if语句结束后会进行第三个if语句的判断此时c还是会满足第三个if语句的条件的,进去会做里面的事,接下来要是第四个if语句的判断了.是不是与你期待的值改变了.
你可以在后三个if语句内加上continue就ok.

回答3:

这个问题很简单,可以这样做:
#include
using namespace std;
int main()
{char c;
int i;
while(cin>>c)
{i=0;
if(c>='a'&&c<='z')i=1;
if(c>='A'&&c<='Z')i=2;
if(i!=0)c+=4;
if(i==1&&c>'z')c-=26;
if(i==2&&c>'Z')c-=26;
cout<}
return 0;
}

回答4:

原来的程序:

#include //其实不光s,t,u,v 大写的S,T,U,V也会出问题
using namespace std;
int main()
{char c;
while((c=getchar())!='\n')
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{if(c>='A'&&c<='V'||c>='a'&&c<='v') c=c+4; //若果c=“s,t,u,v,S,T,U,V”,这里会变成c=“w,x,y,z,W,X,Y,Z”
if(c>='W'&&c<='Z') c=c+36; //然后这里c满足条件,会执行(而且本身也不对,应该-22)
if(c>='w'&&c<='z') c=c-54;} //同上
cout<}
cout<return 0;
}

改正后的代码:

#include
using namespace std;
int main()
{char c;
while((c=getchar())!='\n')
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{if(c>='A'&&c<='V'||c>='a'&&c<='v') c=c+4;
else if(c>='W'&&c<='Z') c=c-22; //这里原来的“if”改成“else if”
else if(c>='w'&&c<='z') c=c-22;} //同上
cout<}
cout<return 0;
}

回答5:

#include
using namespace std;
int main()
{char c;
while((c=getchar())!='\n')
{ if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{if(c>='A'&&c<='V'||c>='a'&&c<='v') c=c+4;
else if(c>='W'&&c<='Z') c=c-22; //注意对照ASCII表
else if(c>='w'&&c<='z') c=c-22;
}
cout<}
cout<return 0;
}
祝你成功