C++语言简单问题

#include<iostream>usingnamespacestd;voidmain(){chara;intb,n;for(b=1;b!=35;){cout<<"输入... #include<iostream>
using namespace std;
void main()
{
char a;
int b,n;
for(b=1;b!=35;)
{
cout<<"输入明文的字数N及各个字母\n";
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a;
if(a>=97&&a<=118||a>=65&&a<=86)
a+=4;
else if(a<=122&&a>=119||a<=90&&a>=87)
a-=22;
cout<<a;

}
cout<<"input # to stop the programme or any key to continue"<<endl;
cin>>b;
}
}
想要做到输入一个单词,将每个字母都转换成它之后的第四个字母,字母表前后连接;
最好能编出首字母大写其余小写的效果
望达人帮助
展开
 我来答
sunnyfulin
2011-03-29 · TA获得超过465个赞
知道小有建树答主
回答量:244
采纳率:0%
帮助的人:186万
展开全部
以下代码部分符合你的要求,急着去上课,抱歉,没有满足首字母大写。
我只是改动了你的源码两个小地方:1,把 b 的类型改为 char;2,把你的第二个for循环输出语句后面加了 <<endl;
说明:endl 用于清除缓存,因为每次输出时,待输出的字符存于缓存,你的再次输入的字符将上一个字符覆盖了,所以你的代码运行时只会显示最后一个字符后面的第四个字母。
兄弟,祝你好运!!

#include<iostream>
using namespace std;
int main()
{
char a,b;
int n;
for(b=1;b!=35;)
{
cout<<"输入明文的字数N及各个字母\n";
cin>>n;
for (int i=1;i<=n;i++)
{
cin>>a;
if(a>=97&&a<=118||a>=65&&a<=86)
a+=4;
else if(a<=122&&a>=119||a<=90&&a>=87)
a-=22;
cout<<a<<endl;
}
cout<<"input # to stop the programme or any key to continue"<<endl;
cin>>b;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-04-01
展开全部
参数
第一个参数是本字符串中用于比较的子字符串的起始位置
第二个参数是其长度
第三个参数是待比较字符串
第四个参数是待比较字符串中用于比较的子字符串的起始位置
第五个参数是其长度

a = s1.compare(0,2,s2,0,2);
就是比较s1从0开始,长度为2的子字符串和s2从0开始,长度为2的子字符串
另外,团IDC网上有许多产品团购,便宜有口碑
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友801b91b
2011-03-29 · TA获得超过8071个赞
知道大有可为答主
回答量:1152
采纳率:100%
帮助的人:1660万
展开全部
你的代码基本上是没有什么问题的。
只要做小小改动
主要是把b的类型从int改到char
另外cin.clear();是用来清除输入缓存的。
不懂请Hi我:)

#include<iostream>
using namespace std;
main()
{
char a,b;
int n;
for(b=1;b!='#';)
{
cout<<"êäèëÃ÷ÎÄμÄ×ÖêyN¼°¸÷¸ö×Öĸ\n";
cin>>n;
cin.clear();
for (int i=1;i<=n;i++)
{
cin>>a;
cin.clear();
if(a>=97&&a<=118||a>=65&&a<=86)
a+=4;
else if(a<=122&&a>=119||a<=90&&a>=87)
a-=22;
cout<<a;

}
cout<<"\ninput # to stop the programme or any key to continue"<<endl;
cin.clear();
cin>>b;
cout<<b<<endl;
cin.clear();
}
getchar();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hong83210
2011-03-29 · TA获得超过481个赞
知道小有建树答主
回答量:287
采纳率:0%
帮助的人:309万
展开全部
看看这个,完全符合你的要求:
#include<iostream>
#include<string>
using namespace std;

void main()
{
string str;
printf("Input a line:");
cin>>str;

for(string::iterator iter = str.begin(); iter != str.end(); ++iter)
{
if( ((*iter >= 'a' ) && (*iter <= 'z')) ||((*iter >= 'A')&&(*iter <= 'Z')))
{
*iter += 5;

if(((*iter>'z')&&(*iter<='z'+5))|| ((*iter>'Z')&&(*iter<='Z'+5)))
{
*iter -= 26;
}
}

if (iter == str.begin())
{
if( (*iter >= 'a' ) && (*iter <= 'z'))
{
*iter -= 32;
}
}
}
cout<<str;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2011-03-29 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4429万
展开全部
//用C编的,一次转一个单词。
#include<stdio.h>
#include<string.h>
void main()
{
char s[81];
int i,k;
gets(s);
for(i=0;i<strlen(s);i++)
if(s[i]>='a'&&s[i]<='z')
{
k=s[i]+4-'a';
k=k%26;
s[i]='a'+k;
}
else if (s[i]>='A'&&s[i]<='Z')
{
k=s[i]+4-'A';
k=k%26;
s[i]='A'+k;
}
printf("%s\n",s);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式